From 2c8860fbf807c32b4adad16a0a0ecb540321f28d Mon Sep 17 00:00:00 2001 From: William Whyte Date: Tue, 8 Sep 2020 09:43:29 -0400 Subject: [PATCH 1/9] Initial checkin to WI-001991 branch --- VAM-Temp-Imports.asn | 116 +++++++++++++++++++++++++++++ motorcyclist-special-container.asn | 39 ++++++++++ 2 files changed, 155 insertions(+) create mode 100644 VAM-Temp-Imports.asn create mode 100644 motorcyclist-special-container.asn diff --git a/VAM-Temp-Imports.asn b/VAM-Temp-Imports.asn new file mode 100644 index 0000000..1f8525b --- /dev/null +++ b/VAM-Temp-Imports.asn @@ -0,0 +1,116 @@ +-- This module defines types that are intended to be updated within +-- or added to the Common Data Dictionary. Defining the types in this +-- module allows them to be used by the VAM before the CDD has been +-- updated. Once the CDD has been updated, this module will also be +-- updated to import the new types directly from the CDD, and the +-- version number of this module will be incremented. + +VAM-Temp-Imports {itu-t(0) identified-organization(4) etsi(0) itsDomain(5) + wg1(1) ts(103300) part-3(3) temp-imports(255) version(1)} + +DEFINITIONS AUTOMATIC TAGS ::= + +BEGIN + +IMPORTS + +ReferencePosition, SpeedConfidence, VehicleWidth +FROM ITS-Container + {itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) + ts (102894) cdd (2) version (2)} + +NodeOffsetPointXY, Offset-B10, Offset-B11, Offset-B12, Offset-B13, +Offset-B14, Offset-B16 +FROM DSRC + {iso (1) standard (0) signalizedIntersection (19091) profilec(2) dsrc (2) + version2 (2)} + +; + +-- identical to BasicContainer as used in CAM +BasicContainer ::= SEQUENCE { + stationType StationType, -- from VAM-Temp-Imports + referencePosition ReferencePosition, -- from ITS-Container + ... +} + + +AreaCircular ::= SEQUENCE { + nodeCenterPoint OffsetPoint OPTIONAL, + radius Radius +} + +AreaPolygon ::= SEQUENCE { + polyPointList PolyPointList +} + +AreaRectangle ::= SEQUENCE { + nodeCenterPoint OffsetPoint OPTIONAL, + semiMajorRangeLength SemiRangeLength, + semiMinorRangeLength SemiRangeLength, + semiMajorRangeOrientation WGS84AngleValue, + semiHeight SemiRangeLength OPTIONAL +} + +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 +} + + +Radius ::= INTEGER { + zeroPointOneMeter (1), + oneMeter (10) +} (0..10000) + + +PolyPointList ::= SEQUENCE (SIZE(3..16, ...)) OF OffsetPoint + +SemiRangeLength ::= INTEGER { + zeroPointOneMeter (1), + oneMeter (10) +} (0..10000) + +WGS84Angle ::= SEQUENCE { + value WGS84AngleValue, + confidence AngleConfidence +} + +WGS84AngleValue ::= INTEGER { + wgs84North (0), + wgs84East (900), + wgs84South (1800), + wgs84West (2700), + unavailable (3601) +} (0..3601) + +AngleConfidence ::= INTEGER { + zeroPointOneDegree (1), -- if the heading accuracy is equal to or less than 0,1 degree + oneDegree (10), + outOfRange (126), -- if the heading accuracy is out of range, i.e. greater than + -- 12,5 degrees. A corresponding reported angle value shall be + -- considered invalid and cannot be trusted. + unavailable (127) -- if the heading accuracy information is not available +} (1..127) + + + +StationType ::= INTEGER { + unknown(0), pedestrian(1), cyclist(2), moped(3), motorcycle(4), + passengerCar(5), bus(6), lightTruck(7), heavyTruck(8), trailer(9), + specialVehicles(10), tram(11), lightVruVehicle(12), animals(13), + roadSideUnit(15) +} +(0..255) + +END diff --git a/motorcyclist-special-container.asn b/motorcyclist-special-container.asn new file mode 100644 index 0000000..783835b --- /dev/null +++ b/motorcyclist-special-container.asn @@ -0,0 +1,39 @@ +VRU-Motorcyclist-Special-Container {itu-t(0) identified-organization(4) etsi(0) itsDomain(5) + wg1(1) ts(103300) motorcyclist-special-container(2) version(1)} + + +DEFINITIONS AUTOMATIC TAGS ::= + +BEGIN + +IMPORTS + PathPrediction, + SequenceOfVruSafeDistanceIndication, + StabilityChangeIndication, + VruRollAngle, + VruSizeClass, + VruSubProfileMotorcyclist +FROM VAM-PDU-Descriptions + {itu-t(0) identified-organization(4) etsi(0) itsDomain(5) + wg1(1) ts(103300) part-3(3) vam(1) version(1)} + + PathHistory +FROM ITS-Container + {itu-t(0) identified-organization(4) etsi(0) + itsDomain(5) wg1(1) ts(102894) cdd(2) version(2)} +; + +MotorcylistSpecialContainer ::= SEQUENCE { + vruSubProfileMotorcyclist VruSubProfileMotorcyclist, + vruSizeClass VruSizeClass, + rollAngle VruRollAngle OPTIONAL, + vruSafeDistance SequenceOfVruSafeDistanceIndication OPTIONAL, + pathHistory PathHistory OPTIONAL, + pathPrediction PathPrediction OPTIONAL, + stabilityChangeIndication StabilityChangeIndication OPTIONAL, + ... +} + + + +END -- GitLab From d05b13c64c942b0d3b1132dd1be0bb3ef915d6ce Mon Sep 17 00:00:00 2001 From: William Whyte Date: Tue, 8 Sep 2020 12:10:18 -0400 Subject: [PATCH 2/9] Consistent with 2020-09-08 version of 103 300-3 --- VAM-PDU-Descriptions.asn | 325 +++++++++++++++++++++++++++++++++------ VAM-Temp-Imports.asn | 14 +- 2 files changed, 285 insertions(+), 54 deletions(-) diff --git a/VAM-PDU-Descriptions.asn b/VAM-PDU-Descriptions.asn index 614a49e..555f29f 100755 --- a/VAM-PDU-Descriptions.asn +++ b/VAM-PDU-Descriptions.asn @@ -1,102 +1,325 @@ +-- ETSI TS 103 300-3 V0.4.0 (2020-07) + VAM-PDU-Descriptions {itu-t(0) identified-organization(4) etsi(0) itsDomain(5) - wg1(1) ts(103300) vam(3) version(1)} + wg1(1) ts(103300) part-3 (3) vam(1) version(1)} DEFINITIONS AUTOMATIC TAGS ::= BEGIN IMPORTS - ItsPduHeader, ReferencePosition, AccelerationControl, - Heading, HeadingValue, Speed, StationID, VehicleLength, VehicleWidth, - PathHistory, ProtectedCommunicationZone, PtActivation, - Latitude, Longitude, ProtectedCommunicationZonesRSU - FROM ITS-Container {itu-t(0) identified-organization(4) etsi(0) - itsDomain(5) wg1(1) ts(102894) cdd(2) version(2)} + Curvature, CurvatureCalculationMode, ExteriorLights, Heading, + LanePosition, LateralAcceleration, + LongitudinalAcceleration, PathHistory, ReferencePosition, Speed, + StationID, SteeringWheelAngle, VerticalAcceleration, YawRate + FROM ITS-Container {itu-t(0) identified-organization(4) etsi(0) + itsDomain(5) wg1(1) ts(102894) cdd(2) version(2)} GenerationDeltaTime FROM CAM-PDU-Descriptions {itu-t(0) identified-organization(4) etsi(0) itsDomain(5) wg1(1) en(302637) cam(2) version(2)} + + -- Note: sVAM-Temp-Imports defines types that are intended to be updated within + -- or added to the Common Data Dictionary. Once the CDD has been updated, + -- VAM-Temp-Imports will also be updated to import the new types directly + -- from the CDD. The use of WITH SUCCESSORS ensures that the import + -- statement below will not have to change. + + AreaCircular, AreaPolygon, AreaRectangle, BasicContainer, ItsPduHeader + FROM VAM-Temp-Imports {itu-t(0) identified-organization(4) etsi(0) + itsDomain(5) wg1(1) ts(103300) part-3(3) temp-imports(255) version(1)} + + IntersectionReferenceID, LaneID + FROM DSRC {iso (1) standard (0) signalizedIntersection (19091) profilec(2) + dsrc (2) version (2)} + ; + VAM ::= SEQUENCE { header ItsPduHeaderVam, vam VruAwareness } - -- contains StationId - -- StationId should change when certificate changes, or when VRU - -- enters or leaves a cluster (as leader or otherwise) ItsPduHeaderVam ::= ItsPduHeader(WITH COMPONENTS { ..., messageID(vam) }) - + VruAwareness ::= SEQUENCE { - generationDeltaTime GenerationDeltaTime, - vamParameters VamParameters, - vamExtensions SEQUENCE (SIZE(0..MAX)) OF VamExtension + generationDeltaTime GenerationDeltaTime, -- from CAM-PDU-Descriptions + vamParameters VamParameters } VamParameters ::= SEQUENCE { - activeProfile VruProfileId, - physicalProperties VruPhysicalProperties, - dyanmicProperties VruDynamicProperties, + basicContainer BasicContainer, -- from VAM-Temp-Imports + vruHighFrequencyContainer VruHighFrequencyContainer OPTIONAL, + vruLowFrequencyContainer VruLowFrequencyContainer OPTIONAL, + vruClusterInformationContainer VruClusterInformationContainer OPTIONAL, + vruClusterOperationContainer VruClusterOperationContainer OPTIONAL, + vruMotionPredictionContainer VruMotionPredictionContainer OPTIONAL, ... } + - VruProfileId ::= ENUMERATED { - pedestrian(1), lowSpeedTwoWheel(2), fullSpeedTwoWheel(3), animal(4), ... + VruProfile ::= ENUMERATED { + unavailable(0), pedestrian(1), cyclist(2), motorcyclist(3), animal(4), + max(15) + } + + VruHighFrequencyContainer ::= SEQUENCE { + heading Heading, -- from ITS-Container + speed Speed, -- from ITS-Container + longitudinalAcceleration LongitudinalAcceleration, -- from ITS-Container + curvature Curvature OPTIONAL, -- from ITS-Container + curvatureCalculationMode CurvatureCalculationMode OPTIONAL, -- from ITS-Container + yawRate YawRate OPTIONAL, -- from ITS-Container + lateralAcceleration LateralAcceleration OPTIONAL, -- from ITS-Container + verticalAcceleration VerticalAcceleration OPTIONAL, -- from ITS-Container + vruLanePosition VruLanePosition OPTIONAL, + environment VruEnvironment OPTIONAL, + movementControl VruMovementControl OPTIONAL, + orientation VruOrientation OPTIONAL, + rollAngle VruRollAngle OPTIONAL, + deviceUsage VruDeviceUsage OPTIONAL, + ... } - VruPhysicalProperties ::= CHOICE { - singleVruPhysInfo SingleVruPhysicalInfo, - clusterPhysInfo VruClusterPhysicalInfo, + VruLanePosition ::= CHOICE { + offRoadLanePosition OffRoadLanePosition, + vehicularLanePosition LanePosition, -- from ITS-Container + trafficIslandPosition TrafficIslandPosition, + mapPosition MapPosition, ... } - SingleVruPhysicalInfo ::= SEQUENCE { - referencePoint ReferencePosition, - orientation Heading, - clusterJoinInfo ClusterJoinInfo OPTIONAL, - clusterExitInfo StationID OPTIONAL, + OffRoadLanePosition ::= ENUMERATED { + unavailable(0), sidewalk(1), parkingLane(2), bikeLane(3), + max(15) + } + + TrafficIslandPosition ::= SEQUENCE { + oneSide NonIslandLanePosition, + otherSide NonIslandLanePosition + } + + NonIslandLanePosition ::= CHOICE { + offRoadLanePosition OffRoadLanePosition, + vehicularLanePosition LanePosition, -- from ITS-Container + mapPosition MapPosition, ... } + MapPosition ::= SEQUENCE { + intersectionId IntersectionReferenceID, + lane LaneID + } + + VruEnvironment ::= ENUMERATED { + unavailable (0), intersectionCrossing(1), zebraCrossing(2), sidewalk (3), + onVehicleRoad(4), protectedGeographicArea(5), max (255) + -- values 6-254 reserved for later use + } + + VruMovementControl ::= ENUMERATED { + unavailable (0), braking(1), hardBraking(2), stopPedaling (3), + noReaction(4), max (255) + -- values 5-254 reserved for later use + } + + VruOrientation ::= Heading -- from ITS-Container + + VruRollAngle ::= SteeringWheelAngle -- from ITS-Container + + VruDeviceUsage ::= ENUMERATED { + unavailable(0), other(1), idle(2), listeningToAudio(3), typing(4), + calling(5), playingGames(6), reading(7), viewing(8), max(255) + -- values 9-254 reserved for later use + } + + VruLowFrequencyContainer ::= SEQUENCE { + profileAndSubprofile VruProfileAndSubprofile OPTIONAL, + exteriorLights VruExteriorLights OPTIONAL, + sizeClass VruSizeClass OPTIONAL, + ... + } + + VruProfileAndSubprofile ::= CHOICE { + pedestrian VruSubProfilePedestrian, + bicyclist VruSubProfileBicyclist, + motorcylist VruSubProfileMotorcyclist, + animal VruSubProfileAnimal, + ... + } + + VruSubProfilePedestrian ::= ENUMERATED { + unavailable(0), ordinary-pedestrian(1), + road-worker(2), first-responder(3), + max(15) + } + + VruSubProfileBicyclist ::= ENUMERATED { + unavailable(0), bicyclist(1), wheelchair-user(2), horse-and-rider(3), + rollerskater(4), e-scooter(5), personal-transporter(6), + pedelec(7), speed-pedelec(8), + max(15) + } + + VruSubProfileMotorcyclist ::= ENUMERATED { + unavailable(0), moped(1), motorcycle(2), motorcycle-and-sidecar-right(3), + motorcycle-and-sidecar-left(4), max(15) + } + + VruSubProfileAnimal ::= ENUMERATED { + unavailable(0), max(15) + } + + VruExteriorLights ::= SEQUENCE { + vruSpecific VruSpecificExteriorLights, -- defined below + generic ExteriorLights + -- should be extensible? + } + + VruSpecificExteriorLights ::= BIT STRING { + unavailable (0), + backFlashLight (1), + helmetLight (2), + armLight (3), + legLight (4), + wheelLight (5) + } (SIZE(8)) + + VruSizeClass ::= ENUMERATED { + unavailable (0), low(1), medium(2), high (3), max(15) + -- values 4-14 reserved for later use + } + + VruClusterInformationContainer ::= SEQUENCE { + clusterId ClusterId, + clusterBoundingBoxShape ClusterBoundingBoxShape, + clusterCardinalitySize INTEGER(0..255), -- 0 means unknown + clusterProfiles ClusterProfiles, + ... + } + + ClusterId ::= INTEGER(0..255) + + ClusterBoundingBoxShape::= CHOICE { + clusterRectangle AreaRectangle, -- from VAM-Temp-Imports + clusterCircle AreaCircular, -- from VAM-Temp-Imports + clusterPolygon AreaPolygon, -- from VAM-Temp-Imports + ... + } + + ClusterProfiles ::= BIT STRING { + pedestrian(0), + bicyclist(1), + motorcyclist(2), + animal(3) + } (SIZE(4)) + + -- this is OPTIONAL elements rather than a CHOICE because a + -- VRU ITS-S could be leaving one cluster and joining another. + VruClusterOperationContainer ::= SEQUENCE { + clusterJoinInfo ClusterJoinInfo OPTIONAL, + clusterLeaveInfo ClusterLeaveInfo OPTIONAL, + clusterBreakupInfo ClusterBreakupInfo OPTIONAL, + clusterIdChangeInfo VruClusterOpTimestamp OPTIONAL, + ... + } + + VruClusterOpTimestamp ::= INTEGER (1..255) + ClusterJoinInfo ::= SEQUENCE { - clusterId StationID, - countdown INTEGER(0..7), + clusterId ClusterId, + joinTime VruClusterOpTimestamp, + ... + } + + ClusterLeaveInfo ::= SEQUENCE { + clusterId ClusterId, + clusterLeaveReason ClusterLeaveReason, ... } - VruClusterPhysicalInfo ::= SEQUENCE { - referencePoint ReferencePosition, -- middle of front edge of cluster - heading HeadingValue, -- direction of perp. line through referencePoint - width VruClusterSideLength, -- width (with referencePoint in the - -- middle) in units of 10 cm - length VruClusterSideLength, -- length (from referencePoint to rear of - -- cluster) in units of 10 cm - number INTEGER(0..255), -- 0 means unknown + ClusterBreakupInfo ::= SEQUENCE { + clusterBreakupReason ClusterBreakupReason, + breakupTime VruClusterOpTimestamp, ... } - VruClusterSideLength ::= INTEGER {tenCentimeters(1), outOfRange(61), unavailable(62)} (1..62) + ClusterLeaveReason ::= ENUMERATED { + notProvided (0), + clusterLeaderLost (1), + clusterDisbandedByLeader (2), + outOfClusterBoundingBox (3), + outOfClusterSpeedRange (4), + joiningAnotherCluster (5), + max(15) + } - -- none of these fields are OPTIONAL as each of the types below has an "unknown" value, which - -- should be used if the value isn't provided. - VruDynamicProperties ::= SEQUENCE { - heading Heading, - speed Speed, - longitudinalAcceleration LongitudinalAcceleration, - laterialAcceleration LateralAcceleration, - verticalAcceleration VerticalAcceleration, - yawRate YawRate, - pastLocations PathHistory, - predictedLocations PathHistory, + ClusterBreakupReason ::= ENUMERATED { + notProvided (0), + clusteringPurposeCompleted (1), + leaderMovedOutOfClusterBoundingBox (2), + joiningAnotherCluster (3), + max(15) + } + + VruMotionPredictionContainer ::= SEQUENCE { + pathHistory PathHistory OPTIONAL, + pathPrediction PathPrediction OPTIONAL, + safeDistance SequenceOfVruSafeDistanceIndication OPTIONAL, + trajectoryChangeIndication SequenceOfTrajectoryInterceptionIndication OPTIONAL, + accelerationChangeIndication AccelerationChangeIndication OPTIONAL, + headingChangeIndication HeadingChangeIndication OPTIONAL, + stabilityChangeIndication StabilityChangeIndication OPTIONAL, ... } - VamExtension ::= CHOICE { - dummy NULL, + PathPrediction ::= PathHistory + + SequenceOfVruSafeDistanceIndication ::= + SEQUENCE(SIZE(0..8)) OF VruSafeDistanceIndication + + VruSafeDistanceIndication ::= SEQUENCE { + subjectStation StationID OPTIONAL, + stationSafeDistanceIndication BOOLEAN, + timeToCollision ActionDeltaTime OPTIONAL, ... } + SequenceOfTrajectoryInterceptionIndication ::= + SEQUENCE (SIZE(1..8)) OF TrajectoryInterceptionIndication + + TrajectoryInterceptionIndication ::= SEQUENCE { + subjectStation StationID OPTIONAL, + trajectoryInterceptionIndication BOOLEAN + } + + HeadingChangeIndication ::= SEQUENCE { + direction LeftOrRight, + actionDeltaTime ActionDeltaTime + } + + LeftOrRight ::= ENUMERATED { left, right } + + ActionDeltaTime ::= INTEGER {zero(0), hundredMs(1), twoHundredMs(2), + unavailable (127) } (0..127) + + AccelerationChangeIndication ::= SEQUENCE { + accelOrDecel AccelOrDecel, + actionDeltaTime ActionDeltaTime + } + + AccelOrDecel ::= ENUMERATED { accelerate, decelerate } + + StabilityChangeIndication ::= SEQUENCE { + lossProbability StabilityLossProbability, + actionDeltaTime ActionDeltaTime + } + + StabilityLossProbability ::= INTEGER { zero(0), twoPercent (1), + fourPercent(2), unavailable (63) } (0..63) + + END diff --git a/VAM-Temp-Imports.asn b/VAM-Temp-Imports.asn index 1f8525b..813ae04 100644 --- a/VAM-Temp-Imports.asn +++ b/VAM-Temp-Imports.asn @@ -1,4 +1,4 @@ --- This module defines types that are intended to be updated within +-- Note: This module defines types that are intended to be updated within -- or added to the Common Data Dictionary. Defining the types in this -- module allows them to be used by the VAM before the CDD has been -- updated. Once the CDD has been updated, this module will also be @@ -14,7 +14,7 @@ BEGIN IMPORTS -ReferencePosition, SpeedConfidence, VehicleWidth +ReferencePosition, SpeedConfidence, StationID, VehicleWidth FROM ITS-Container {itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (102894) cdd (2) version (2)} @@ -23,7 +23,7 @@ NodeOffsetPointXY, Offset-B10, Offset-B11, Offset-B12, Offset-B13, Offset-B14, Offset-B16 FROM DSRC {iso (1) standard (0) signalizedIntersection (19091) profilec(2) dsrc (2) - version2 (2)} + version (2)} ; @@ -34,6 +34,14 @@ BasicContainer ::= SEQUENCE { ... } +ItsPduHeader ::= SEQUENCE { + protocolVersion INTEGER (0..255), + messageID INTEGER{ denm(1), cam(2), poi(3), spatem(4), mapem(5), ivim(6), ev-rsr(7), tistpgtransaction(8), srem(9), ssem(10), evcsn(11), saem(12), rtcmem(13), vam(14) } (0..255), -- Mantis #7209, #7005 + stationID StationID +} + + + AreaCircular ::= SEQUENCE { nodeCenterPoint OffsetPoint OPTIONAL, -- GitLab From 3aea7d6f60ce364c754eaa20931e9f183f1e3f96 Mon Sep 17 00:00:00 2001 From: William Whyte Date: Wed, 9 Sep 2020 09:11:17 -0400 Subject: [PATCH 3/9] Updated README and comments in motorcyclist-special-container per input from ETSI --- README.md | 4 ++++ motorcyclist-special-container.asn | 12 ++++++------ 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index a2abc00..61d79c1 100644 --- a/README.md +++ b/README.md @@ -13,3 +13,7 @@ To compile the VAM, the following dependencies are required: - **[CAM-PDU-Descriptions](https://forge.etsi.org/rep/ITS/asn1/cam_ts302637_2)** module from [ETSI EN 302 637-2 v1.4.1](https://www.etsi.org/deliver/etsi_en/302600_302699/30263702/01.04.01_60/en_30263702v010401p.pdf) - Cooperative Awareness Service - **[ITS-Container](https://forge.etsi.org/rep/ITS/asn1/cdd_ts102894_2)** module from [ETSI TS 102 894-2 v1.3.1](https://www.etsi.org/deliver/etsi_ts/102800_102899/10289402/01.03.01_60/ts_10289402v010301p.pdf) - Common Data Dictionary +- **[DSRC, AddGrpC](https://standards.iso.org/iso/ts/19091/)** modules from [ISO TS 19091](https://www.iso.org/standard/69897.html) - for intersection and lane identifiers +- **[ElectronicRegistrationIdentificationVehicleDataModule](https://standards.iso.org/iso/24534/-4/)** module from [ISO TS 24534-3](https://www.iso.org/standard/59306.html) + + diff --git a/motorcyclist-special-container.asn b/motorcyclist-special-container.asn index 783835b..d4af37a 100644 --- a/motorcyclist-special-container.asn +++ b/motorcyclist-special-container.asn @@ -1,3 +1,6 @@ +-- This module defines a special container for motorcycles, to be integrated into the +-- Cooperative Awareness Message (CAM) defined in EN 302 637-2 + VRU-Motorcyclist-Special-Container {itu-t(0) identified-organization(4) etsi(0) itsDomain(5) wg1(1) ts(103300) motorcyclist-special-container(2) version(1)} @@ -7,12 +10,9 @@ DEFINITIONS AUTOMATIC TAGS ::= BEGIN IMPORTS - PathPrediction, - SequenceOfVruSafeDistanceIndication, - StabilityChangeIndication, - VruRollAngle, - VruSizeClass, - VruSubProfileMotorcyclist + PathPrediction, SequenceOfVruSafeDistanceIndication, + StabilityChangeIndication, VruRollAngle, + VruSizeClass, VruSubProfileMotorcyclist FROM VAM-PDU-Descriptions {itu-t(0) identified-organization(4) etsi(0) itsDomain(5) wg1(1) ts(103300) part-3(3) vam(1) version(1)} -- GitLab From 86deabe53df268f3e9c2f7e8aa7a92ab7b811e91 Mon Sep 17 00:00:00 2001 From: William Whyte Date: Wed, 9 Sep 2020 09:30:05 -0400 Subject: [PATCH 4/9] Added WITH SUCCESSORS to all imports from VAM-Temp-Imports --- VAM-PDU-Descriptions.asn | 1 + 1 file changed, 1 insertion(+) diff --git a/VAM-PDU-Descriptions.asn b/VAM-PDU-Descriptions.asn index 555f29f..3baa486 100755 --- a/VAM-PDU-Descriptions.asn +++ b/VAM-PDU-Descriptions.asn @@ -27,6 +27,7 @@ BEGIN AreaCircular, AreaPolygon, AreaRectangle, BasicContainer, ItsPduHeader FROM VAM-Temp-Imports {itu-t(0) identified-organization(4) etsi(0) itsDomain(5) wg1(1) ts(103300) part-3(3) temp-imports(255) version(1)} + WITH SUCCESSORS IntersectionReferenceID, LaneID FROM DSRC {iso (1) standard (0) signalizedIntersection (19091) profilec(2) -- GitLab From 067d50d0d223b71bb75c706d69ab1731b93741ef Mon Sep 17 00:00:00 2001 From: William Whyte Date: Tue, 15 Sep 2020 00:18:18 -0400 Subject: [PATCH 5/9] Updated per Jasja and Bosch comments --- VAM-PDU-Descriptions.asn | 38 +++++++++++++++++------------- VAM-Temp-Imports.asn | 20 ++-------------- motorcyclist-special-container.asn | 4 ++-- 3 files changed, 26 insertions(+), 36 deletions(-) diff --git a/VAM-PDU-Descriptions.asn b/VAM-PDU-Descriptions.asn index 3baa486..04387b0 100755 --- a/VAM-PDU-Descriptions.asn +++ b/VAM-PDU-Descriptions.asn @@ -1,7 +1,7 @@ -- ETSI TS 103 300-3 V0.4.0 (2020-07) VAM-PDU-Descriptions {itu-t(0) identified-organization(4) etsi(0) itsDomain(5) - wg1(1) ts(103300) part-3 (3) vam(1) version(1)} + wg1(1) ts(103300) vam(1) version1(1)} DEFINITIONS AUTOMATIC TAGS ::= BEGIN @@ -26,7 +26,7 @@ BEGIN AreaCircular, AreaPolygon, AreaRectangle, BasicContainer, ItsPduHeader FROM VAM-Temp-Imports {itu-t(0) identified-organization(4) etsi(0) - itsDomain(5) wg1(1) ts(103300) part-3(3) temp-imports(255) version(1)} + itsDomain(5) wg1(1) ts(103300) temp-imports(255) version1(1)} WITH SUCCESSORS IntersectionReferenceID, LaneID @@ -100,7 +100,8 @@ BEGIN TrafficIslandPosition ::= SEQUENCE { oneSide NonIslandLanePosition, - otherSide NonIslandLanePosition + otherSide NonIslandLanePosition, + ... } NonIslandLanePosition ::= CHOICE { @@ -123,8 +124,9 @@ BEGIN VruMovementControl ::= ENUMERATED { unavailable (0), braking(1), hardBraking(2), stopPedaling (3), - noReaction(4), max (255) - -- values 5-254 reserved for later use + brakingAndStopPedaling(4), hardBrakingAndStopPedaling (5), + noReaction(6), max (255) + -- values 7-254 reserved for later use } VruOrientation ::= Heading -- from ITS-Container @@ -267,13 +269,13 @@ BEGIN } VruMotionPredictionContainer ::= SEQUENCE { - pathHistory PathHistory OPTIONAL, - pathPrediction PathPrediction OPTIONAL, - safeDistance SequenceOfVruSafeDistanceIndication OPTIONAL, - trajectoryChangeIndication SequenceOfTrajectoryInterceptionIndication OPTIONAL, - accelerationChangeIndication AccelerationChangeIndication OPTIONAL, - headingChangeIndication HeadingChangeIndication OPTIONAL, - stabilityChangeIndication StabilityChangeIndication OPTIONAL, + pathHistory PathHistory OPTIONAL, + pathPrediction PathPrediction OPTIONAL, + safeDistance SequenceOfVruSafeDistanceIndication OPTIONAL, + trajectoryInterceptionIndication SequenceOfTrajectoryInterceptionIndication OPTIONAL, + accelerationChangeIndication AccelerationChangeIndication OPTIONAL, + headingChangeIndication HeadingChangeIndication OPTIONAL, + stabilityChangeIndication StabilityChangeIndication OPTIONAL, ... } @@ -294,12 +296,14 @@ BEGIN TrajectoryInterceptionIndication ::= SEQUENCE { subjectStation StationID OPTIONAL, - trajectoryInterceptionIndication BOOLEAN + trajectoryInterceptionIndication BOOLEAN, + ... } HeadingChangeIndication ::= SEQUENCE { direction LeftOrRight, - actionDeltaTime ActionDeltaTime + actionDeltaTime ActionDeltaTime, + ... } LeftOrRight ::= ENUMERATED { left, right } @@ -309,14 +313,16 @@ BEGIN AccelerationChangeIndication ::= SEQUENCE { accelOrDecel AccelOrDecel, - actionDeltaTime ActionDeltaTime + actionDeltaTime ActionDeltaTime, + ... } AccelOrDecel ::= ENUMERATED { accelerate, decelerate } StabilityChangeIndication ::= SEQUENCE { lossProbability StabilityLossProbability, - actionDeltaTime ActionDeltaTime + actionDeltaTime ActionDeltaTime, + ... } StabilityLossProbability ::= INTEGER { zero(0), twoPercent (1), diff --git a/VAM-Temp-Imports.asn b/VAM-Temp-Imports.asn index 813ae04..38ed1d2 100644 --- a/VAM-Temp-Imports.asn +++ b/VAM-Temp-Imports.asn @@ -6,7 +6,7 @@ -- version number of this module will be incremented. VAM-Temp-Imports {itu-t(0) identified-organization(4) etsi(0) itsDomain(5) - wg1(1) ts(103300) part-3(3) temp-imports(255) version(1)} + wg1(1) ts(103300) temp-imports(255) version1(1)} DEFINITIONS AUTOMATIC TAGS ::= @@ -14,7 +14,7 @@ BEGIN IMPORTS -ReferencePosition, SpeedConfidence, StationID, VehicleWidth +ReferencePosition, StationID FROM ITS-Container {itu-t (0) identified-organization (4) etsi (0) itsDomain (5) wg1 (1) ts (102894) cdd (2) version (2)} @@ -89,11 +89,6 @@ SemiRangeLength ::= INTEGER { oneMeter (10) } (0..10000) -WGS84Angle ::= SEQUENCE { - value WGS84AngleValue, - confidence AngleConfidence -} - WGS84AngleValue ::= INTEGER { wgs84North (0), wgs84East (900), @@ -102,17 +97,6 @@ WGS84AngleValue ::= INTEGER { unavailable (3601) } (0..3601) -AngleConfidence ::= INTEGER { - zeroPointOneDegree (1), -- if the heading accuracy is equal to or less than 0,1 degree - oneDegree (10), - outOfRange (126), -- if the heading accuracy is out of range, i.e. greater than - -- 12,5 degrees. A corresponding reported angle value shall be - -- considered invalid and cannot be trusted. - unavailable (127) -- if the heading accuracy information is not available -} (1..127) - - - StationType ::= INTEGER { unknown(0), pedestrian(1), cyclist(2), moped(3), motorcycle(4), passengerCar(5), bus(6), lightTruck(7), heavyTruck(8), trailer(9), diff --git a/motorcyclist-special-container.asn b/motorcyclist-special-container.asn index d4af37a..c1d3d92 100644 --- a/motorcyclist-special-container.asn +++ b/motorcyclist-special-container.asn @@ -2,7 +2,7 @@ -- Cooperative Awareness Message (CAM) defined in EN 302 637-2 VRU-Motorcyclist-Special-Container {itu-t(0) identified-organization(4) etsi(0) itsDomain(5) - wg1(1) ts(103300) motorcyclist-special-container(2) version(1)} + wg1(1) ts(103300) motorcyclist-special-container(2) version1(1)} DEFINITIONS AUTOMATIC TAGS ::= @@ -15,7 +15,7 @@ IMPORTS VruSizeClass, VruSubProfileMotorcyclist FROM VAM-PDU-Descriptions {itu-t(0) identified-organization(4) etsi(0) itsDomain(5) - wg1(1) ts(103300) part-3(3) vam(1) version(1)} + wg1(1) ts(103300) vam(1) version1(1)} PathHistory FROM ITS-Container -- GitLab From ad6ae128d7fdbbc2c2ae425925535af5598d53c2 Mon Sep 17 00:00:00 2001 From: William Whyte Date: Tue, 15 Sep 2020 23:37:30 -0400 Subject: [PATCH 6/9] v0.5.0 --- VAM-PDU-Descriptions.asn | 32 +++++++++++++++++++++++------- VAM-Temp-Imports.asn | 2 ++ motorcyclist-special-container.asn | 9 ++++++--- 3 files changed, 33 insertions(+), 10 deletions(-) diff --git a/VAM-PDU-Descriptions.asn b/VAM-PDU-Descriptions.asn index 04387b0..c3975f6 100755 --- a/VAM-PDU-Descriptions.asn +++ b/VAM-PDU-Descriptions.asn @@ -1,4 +1,4 @@ --- ETSI TS 103 300-3 V0.4.0 (2020-07) +-- ETSI TS 103 300-3 V0.5.0 (2020-09) VAM-PDU-Descriptions {itu-t(0) identified-organization(4) etsi(0) itsDomain(5) wg1(1) ts(103300) vam(1) version1(1)} @@ -7,8 +7,8 @@ BEGIN IMPORTS Curvature, CurvatureCalculationMode, ExteriorLights, Heading, - LanePosition, LateralAcceleration, - LongitudinalAcceleration, PathHistory, ReferencePosition, Speed, + LanePosition, LateralAcceleration, LongitudinalAcceleration, + PathDeltaTime, PathHistory, ReferencePosition, Speed, StationID, SteeringWheelAngle, VerticalAcceleration, YawRate FROM ITS-Container {itu-t(0) identified-organization(4) etsi(0) itsDomain(5) wg1(1) ts(102894) cdd(2) version(2)} @@ -131,7 +131,7 @@ BEGIN VruOrientation ::= Heading -- from ITS-Container - VruRollAngle ::= SteeringWheelAngle -- from ITS-Container + VruRollAngle ::= Heading -- from ITS-Container VruDeviceUsage ::= ENUMERATED { unavailable(0), other(1), idle(2), listeningToAudio(3), typing(4), @@ -257,6 +257,9 @@ BEGIN outOfClusterBoundingBox (3), outOfClusterSpeedRange (4), joiningAnotherCluster (5), + cancelledJoin (6), + failedJoin (7), + safetyCondition (8), max(15) } @@ -265,12 +268,14 @@ BEGIN clusteringPurposeCompleted (1), leaderMovedOutOfClusterBoundingBox (2), joiningAnotherCluster (3), + enteringLowRiskAreaBasedOnMaps (4), + receptionOfCpmContainingCluster (5), max(15) } VruMotionPredictionContainer ::= SEQUENCE { pathHistory PathHistory OPTIONAL, - pathPrediction PathPrediction OPTIONAL, + pathPrediction SequenceOfVruPathPoint OPTIONAL, safeDistance SequenceOfVruSafeDistanceIndication OPTIONAL, trajectoryInterceptionIndication SequenceOfTrajectoryInterceptionIndication OPTIONAL, accelerationChangeIndication AccelerationChangeIndication OPTIONAL, @@ -279,7 +284,13 @@ BEGIN ... } - PathPrediction ::= PathHistory + SequenceOfVruPathPoint ::= SEQUENCE OF VruPathPoint + + VruPathPoint ::= SEQUENCE { + pathPosition ReferencePosition, + pathDeltaTime PathDeltaTime OPTIONAL + } + SequenceOfVruSafeDistanceIndication ::= SEQUENCE(SIZE(0..8)) OF VruSafeDistanceIndication @@ -296,10 +307,17 @@ BEGIN TrajectoryInterceptionIndication ::= SEQUENCE { subjectStation StationID OPTIONAL, - trajectoryInterceptionIndication BOOLEAN, + trajectoryInterceptionProbability TrajectoryInterceptionProbability, + trajectoryInterceptionConfidence TrajectoryInterceptionConfidence OPTIONAL, ... } + TrajectoryInterceptionProbability ::= INTEGER { zero(0), twoPercent(1), + fourPercent(2), oneHundredPercent(50), unavailable (63) } (0..63) + + TrajectoryInterceptionConfidence ::= INTEGER { lessthan50percent(0), + between50and70Percent(1), between70and90Percent(2), above90Percent(3) } (0..3) + HeadingChangeIndication ::= SEQUENCE { direction LeftOrRight, actionDeltaTime ActionDeltaTime, diff --git a/VAM-Temp-Imports.asn b/VAM-Temp-Imports.asn index 38ed1d2..3e2e73d 100644 --- a/VAM-Temp-Imports.asn +++ b/VAM-Temp-Imports.asn @@ -1,3 +1,5 @@ +-- ETSI TS 103 300-3 V0.5.0 (2020-09) + -- Note: This module defines types that are intended to be updated within -- or added to the Common Data Dictionary. Defining the types in this -- module allows them to be used by the VAM before the CDD has been diff --git a/motorcyclist-special-container.asn b/motorcyclist-special-container.asn index c1d3d92..8c5bb70 100644 --- a/motorcyclist-special-container.asn +++ b/motorcyclist-special-container.asn @@ -1,3 +1,5 @@ +-- ETSI TS 103 300-3 V0.5.0 (2020-09s) + -- This module defines a special container for motorcycles, to be integrated into the -- Cooperative Awareness Message (CAM) defined in EN 302 637-2 @@ -10,8 +12,8 @@ DEFINITIONS AUTOMATIC TAGS ::= BEGIN IMPORTS - PathPrediction, SequenceOfVruSafeDistanceIndication, - StabilityChangeIndication, VruRollAngle, + SequenceOfVruPathPoint, SequenceOfVruSafeDistanceIndication, + StabilityChangeIndication, VruOrientation, VruRollAngle, VruSizeClass, VruSubProfileMotorcyclist FROM VAM-PDU-Descriptions {itu-t(0) identified-organization(4) etsi(0) itsDomain(5) @@ -27,9 +29,10 @@ MotorcylistSpecialContainer ::= SEQUENCE { vruSubProfileMotorcyclist VruSubProfileMotorcyclist, vruSizeClass VruSizeClass, rollAngle VruRollAngle OPTIONAL, + orientation VruOrientation OPTIONAL, vruSafeDistance SequenceOfVruSafeDistanceIndication OPTIONAL, pathHistory PathHistory OPTIONAL, - pathPrediction PathPrediction OPTIONAL, + pathPrediction SequenceOfVruPathPoint OPTIONAL, stabilityChangeIndication StabilityChangeIndication OPTIONAL, ... } -- GitLab From bb7f0ac4f39ae058fe04ba7e1b96d314379d8125 Mon Sep 17 00:00:00 2001 From: William Whyte Date: Tue, 22 Sep 2020 07:29:56 -0400 Subject: [PATCH 7/9] Final changes to make consistent with v0.5.0 --- VAM-PDU-Descriptions.asn | 10 +++++----- VAM-Temp-Imports.asn | 2 +- motorcyclist-special-container.asn | 1 - 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/VAM-PDU-Descriptions.asn b/VAM-PDU-Descriptions.asn index c3975f6..050af85 100755 --- a/VAM-PDU-Descriptions.asn +++ b/VAM-PDU-Descriptions.asn @@ -9,7 +9,7 @@ BEGIN Curvature, CurvatureCalculationMode, ExteriorLights, Heading, LanePosition, LateralAcceleration, LongitudinalAcceleration, PathDeltaTime, PathHistory, ReferencePosition, Speed, - StationID, SteeringWheelAngle, VerticalAcceleration, YawRate + StationID, VerticalAcceleration, YawRate FROM ITS-Container {itu-t(0) identified-organization(4) etsi(0) itsDomain(5) wg1(1) ts(102894) cdd(2) version(2)} @@ -223,10 +223,10 @@ BEGIN -- this is OPTIONAL elements rather than a CHOICE because a -- VRU ITS-S could be leaving one cluster and joining another. VruClusterOperationContainer ::= SEQUENCE { - clusterJoinInfo ClusterJoinInfo OPTIONAL, - clusterLeaveInfo ClusterLeaveInfo OPTIONAL, - clusterBreakupInfo ClusterBreakupInfo OPTIONAL, - clusterIdChangeInfo VruClusterOpTimestamp OPTIONAL, + clusterJoinInfo ClusterJoinInfo OPTIONAL, + clusterLeaveInfo ClusterLeaveInfo OPTIONAL, + clusterBreakupInfo ClusterBreakupInfo OPTIONAL, + clusterIdChangeTimeInfo VruClusterOpTimestamp OPTIONAL, ... } diff --git a/VAM-Temp-Imports.asn b/VAM-Temp-Imports.asn index 3e2e73d..70f4593 100644 --- a/VAM-Temp-Imports.asn +++ b/VAM-Temp-Imports.asn @@ -102,7 +102,7 @@ WGS84AngleValue ::= INTEGER { StationType ::= INTEGER { unknown(0), pedestrian(1), cyclist(2), moped(3), motorcycle(4), passengerCar(5), bus(6), lightTruck(7), heavyTruck(8), trailer(9), - specialVehicles(10), tram(11), lightVruVehicle(12), animals(13), + specialVehicles(10), tram(11), lightVruVehicle(12), animal(13), roadSideUnit(15) } (0..255) diff --git a/motorcyclist-special-container.asn b/motorcyclist-special-container.asn index 8c5bb70..495b76c 100644 --- a/motorcyclist-special-container.asn +++ b/motorcyclist-special-container.asn @@ -31,7 +31,6 @@ MotorcylistSpecialContainer ::= SEQUENCE { rollAngle VruRollAngle OPTIONAL, orientation VruOrientation OPTIONAL, vruSafeDistance SequenceOfVruSafeDistanceIndication OPTIONAL, - pathHistory PathHistory OPTIONAL, pathPrediction SequenceOfVruPathPoint OPTIONAL, stabilityChangeIndication StabilityChangeIndication OPTIONAL, ... -- GitLab From 8cb29c6483f53af4a49e8ecf018f8992329bb63a Mon Sep 17 00:00:00 2001 From: William Whyte Date: Tue, 17 Nov 2020 14:59:03 -0500 Subject: [PATCH 8/9] Final changes for v2.1.1 --- VAM-PDU-Descriptions.asn | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/VAM-PDU-Descriptions.asn b/VAM-PDU-Descriptions.asn index 050af85..bfb70ec 100755 --- a/VAM-PDU-Descriptions.asn +++ b/VAM-PDU-Descriptions.asn @@ -173,13 +173,12 @@ BEGIN } VruSubProfileAnimal ::= ENUMERATED { - unavailable(0), max(15) + unavailable(0), wild-animal(1), farm-animal(2), service-animal(3), max(15) } VruExteriorLights ::= SEQUENCE { vruSpecific VruSpecificExteriorLights, -- defined below - generic ExteriorLights - -- should be extensible? + vehicular ExteriorLights } VruSpecificExteriorLights ::= BIT STRING { @@ -199,7 +198,7 @@ BEGIN VruClusterInformationContainer ::= SEQUENCE { clusterId ClusterId, clusterBoundingBoxShape ClusterBoundingBoxShape, - clusterCardinalitySize INTEGER(0..255), -- 0 means unknown + clusterCardinalitySize ClusterCardinalitySize, -- 0 means unknown clusterProfiles ClusterProfiles, ... } @@ -213,6 +212,8 @@ BEGIN ... } + ClusterCardinalitySize ::= INTEGER {unavailable(0), onlyLeader(1)} (0..255) + ClusterProfiles ::= BIT STRING { pedestrian(0), bicyclist(1), @@ -293,15 +294,17 @@ BEGIN SequenceOfVruSafeDistanceIndication ::= - SEQUENCE(SIZE(0..8)) OF VruSafeDistanceIndication + SEQUENCE(SIZE(1..8)) OF VruSafeDistanceIndication VruSafeDistanceIndication ::= SEQUENCE { - subjectStation StationID OPTIONAL, - stationSafeDistanceIndication BOOLEAN, - timeToCollision ActionDeltaTime OPTIONAL, + subjectStation StationID OPTIONAL, + stationSafeDistanceIndication StationSafeDistanceIndication, + timeToCollision ActionDeltaTime OPTIONAL, ... } + StationSafeDistanceIndication ::= BOOLEAN + SequenceOfTrajectoryInterceptionIndication ::= SEQUENCE (SIZE(1..8)) OF TrajectoryInterceptionIndication -- GitLab From 0ed4ba1bf961162be027f6293b1e3430260e1c05 Mon Sep 17 00:00:00 2001 From: Denis Filatov Date: Wed, 18 Nov 2020 09:16:57 +0100 Subject: [PATCH 9/9] update README.md: add link to the base document --- README.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 61d79c1..c3fa628 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,7 @@ # ASN.1 module for VAM - ETSI TS 103 300-3 -This repository contains VRU Awareness Basic Service ETSI TS 103 300-3 – Specification of the VRU Awareness Message format. +This repository contains VRU Awareness Basic Service ETSI TS 103 300-3 Specification of the VRU Awareness Message format. +The text of the TS 103 300-1 V2.1.1 can be found using the link https://www.etsi.org/deliver/etsi_ts/103300_103399/10330003/02.01.01_60/ts_10330003v020101p.pdf. ## License @@ -15,5 +16,3 @@ To compile the VAM, the following dependencies are required: - **[ITS-Container](https://forge.etsi.org/rep/ITS/asn1/cdd_ts102894_2)** module from [ETSI TS 102 894-2 v1.3.1](https://www.etsi.org/deliver/etsi_ts/102800_102899/10289402/01.03.01_60/ts_10289402v010301p.pdf) - Common Data Dictionary - **[DSRC, AddGrpC](https://standards.iso.org/iso/ts/19091/)** modules from [ISO TS 19091](https://www.iso.org/standard/69897.html) - for intersection and lane identifiers - **[ElectronicRegistrationIdentificationVehicleDataModule](https://standards.iso.org/iso/24534/-4/)** module from [ISO TS 24534-3](https://www.iso.org/standard/59306.html) - - -- GitLab