Skip to main content

CAM

Version

Look for the current version via the link in the table at the message-type introduction page

caution

As of mid november 2024, Mobilidata has changed version regarding AMQP headers (version 0.9 to 1.0). This is caused by changes in the C-Roads (TF4 spec release 2.1.0) specification.

Description

Cooperative Awareness Messages (CAM) are messages exchanged in the ITS network between ITS-stations to create and maintain awareness and to support cooperative performance of vehicles using the road network.

A CAM contains status and attribute information of the originating ITS-S. The content varies depending on the type of the ITS-S. For vehicle ITS-Ss the status information includes time, position, motion state, activated systems, etc. and the attribute information includes data about the dimensions, vehicle type and role in the road traffic, etc.

On reception of a CAM the receiving ITS-S becomes aware of the presence, type, and status of the originating ITS-S. The received information can be used by the receiving ITS-S to support several ITS applications.

Usage

In Mobilidata, CAM is only used for purposes related to iTLC. This is strongly related to protect the privacy of the end-user with a positive side effect that it is less data consuming. CAM must only be available within the geofence (lane descriptions) of an iTLC. Within a single geofence, it must keep the same vehicle identifier. It is desirable that, when geofences do not overlap, the identifier hanges between geofences. Tracking will be very difficult by design. By default, the interval for CAM messages, from a vehicle within the geofence of an iTLC is one per second.

An exception on above, is for special (emergency/service) vehicles, not connected via a track & trace system. These vehicles must send CAM when in active service, with a minimum of one per 10 seconds.

caution

Data packages are encoded/decoded to ASN.1 standard, using the 'UPER' encoding rules.

Attributes

{
"Header": {
"ProtocolVersion": 2,
"MessageID": 9,
"StationID": 120399645
},
"Srm": {
...
}
}

The stationID in the message header is a combination your unique prefix service provider for the first 6 bits and the vehicle ID. See the onboarding documentation for more information on requesting your unique CROW prefix service provider.

"CoopAwareness": {
...
"CamParameters": {
"BasicContainer": {
...
"ReferencePosition": {
"Latitude": 510601726,
"Longitude": 36931767,
"PositionConfidenceEllipse": {
"SemiMajorConfidence": 4095,
"SemiMajorOrientation": 3601,
"SemiMinorConfidence": 4095
},
"Altitude": {
"AltitudeValue": 800001,
"AltitudeConfidence": 15
}
}
},
...
},
...
}

The CAM message contains a BasicContainer with a ReferencePosition attribute. This attribute contains the location information of the CAM Message. Latitude and Longitude are the coordinates of the vehicle. To get the values of Latitude and Longitude in WGS84, the following calculation has to be applied: WGS84 Latitude = Latitude * 1e-7 and WGS84 Longitude = Longitude * 1e-7. Position confidence and altitude are also included in the ReferencePosition attribute.

"CoopAwareness": {
...
"CamParameters": {
...
"HighFrequencyContainer": {
"BasicVehicleContainerHighFrequency": {
...
"Heading": {
"HeadingValue": 100,
"HeadingConfidence": 127
},
"Speed": {
"Speedvalue": 1389,
"SpeedConfidence": 127
},
...
},
...
},
...
},
...
}

The HighFrequencyContainer contains the BasicVehicleContainerHighFrequency attribute. This attribute contains detailed information about the vehicle, like the heading and speed of the vehicle at the moment of sending the CAM message. But also the vehicle length, width, and curvature are included in this attribute (see example).

Example

An extended description of the CAM ASN.1 can be found here.

CAM AMQP Header example
{
"custom-mobilidata-Id": ",4001-361,4001-362,",
"latitude": "51.06979160103947",
"quadTree": ",120202123012222233,",
"longitude": "3.6956429667770863",
"custom-mobilidata-timestamp": "1712900175164",
"messageType": "CAM",
"publisherId": "BE00005",
"publicationId": "BE00005:CAM_02",
"custom-mobilidata-baselineVersion": "D",
"custom-mobilidata-dtapEnvironment": "production",
"protocolVersion": "CAM:1.4.1",
"originatingCountry": "BE",
"shardCount": "1",
"shardId": "1",
"baselineVersion": "2.1.0",
"stationType": "5",
}

When receiving a CAM message, the AMQP header will contain some extra information.

  • quadTree: The quadtree of the message. This can be used to filter the message on the location based on quadkeys.
CAM Message example
0202051fa53af69020aa82825fcdafab56fffffffc23b7743e00064fc2b6fe3fe9ed0737feebfff615d0