CPM-PDU-Descriptions { itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) tr (103562) cpm (1) version (1) } DEFINITIONS AUTOMATIC TAGS ::= BEGIN IMPORTS ItsPduHeader, Heading, ReferencePosition, Speed, DriveDirection, LongitudinalAcceleration, LateralAcceleration, VerticalAcceleration, StationType, VehicleLength, VehicleWidth, YawRate, SpeedConfidence FROM ITS-Container { itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (102894) cdd (2) version (2) } IntersectionReferenceID, LaneID, NodeOffsetPointXY, Offset-B10, Offset-B11, Offset-B12, Offset-B13, Offset-B14, Offset-B16, RoadSegmentReferenceID, VehicleHeight FROM DSRC { iso (1) standard (0) signalizedIntersection (19091) profilec(2) dsrc (2) version2 (2) } GenerationDeltaTime FROM CAM-PDU-Descriptions { itu-t(0) identified-organization(4) etsi(0) itsDomain(5) wg1(1) en(302637) cam(2) version(2)} ; -- The root data frame for collective perception message CPM ::= SEQUENCE { header ItsPduHeader, cpm CollectivePerceptionMessage } CollectivePerceptionMessage ::= SEQUENCE { generationDeltaTime GenerationDeltaTime, cpmParameters CpmParameters } CpmParameters ::= SEQUENCE { managementContainer CpmManagementContainer, stationDataContainer StationDataContainer OPTIONAL, sensorInformationContainer SensorInformationContainer OPTIONAL, perceivedObjectContainer PerceivedObjectContainer OPTIONAL, freeSpaceAddendumContainer FreeSpaceAddendumContainer OPTIONAL, numberOfPerceivedObjects NumberOfPerceivedObjects, ... } CpmManagementContainer ::= SEQUENCE { stationType StationType, perceivedObjectContainerSegmentInfo PerceivedObjectContainerSegmentInfo OPTIONAL, referencePosition ReferencePosition, ... } StationDataContainer ::= CHOICE { originatingVehicleContainer OriginatingVehicleContainer, originatingRSUContainer OriginatingRSUContainer, ... } OriginatingVehicleContainer ::= SEQUENCE { heading Heading, speed Speed, vehicleOrientationAngle WGS84Angle OPTIONAL, driveDirection DriveDirection DEFAULT forward, longitudinalAcceleration LongitudinalAcceleration OPTIONAL, lateralAcceleration LateralAcceleration OPTIONAL, verticalAcceleration VerticalAcceleration OPTIONAL, yawRate YawRate OPTIONAL, pitchAngle CartesianAngle OPTIONAL, rollAngle CartesianAngle OPTIONAL, vehicleLength VehicleLength OPTIONAL, vehicleWidth VehicleWidth OPTIONAL, vehicleHeight VehicleHeight OPTIONAL, trailerDataContainer TrailerDataContainer OPTIONAL, ... } OriginatingRSUContainer ::= CHOICE { intersectionReferenceId IntersectionReferenceID, roadSegmentReferenceId RoadSegmentReferenceID, ... } SensorInformationContainer ::= SEQUENCE SIZE(1..128, ...) OF SensorInformation SensorInformation ::= SEQUENCE { sensorID Identifier, type SensorType, detectionArea DetectionArea, freeSpaceConfidence FreeSpaceConfidence OPTIONAL, ... } PerceivedObjectContainer ::= SEQUENCE SIZE(1..128, ...) OF PerceivedObject PerceivedObject ::= SEQUENCE { objectID Identifier, sensorIDList SensorIdList OPTIONAL, timeOfMeasurement TimeOfMeasurement, objectAge ObjectAge OPTIONAL, objectConfidence ObjectConfidence DEFAULT 0, xDistance ObjectDistanceWithConfidence, yDistance ObjectDistanceWithConfidence, zDistance ObjectDistanceWithConfidence OPTIONAL, xSpeed SpeedExtended, ySpeed SpeedExtended, zSpeed SpeedExtended OPTIONAL, xAcceleration LongitudinalAcceleration OPTIONAL, yAcceleration LateralAcceleration OPTIONAL, zAcceleration VerticalAcceleration OPTIONAL, yawAngle CartesianAngle OPTIONAL, planarObjectDimension1 ObjectDimension OPTIONAL, planarObjectDimension2 ObjectDimension OPTIONAL, verticalObjectDimension ObjectDimension OPTIONAL, objectRefPoint ObjectRefPoint DEFAULT 0, dynamicStatus DynamicStatus OPTIONAL, classification ObjectClassDescription OPTIONAL, matchedPosition MatchedPosition OPTIONAL, ... } DetectionArea ::= CHOICE { vehicleSensor VehicleSensor, stationarySensorRadial AreaRadial, stationarySensorPolygon AreaPolygon, stationarySensorCircular AreaCircular, stationarySensorEllipse AreaEllipse, stationarySensorRectangle AreaRectangle, ... } VehicleSensor ::= SEQUENCE { refPointId RefPointId DEFAULT 0, xSensorOffset XSensorOffset, ySensorOffset YSensorOffset, zSensorOffset ZSensorOffset OPTIONAL, vehicleSensorPropertyList VehicleSensorPropertyList, ... } VehicleSensorPropertyList ::= SEQUENCE SIZE(1..10) OF VehicleSensorProperties VehicleSensorProperties ::= SEQUENCE { range Range, horizontalOpeningAngleStart CartesianAngleValue, horizontalOpeningAngleEnd CartesianAngleValue, verticalOpeningAngleStart CartesianAngleValue OPTIONAL, verticalOpeningAngleEnd CartesianAngleValue OPTIONAL, ... } AreaCircular ::= SEQUENCE { nodeCenterPoint OffsetPoint OPTIONAL, radius Radius } AreaEllipse ::= SEQUENCE { nodeCenterPoint OffsetPoint OPTIONAL, semiMinorRangeLength SemiRangeLength, semiMajorRangeLength SemiRangeLength, semiMajorRangeOrientation WGS84AngleValue, semiHeight SemiRangeLength OPTIONAL } AreaRectangle ::= SEQUENCE { nodeCenterPoint OffsetPoint OPTIONAL, semiMajorRangeLength SemiRangeLength, semiMinorRangeLength SemiRangeLength, semiMajorRangeOrientation WGS84AngleValue, semiHeight SemiRangeLength OPTIONAL } AreaPolygon ::= SEQUENCE { polyPointList PolyPointList } PolyPointList ::= SEQUENCE (SIZE(3..16, ...)) OF OffsetPoint AreaRadial ::= SEQUENCE { range Range, stationaryHorizontalOpeningAngleStart WGS84AngleValue, stationaryHorizontalOpeningAngleEnd WGS84AngleValue, verticalOpeningAngleStart CartesianAngleValue OPTIONAL, verticalOpeningAngleEnd CartesianAngleValue OPTIONAL, sensorPositionOffset OffsetPoint OPTIONAL, sensorHeight SensorHeight OPTIONAL, ... } FreeSpaceAddendumContainer ::= SEQUENCE SIZE(1..128, ...) OF FreeSpaceAddendum FreeSpaceAddendum ::= SEQUENCE { freeSpaceConfidence FreeSpaceConfidence, freeSpaceArea FreeSpaceArea, sensorIDList SensorIdList OPTIONAL, shadowingApplies ShadowingApplies DEFAULT TRUE, ... } FreeSpaceArea ::= CHOICE { freeSpacePolygon AreaPolygon, freeSpaceCircular AreaCircular, freeSpaceEllipse AreaEllipse, freeSpaceRectangle AreaRectangle, ... } ObjectDistanceWithConfidence ::= SEQUENCE { value DistanceValue, confidence DistanceConfidence } ObjectDimension ::= SEQUENCE { value ObjectDimensionValue, confidence ObjectDimensionConfidence } CartesianAngle ::= SEQUENCE { value CartesianAngleValue, confidence AngleConfidence } WGS84Angle ::= SEQUENCE { value WGS84AngleValue, confidence AngleConfidence } SpeedExtended ::= SEQUENCE { value SpeedValueExtended, confidence SpeedConfidence } SensorIdList ::= SEQUENCE SIZE(1..128, ...) OF Identifier TrailerDataContainer ::= SEQUENCE SIZE(1..2) OF TrailerData TrailerData ::= SEQUENCE { refPointId RefPointId, hitchPointOffset HitchPointOffset, frontOverhang FrontOverhang, rearOverhang RearOverhang, trailerWidth VehicleWidth OPTIONAL, hitchAngle CartesianAngle OPTIONAL, ... } LongitudinalLanePosition ::= SEQUENCE { longitudinalLanePositionValue LongitudinalLanePositionValue, longitudinalLanePositionConfidence LongitudinalLanePositionConfidence } MatchedPosition ::= SEQUENCE { laneID LaneID OPTIONAL, longitudinalLanePosition LongitudinalLanePosition OPTIONAL, ... } PerceivedObjectContainerSegmentInfo ::= SEQUENCE { totalMsgSegments SegmentCount, thisSegmentNum SegmentCount } ObjectClassDescription ::= SEQUENCE (SIZE(1..8)) OF ObjectClass ObjectClass ::= SEQUENCE { confidence ClassConfidence, class CHOICE { vehicle VehicleSubclass, person PersonSubclass, animal AnimalSubclass, other OtherSubclass } } VehicleSubclass ::= SEQUENCE { type VehicleSubclassType DEFAULT 0, confidence ClassConfidence DEFAULT 0 } PersonSubclass ::= SEQUENCE { type PersonSubclassType DEFAULT 0, confidence ClassConfidence DEFAULT 0 } AnimalSubclass ::= SEQUENCE { type AnimalSubclassType DEFAULT 0, confidence ClassConfidence DEFAULT 0 } OtherSubclass ::= SEQUENCE { type OtherSublassType DEFAULT 0, confidence ClassConfidence DEFAULT 0 } OffsetPoint ::= SEQUENCE { nodeOffsetPointxy NodeOffsetPointXY (WITH COMPONENTS {..., node-LatLon ABSENT, regional ABSENT}), nodeOffsetPointZ NodeOffsetPointZ OPTIONAL } NodeOffsetPointZ ::= CHOICE { node-Z1 Offset-B10, -- node is within 5.11m of last node node-Z2 Offset-B11, -- node is within 10.23m of last node node-Z3 Offset-B12, -- node is within 20.47m of last node node-Z4 Offset-B13, -- node is within 40.96m of last node node-Z5 Offset-B14, -- node is within 81.91m of last node node-Z6 Offset-B16 -- node is within 327.67m of last node } AnimalSubclassType ::= INTEGER {unknown(0)} (0..255) ClassConfidence ::= INTEGER {unknown(0), onePercent(1), oneHundredPercent(100), unavailable(101)} (0..101) WGS84AngleValue ::= INTEGER {wgs84North(0), wgs84East(900), wgs84South(1800), wgs84West(2700), unavailable(3601)} (0..3601) CartesianAngleValue ::= INTEGER {zeroPointOneDegree(1), oneDegree(10), unavailable(3601)} (0..3601) AngleConfidence ::= INTEGER {zeroPointOneDegree (1), oneDegree (10), outOfRange(126), unavailable(127)} (1..127) SemiRangeLength ::= INTEGER {zeroPointOneMeter(1), oneMeter(10)} (0..10000) DistanceValue ::= INTEGER {zeroPointZeroOneMeter(1), oneMeter(100)} (-132768..132767) DistanceConfidence ::= INTEGER {zeroPointZeroOneMeter(1), oneMeter(100), outOfRange(101), unavailable(102)} (0..102) DynamicStatus ::= INTEGER {dynamic(0), hasBeenDynamic(1), static(2)} (0..2) HitchPointOffset ::= INTEGER {zeroPointOneMeter(1), oneMeter(10)} (0..100) FrontOverhang ::= INTEGER {zeroPointOneMeter(1), oneMeter(10)} (0..50) FreeSpaceConfidence ::= INTEGER {unknown(0), onePercent(1), oneHundredPercent(100), unavailable(101)} (0..101) LongitudinalLanePositionValue ::= INTEGER {zeroPointOneMeter(1)} (0..32767) LongitudinalLanePositionConfidence ::= INTEGER {zeroPointZeroOneMeter(1), oneMeter(100), outOfRange(101), unavailable(102)} (0..102) ObjectAge ::= INTEGER {oneMiliSec(1)} (0..1500) ObjectConfidence ::= INTEGER {unknown(0), onePercent(1), oneHundredPercent(100), unavailable(101)} (0..101) ObjectDimensionValue ::= INTEGER {zeroPointOneMeter(1), oneMeter(10)} (0..1023) ObjectDimensionConfidence ::= INTEGER {zeroPointZeroOneMeter(1), oneMeter(100), outOfRange(101), unavailable(102)} (0..102) ObjectRefPoint ::= INTEGER {mid(0), bottomLeft(1), midLeft(2), topLeft(3), bottomMid(4), topMid(5), bottomRight(6), midRight(7), topRight(8)} (0..8) OtherSublassType ::= INTEGER {unknown(0), roadSideUnit(1)} (0..255) PersonSubclassType ::= INTEGER {unknown(0), pedestrian(1), personInWheelchair(2), cyclist(3), personWithStroller(4), personOnSkates(5), personGroup(6)} (0..255) Radius ::= INTEGER {zeroPointOneMeter(1), oneMeter(10)} (0..10000) Range ::= INTEGER {zeroPointOneMeter(1), oneMeter(10)} (0..10000) RearOverhang ::= INTEGER {zeroPointOneMeter(1), oneMeter(10)} (0..150) RefPointId ::= INTEGER (0..255) SensorHeight ::= INTEGER {zeroPointZeroOneMeter(1)} (-5000..5000) ShadowingApplies ::= BOOLEAN Identifier ::= INTEGER (0..255) NumberOfPerceivedObjects ::= INTEGER (0..255) SensorType ::= INTEGER {undefined(0), radar(1), lidar(2), monovideo(3), stereovision(4), nightvision(5), ultrasonic(6), pmd(7), fusion(8), inductionloop(9), sphericalCamera(10), itssaggregation(11)} (0..15) SegmentCount ::= INTEGER(1..127) SpeedValueExtended ::= INTEGER {standstill(0), oneCentimeterPerSec(1),unavailable(16383)} (-16383..16383) TimeOfMeasurement ::= INTEGER {oneMilliSecond(1)} (-1500..1500) VehicleSubclassType ::= INTEGER {unknown(0), moped(1), motorcycle(2), passengerCar(3), bus(4), lightTruck(5), heavyTruck(6), trailer(7), specialVehicles(8), tram(9), emergencyVehicle(10), agricultural(11)} (0..255) XSensorOffset ::= INTEGER {negativeZeroPointZeroOneMeter(-1), negativeOneMeter(-100)} (-5000..0) YSensorOffset ::= INTEGER {zeroPointZeroOneMeter(1), oneMeter(100)} (-1000..1000) ZSensorOffset ::= INTEGER {zeroPointZeroOneMeter(1), oneMeter(100)} (0..1000) END