UC 9: Person/animal on the road warning
Operation use case
Purpose
Warn and inform of persons or animals on the road that the road user may potentially encounter. With timely and adequate reporting, road users can anticipate the potential risk and adjust their driving behaviour so that incidents can be avoided and overall road safety improves.
Position of road users
Direction of travel in which the event is reportedRoad users receive information about the location of people or animals on the road on their route. Road users who come close to the incident (and are driving in the same direction of travel) will be notified so that they can adjust their driving behaviour if necessary. The location and distance to the people or animals on the road are shared with the road user.
Vehicle B, upstream of the people or animals on the road, will receive a notification of the event. Vehicle A, downstream of the event, will not receive a notification.
[Opposite direction of travel of reported event]
Animals and people can be in constant motion. For this reason, events for people or animals on the road are always duplicated (in PIP) for the opposite direction of travel, regardless of the presence of a central reservation. In this way, the message is always shown to the upstream vehicles in the opposite direction of travel.
[Parallel and Nearby Roads]
Animals and people can be in constant motion. Therefore, events for people or animals on the road are always duplicated (in PIP) to all roads (both directions of travel) within a radius of 75m from the event. This way, the message is always shown to all vehicles in the vicinity.
The implementation of the duplicating event in both directions of travel is part of M4.
Data sources
The data sources for this use case are:
- the DATEX II of the Flemish Traffic Centre (VVC)
- the traffic editors of Be-Mobile
- Event Sourcing from RUF: new reports of people or animals on the road by connected road users.
Data Processing (PIP)
1. Create an event
The information from the above-mentioned sources is collected and validated in the PIP. Then, the "person on the road" or "animal on the road" events are published on the MI as DENM messages.
It is expected that user reports (RUF) will be an important source for reports of people or animals on the road, as these situations are usually short-lived. In the apps connected to the Mobilidata ecosystem, users are given the opportunity to report people or animals on the road. Ideally, user reports should first be validated by the service providers. Only if there are sufficiently reliable reports from users who warn of people or animals on the road, an event will be created in the PIP, see RUF.
2. Follow-up and cancellation of the event
The PIP keeps a temporary set of validated events.
The event will be cancelled:
- by the source itself
- via RUF
- after time to live: 20min after last RUF upvote, for all sources (both DATEX II, and BeMobile feed, as well as events that ended up in the PIP via RUF)
3. Quality Control
The PIP will perform a quality check on the DENM messages, before publishing them on the MI, the following checks will be implemented:
- Technical validation
- Are the protocols respected? Incorrect messages are filtered out.
- Are all required fields filled in according to C-roads standard? Incomplete DENM messages are filtered out.
- Is the format correct? Messages in incorrect format will not be used.
- Isn't the message too old? Outdated messages are filtered out. Several checks are done in the PIP to check that a message sent to the MI is not outdated. For example, if a newer update is already in the PIP before the previous message has been sent to the MI (e.g. due to a delay in the PIP). It is not possible to put an exact time on 'outdated messages', as this time will be use case and source dependent.
- Merge & Decide (more info in blueprint Merge & Decide)
- Check whether a similar event (person/animal on the road) is already known in the PIP at a limited distance from the new event. If it does, the events will be merged and the notification will be updated as needed. If not, a completely new event will be reported.
RUF
In the event of a report of animals or persons on the road, the road user has the option to confirm or reject the report via RUF. When there are sufficient/reliable reports from users that there are no people or animals on the road (anymore), the message must disappear. See RUF description at messages section.
MI & Historical Archive
Denm information
Cause and sub cause codes are:
| Causecode | Description | Subcausecode | Description |
|---|---|---|---|
| 11 | animal on the road | 0 | unavailable |
| 12 | human presence on the road | 0 | unavailable |
MI Headers
{
"messageType": "DENM",
"originatingCountry": "BE",
"protocolVersion": "DENM:1.3.1",
"publisherId": "BE00004",
"publicationId": "BE00004:DENM_ANIMAL_PERSON_ON_THE_ROAD_01",
"custom-mobilidata-publisherType": "PIP",
"custom-mobilidata-dtapEnvironment": "production",
"custom-mobilidata-useCase": [9],
"quadTree": [
]
}
Historical archive
As well the original messages as the (agregated) RUF messages are stored in the historical archive.
Service Provider Implementation
Theserviceprovider will give end-users the opportunity to either initiate the RUF message or to upvote/downvote an existing message. The RUF must indicate in which direction (which site on the road) the person or animal is detected. Within the PIP, the type of road will be taken into account.
Message example
UC 9 Message Example
- AMQP Header
- ASN.1
- JSON
{
"shardId": "1",
"latitude": "49.9089529",
"quadTree": ",120203202220312333,1202032022203,",
"causeCode": "12",
"longitude": "5.700825",
"shardCount": "1",
"messageType": "DENM",
"publisherId": "BE00004",
"serviceType": ",HLN-APR,",
"subCauseCode": "0",
"publicationId": "BE00004:DENM_ANIMAL_PERSON_ON_THE_ROAD_02",
"baselineVersion": "2.1.0",
"protocolVersion": "DENM:1.3.1",
"originatingCountry": "BE",
"custom-mobilidata-useCase": ",9,",
"custom-mobilidata-timestamp": "1737369928118",
"custom-mobilidata-alertCCodes": "1472",
"custom-mobilidata-publisherType": "PIP",
"custom-mobilidata-baselineVersion": "1.0.0",
"custom-mobilidata-dtapEnvironment": "production"
}
010100000001c100000000aede135692d3a6a4d5a4b4e9ad36469796eafb27affffffe11dbba1f017580000c00272bfc0b3fffeffffe39c420f700c2e39c420f700c7e39c420f700c7639c420f700c7e39c422370158639c421f901e9e39c421fb022a639c421e5022ae39c421e5022a639c421fb022ae39c0
{
"Header": {
"ProtocolVersion": 1,
"MessageID": 1,
"StationID": 1
},
"Denm": {
"Management": {
"ActionID": {
"OriginatingStationID": 1,
"SequenceNumber": 23996
},
"DetectionTime": 664454733109,
"ReferenceTime": 664454733109,
"Termination": null,
"EventPosition": {
"Latitude": 499089529,
"Longitude": 57008250,
"PositionConfidenceEllipse": {
"SemiMajorConfidence": 4095,
"SemiMajorOrientation": 3601,
"SemiMinorConfidence": 4095
},
"Altitude": {
"AltitudeValue": 800001,
"AltitudeConfidence": 15
}
},
"RelevanceDistance": null,
"RelevanceTrafficDirection": null,
"ValidityDuration": 747,
"TransmissionInterval": 1,
"StationType": 0
},
"Situation": {
"InformationQuality": 0,
"EventType": {
"CauseCodeType": 12,
"SubCauseCodeType": 0
},
"LinkedCause": null,
"EventHistory": null
},
"Location": {
"EventSpeed": null,
"EventPositionHeading": {
"HeadingValue": 1835,
"HeadingConfidence": 127
},
"Traces": [
[
{
"PathPosition": {
"DeltaLatitude": 0,
"DeltaLongitude": 0,
"DeltaAltitude": 12800
},
"PathDeltaTime": 1
},
{
"PathPosition": {
"DeltaLatitude": 4220,
"DeltaLongitude": 390,
"DeltaAltitude": 12800
},
"PathDeltaTime": 1
},
{
"PathPosition": {
"DeltaLatitude": 4220,
"DeltaLongitude": 400,
"DeltaAltitude": 12800
},
"PathDeltaTime": 1
},
{
"PathPosition": {
"DeltaLatitude": 4220,
"DeltaLongitude": 399,
"DeltaAltitude": 12800
},
"PathDeltaTime": 1
},
{
"PathPosition": {
"DeltaLatitude": 4220,
"DeltaLongitude": 400,
"DeltaAltitude": 12800
},
"PathDeltaTime": 1
},
{
"PathPosition": {
"DeltaLatitude": 4380,
"DeltaLongitude": 689,
"DeltaAltitude": 12800
},
"PathDeltaTime": 1
},
{
"PathPosition": {
"DeltaLatitude": 4349,
"DeltaLongitude": 980,
"DeltaAltitude": 12800
},
"PathDeltaTime": 1
},
{
"PathPosition": {
"DeltaLatitude": 4350,
"DeltaLongitude": 1109,
"DeltaAltitude": 12800
},
"PathDeltaTime": 1
},
{
"PathPosition": {
"DeltaLatitude": 4339,
"DeltaLongitude": 1110,
"DeltaAltitude": 12800
},
"PathDeltaTime": 1
},
{
"PathPosition": {
"DeltaLatitude": 4339,
"DeltaLongitude": 1109,
"DeltaAltitude": 12800
},
"PathDeltaTime": 1
},
{
"PathPosition": {
"DeltaLatitude": 4350,
"DeltaLongitude": 1110,
"DeltaAltitude": 12800
},
"PathDeltaTime": 1
}
]
],
"RoadType": null
},
"Alacarte": null
}
}