Commits (11)
# ASN.1 module for VAM - ETSI TS 103 300-3
This repository contains Specification of the VRU Awareness Message format for the VRU Awareness Basic Service in ETSI TS 103 300-3.
This repository contains VRU Awareness Basic Service ETSI TS 103 300-3 Specification of the VRU Awareness Message format.
The asn.1 files for TS 103 300-1 V2.1.1 can be found in the tagged version : https://forge.etsi.org/rep/ITS/asn1/vam-ts103300_3/tree/v.1.1.1/
The text of the TS 103 300-1 V2.1.1 can be found using the link (still ongoing).
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
......@@ -17,3 +15,5 @@ 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)
-- ETSI TS 103 300-3 V2.1.1 (2020-11)
VAM-PDU-Descriptions {itu-t(0) identified-organization(4) etsi(0) itsDomain(5)
wg1(1) ts(103300) vam(1) version1(1)}
DEFINITIONS AUTOMATIC TAGS ::=
BEGIN
IMPORTS
Curvature, CurvatureCalculationMode, ExteriorLights, Heading,
LanePosition, LateralAcceleration, LongitudinalAcceleration,
PathDeltaTime, PathHistory, ReferencePosition, Speed,
StationID, 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) temp-imports(255) version1(1)}
WITH SUCCESSORS
IntersectionReferenceID, LaneID
FROM DSRC {iso (1) standard (0) signalizedIntersection (19091) profilec(2)
dsrc (2) version (2)}
;
VAM ::= SEQUENCE {
header ItsPduHeaderVam,
vam VruAwareness
}
ItsPduHeaderVam ::= ItsPduHeader(WITH COMPONENTS {
...,
messageID(vam)
})
VruAwareness ::= SEQUENCE {
generationDeltaTime GenerationDeltaTime, -- from CAM-PDU-Descriptions
vamParameters VamParameters
}
VamParameters ::= SEQUENCE {
basicContainer BasicContainer, -- from VAM-Temp-Imports
vruHighFrequencyContainer VruHighFrequencyContainer OPTIONAL,
vruLowFrequencyContainer VruLowFrequencyContainer OPTIONAL,
vruClusterInformationContainer VruClusterInformationContainer OPTIONAL,
vruClusterOperationContainer VruClusterOperationContainer OPTIONAL,
vruMotionPredictionContainer VruMotionPredictionContainer OPTIONAL,
...
}
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,
...
}
VruLanePosition ::= CHOICE {
offRoadLanePosition OffRoadLanePosition,
vehicularLanePosition LanePosition, -- from ITS-Container
trafficIslandPosition TrafficIslandPosition,
mapPosition MapPosition,
...
}
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),
brakingAndStopPedaling(4), hardBrakingAndStopPedaling (5),
noReaction(6), max (255)
-- values 7-254 reserved for later use
}
VruOrientation ::= Heading -- from ITS-Container
VruRollAngle ::= Heading -- 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), wild-animal(1), farm-animal(2), service-animal(3), max(15)
}
VruExteriorLights ::= SEQUENCE {
vruSpecific VruSpecificExteriorLights, -- defined below
vehicular ExteriorLights
}
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 ClusterCardinalitySize, -- 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
...
}
ClusterCardinalitySize ::= INTEGER {unavailable(0), onlyLeader(1)} (0..255)
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,
clusterIdChangeTimeInfo VruClusterOpTimestamp OPTIONAL,
...
}
VruClusterOpTimestamp ::= INTEGER (1..255)
ClusterJoinInfo ::= SEQUENCE {
clusterId ClusterId,
joinTime VruClusterOpTimestamp,
...
}
ClusterLeaveInfo ::= SEQUENCE {
clusterId ClusterId,
clusterLeaveReason ClusterLeaveReason,
...
}
ClusterBreakupInfo ::= SEQUENCE {
clusterBreakupReason ClusterBreakupReason,
breakupTime VruClusterOpTimestamp,
...
}
ClusterLeaveReason ::= ENUMERATED {
notProvided (0),
clusterLeaderLost (1),
clusterDisbandedByLeader (2),
outOfClusterBoundingBox (3),
outOfClusterSpeedRange (4),
joiningAnotherCluster (5),
cancelledJoin (6),
failedJoin (7),
safetyCondition (8),
max(15)
}
ClusterBreakupReason ::= ENUMERATED {
notProvided (0),
clusteringPurposeCompleted (1),
leaderMovedOutOfClusterBoundingBox (2),
joiningAnotherCluster (3),
enteringLowRiskAreaBasedOnMaps (4),
receptionOfCpmContainingCluster (5),
max(15)
}
VruMotionPredictionContainer ::= SEQUENCE {
pathHistory PathHistory OPTIONAL,
pathPrediction SequenceOfVruPathPoint OPTIONAL,
safeDistance SequenceOfVruSafeDistanceIndication OPTIONAL,
trajectoryInterceptionIndication SequenceOfTrajectoryInterceptionIndication OPTIONAL,
accelerationChangeIndication AccelerationChangeIndication OPTIONAL,
headingChangeIndication HeadingChangeIndication OPTIONAL,
stabilityChangeIndication StabilityChangeIndication OPTIONAL,
...
}
SequenceOfVruPathPoint ::= SEQUENCE OF VruPathPoint
VruPathPoint ::= SEQUENCE {
pathPosition ReferencePosition,
pathDeltaTime PathDeltaTime OPTIONAL
}
SequenceOfVruSafeDistanceIndication ::=
SEQUENCE(SIZE(1..8)) OF VruSafeDistanceIndication
VruSafeDistanceIndication ::= SEQUENCE {
subjectStation StationID OPTIONAL,
stationSafeDistanceIndication StationSafeDistanceIndication,
timeToCollision ActionDeltaTime OPTIONAL,
...
}
StationSafeDistanceIndication ::= BOOLEAN
SequenceOfTrajectoryInterceptionIndication ::=
SEQUENCE (SIZE(1..8)) OF TrajectoryInterceptionIndication
TrajectoryInterceptionIndication ::= SEQUENCE {
subjectStation StationID OPTIONAL,
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,
...
}
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
-- ETSI TS 103 300-3 V2.1.1 (2020-11)
-- 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
-- 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) temp-imports(255) version1(1)}
DEFINITIONS AUTOMATIC TAGS ::=
BEGIN
IMPORTS
ReferencePosition, StationID
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)
version (2)}
;
-- identical to BasicContainer as used in CAM
BasicContainer ::= SEQUENCE {
stationType StationType, -- from VAM-Temp-Imports
referencePosition ReferencePosition, -- from ITS-Container
...
}
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,
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)
WGS84AngleValue ::= INTEGER {
wgs84North (0),
wgs84East (900),
wgs84South (1800),
wgs84West (2700),
unavailable (3601)
} (0..3601)
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), animal(13),
roadSideUnit(15)
}
(0..255)
END
-- ETSI TS 103 300-3 V2.1.1 (2020-11)
-- 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) version1(1)}
DEFINITIONS AUTOMATIC TAGS ::=
BEGIN
IMPORTS
SequenceOfVruPathPoint, SequenceOfVruSafeDistanceIndication,
StabilityChangeIndication, VruOrientation, VruRollAngle,
VruSizeClass, VruSubProfileMotorcyclist
FROM VAM-PDU-Descriptions
{itu-t(0) identified-organization(4) etsi(0) itsDomain(5)
wg1(1) ts(103300) vam(1) version1(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,
orientation VruOrientation OPTIONAL,
vruSafeDistance SequenceOfVruSafeDistanceIndication OPTIONAL,
pathPrediction SequenceOfVruPathPoint OPTIONAL,
stabilityChangeIndication StabilityChangeIndication OPTIONAL,
...
}
END