Transmit Decentralized Environmental Notification Messages

Apostolos Georgiadis
nfiniity GmbH

Effortless DENM message transmission in cube-its using Python

Decentralized Environmental Notification Messages (DENM), defined in the ETSI EN 302 637-3 standard, are a key element of the ETSI Intelligent Transport Systems (ITS) architecture. DENMs notify connected vehicles of critical road conditions — such as accidents, roadworks, or obstacles — enhancing road safety through timely, location-specific alerts.

To ensure interoperability and consistent behavior across systems, organizations like C-Roads and the Car-2-Car Communication Consortium (C2C) profile DENM use cases. This profiling defines precise requirements and usage scenarios, supporting harmonized implementations across different platforms and vendors.

In the scenario shown in Figure 1, this setup enables emergency vehicles to broadcast alerts while responding to incidents. A connected motorcycle running the Emergency Vehicle Approaching (EVA) application receives these DENMs and notifies the rider of the emergency vehicle’s presence and approach path — improving safety and facilitating better road coordination.

Emergency Vehicle Approaching
Figure 1: Emergency Vehicle Approaching (Source: https://www.cmc-info.net/applications.html).

DENM functionalities can be seamlessly integrated and deployed using the cube-its framework, which utilizes Vanetza for V2X (Vehicle-to-Everything) communication. The framework is ROS (Robot Operating System)-compatible, making it a powerful tool for integrating C-ITS services into advanced robotics, research platforms, and real-world deployments in traffic management systems.

To demonstrate the ease of implementation, we’ve released a sample DENM application using Python with cube-its. This example illustrates how to transmit DENMs in line with the C2C and C-Roads profiles and provides a solid foundation for R&D or prototyping.

The sample script, denm_node.py, defines a ROS 2 node called denm_node (see Figure 2). This node manages both the transmission and reception of DENMs through the cube-its system. It processes positional data and incoming messages to react to environmental events and trigger new notifications when needed.

Overview DENM
Figure 2: Overview DENM (Source: https://github.com/cubesys-GmbH/ros_v2x_apps).

Subscriptions and Services

The denm_node interacts with other components via the following ROS 2 topics and services:

Subscriptions:

  • /its/position_vector: Receives regular updates about the current position, which are used to determine the relevance and content of outgoing DENMs.
  • /its/denm_received: Listens for incoming DENMs from other V2X-capable stations. These messages provide environmental context and may trigger internal logic or warnings.

Services:

  • /its/den_request: Used to request the transmission of a DENM. While typically an on-demand feature triggered by specific events, in this example, the node periodically sends DENMs based on updated position data.

For the complete implementation and additional code examples, visit our GitHub repository.

Happy coding!