-
Notifications
You must be signed in to change notification settings - Fork 9
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
1 changed file
with
33 additions
and
32 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -11,7 +11,9 @@ | |
|
||
**ROS / ROS 2 Support for ETSI ITS Messages for V2X Communication** | ||
|
||
The *etsi_its_messages* package stack allows to use standardized ETSI ITS messages for V2X communication in ROS / ROS 2 systems. Message definitions and conversion functions can be generated automatically based on the ASN.1 definition. Apart from the definition of ROS message equivalents to the ETSI ITS standards, this package stack also includes a conversion node for serializing the messages to and from a UDP payload, as well as RViz plugins for visualization (ROS 2 only). | ||
The *etsi_its_messages* package stack allows to use standardized ETSI ITS messages for V2X communication in ROS / ROS 2 systems. Apart from the definition of ROS message equivalents to the ETSI ITS standards, this package stack also includes a conversion node for serializing the messages to and from a UDP payload, as well as RViz plugins for visualization (ROS 2 only). | ||
|
||
All message definitions and conversion functions are automatically generated based on the [ASN.1 definitions](https://forge.etsi.org/rep/ITS/asn1) of the standardized ETSI ITS messages. | ||
|
||
> [!IMPORTANT] | ||
> This repository is open-sourced and maintained by the [**Institute for Automotive Engineering (ika) at RWTH Aachen University**](https://www.ika.rwth-aachen.de/). | ||
|
@@ -37,19 +39,22 @@ The *etsi_its_messages* package stack allows to use standardized ETSI ITS messag | |
|
||
 | ||
|
||
The figure above describes the present framework, which can be divided into code generation and runtime application. A given ASN.1 definition can be used to generate both, corresponding C-structures and ROS message definitions, as well as conversion functions to generate appropriate ROS messages out of the C-structures and vice versa. | ||
The core concept of the *etsi_its_messages* is to automatically generate the ROS support code based on the [ASN.1 definitions](https://forge.etsi.org/rep/ITS/asn1) of the standardized ETSI ITS messages *(CodeGen)*. The ROS support then allows ROS applications to not only natively use corresponding ETSI ITS message types, but to also exchange encoded ETSI ITS message payloads with the world outside of ROS *(Runtime)*. | ||
|
||
A given ASN.1 definition is used to generate corresponding C-structures, ROS message definitions, as well as conversion functions between those two formats. | ||
|
||
During runtime, the `etsi_its_conversion` ROS node converts incoming UDP payloads into corresponding ROS messages and vice versa. The ROS equivalents of the ETSI ITS messages can be used in any downstream ROS applications or visualized using the provided RViz plugins. | ||
|
||
The core of the runtime application is the etsi_its_conversion-node which converts incoming UDP payload into corresponding ROS messages and vice versa. The ROS equivalents of the ETSI ITS messages can be used in various processing ROS applications or, for example, visualized using the provided RViz plugins. | ||
|
||
## Supported ETSI ITS Messages | ||
|
||
| Status | Acronym | Name | Version | Definition | | ||
| --- | --- | --- | --- | --- | | ||
| :white_check_mark: | CAM | Cooperative Awareness Message | 1.4.1 | [Link](https://www.etsi.org/deliver/etsi_en/302600_302699/30263702/01.04.01_60/en_30263702v010401p.pdf) | | ||
| :white_check_mark: | DENM | Decentralized Environmental Notification Message | 1.3.1 | [Link](https://www.etsi.org/deliver/etsi_en/302600_302699/30263703/01.03.01_60/en_30263703v010301p.pdf) | | ||
| :soon: | MAPEM | Map Extended Message | - | - | | ||
| :soon: | SPATEM | Signal Phase and Timing Extended Message | - | - | | ||
| :soon: | CPM | Collective Perception Message | - | - | | ||
| Status | Acronym | Name | Version | Definition | Repository | | ||
| --- | --- | --- | --- | --- | --- | | ||
| :white_check_mark: | CAM | Cooperative Awareness Message | 1.4.1 | [Link](https://www.etsi.org/deliver/etsi_en/302600_302699/30263702/01.04.01_60/en_30263702v010401p.pdf) | [Link](https://forge.etsi.org/rep/ITS/asn1/cam_en302637_2) | | ||
| :white_check_mark: | DENM | Decentralized Environmental Notification Message | 1.3.1 | [Link](https://www.etsi.org/deliver/etsi_en/302600_302699/30263703/01.03.01_60/en_30263703v010301p.pdf) | [Link](https://forge.etsi.org/rep/ITS/asn1/denm_en302637_3) | | ||
| :soon: | MAPEM | Map Extended Message | - | - | - | | ||
| :soon: | SPATEM | Signal Phase and Timing Extended Message | - | - | - | | ||
| :soon: | CPM | Collective Perception Message | - | - | - | | ||
|
||
|
||
## Packages | ||
|
@@ -81,7 +86,7 @@ In addition, the `etsi_its_msgs` contains header-only libraries providing helpfu | |
|
||
#### Automated Generation | ||
|
||
The ROS message files are auto-generated based on the ASN.1 definition of the ETSI ITS message standards. | ||
The ROS message files are auto-generated based on the [ASN.1 definitions](https://forge.etsi.org/rep/ITS/asn1) of the ETSI ITS message standards. Note that the ASN.1 definitions are preprocessed to only include types relevant for the particular message type. | ||
|
||
```bash | ||
# etsi_its_messages$ | ||
|
@@ -91,15 +96,13 @@ The ROS message files are auto-generated based on the ASN.1 definition of the ET | |
-o etsi_its_msgs/etsi_its_cam_msgs/msg | ||
``` | ||
|
||
(To do: short explanation and motivation of `reduceAsn1ToTypeDependencies.py`) | ||
|
||
### `etsi_its_coding` | ||
|
||
The `etsi_its_coding` metapackage includes one dedicated package for each ETSI ITS message type, e.g., `etsi_its_cam_coding`. These packages provide C++ libraries containing a `struct` implementation of the ETSI ITS message types including functions for encoding and decoding the structures to binary buffers. | ||
|
||
#### Automated Generation | ||
|
||
The C/C++ implementation of the message types is auto-generated based on the ASN.1 definition of the ETSI ITS message standards, using the [ASN.1 Compiler asn1c](https://github.com/vlm/asn1c). | ||
The C/C++ implementation of the message types is auto-generated based on the [ASN.1 definitions](https://forge.etsi.org/rep/ITS/asn1) of the ETSI ITS message standards, using the [ASN.1 Compiler asn1c](https://github.com/vlm/asn1c). Note that the ASN.1 definitions are preprocessed to only include types relevant for the particular message type. | ||
|
||
```bash | ||
# etsi_its_messages$ | ||
|
@@ -156,7 +159,7 @@ rosrun nodelet nodelet standalone etsi_its_conversion/Converter _etsi_type:=auto | |
|
||
#### Automated Generation | ||
|
||
The C++ conversion functions are auto-generated based on the ASN.1 definition of the ETSI ITS message standards. | ||
The C++ conversion functions are auto-generated based on the [ASN.1 definitions](https://forge.etsi.org/rep/ITS/asn1) of the ETSI ITS message standards. Note that the ASN.1 definitions are preprocessed to only include types relevant for the particular message type. | ||
|
||
```bash | ||
# etsi_its_messages$ | ||
|
@@ -207,48 +210,46 @@ docker run --rm ghcr.io/ika-rwth-aachen/etsi_its_messages:ros2 | |
docker run --rm ghcr.io/ika-rwth-aachen/etsi_its_messages:ros | ||
``` | ||
|
||
|
||
## Acknowledgements | ||
|
||
This work is accomplished within the projects 6GEM (FKZ 16KISK036K), AUTOtech.agil (FKZ 01IS22088A), and AIthena (101076754). We acknowledge the financial support for the projects by the Federal Ministry of Education and Research of Germany (BMBF) :de:. Moreover this work has received funding from the European Union’s Horizon Europe Research and Innovation Programme :eu: under Grant Agreement No 101076754 - AIthena project. | ||
This work is accomplished within the projects 6GEM (FKZ 16KISK036K) and AUTOtech.agil (FKZ 01IS22088A). We acknowledge the financial support for the projects by the *Federal Ministry of Education and Research of Germany (BMBF)* :de:. | ||
|
||
Moreover, this work has received funding from the *European Union’s Horizon Europe Research and Innovation Programme* :eu: under Grant Agreement No 101076754 - AIthena project. | ||
|
||
|
||
## References | ||
Used software packages in the `etsi_its_messages` repository and their license. | ||
|
||
*For full license details please refer to the specific license files of the specific packages.* | ||
This repository uses the following software. For full license details, please refer to the specific license files of the respective software. | ||
|
||
* [asn1c](https://github.com/vlm/asn1c) | ||
- [asn1c](https://github.com/vlm/asn1c) | ||
``` | ||
BSD 2-Clause License | ||
Copyright (c) 2003-2017 Lev Walkin <[email protected]> and contributors. | ||
All rights reserved. | ||
``` | ||
* [asn1tools](https://github.com/eerimoq/asn1tools) | ||
- [asn1tools](https://github.com/eerimoq/asn1tools) | ||
``` | ||
MIT License | ||
Copyright (c) 2017-2019 Erik Moqvist | ||
``` | ||
* [ETSI ITS ASN1](https://forge.etsi.org/rep/ITS/asn1) | ||
- [ETSI ITS ASN1](https://forge.etsi.org/rep/ITS/asn1) | ||
``` | ||
BSD 3-Clause License | ||
Copyright (c) ETSI | ||
``` | ||
* [GeographicLib](https://github.com/geographiclib/geographiclib) | ||
``` | ||
- [GeographicLib](https://github.com/geographiclib/geographiclib) | ||
``` | ||
MIT License | ||
Copyright (c) 2008-2023, Charles Karney | ||
``` | ||
* [ROS](https://www.ros.org/) | ||
``` | ||
- [ROS](https://www.ros.org/) | ||
``` | ||
BSD 3-Clause License | ||
All rights reserved. | ||
``` | ||
* [ROS 2](https://www.ros2.org/) | ||
- [ROS 2](https://www.ros2.org/) | ||
``` | ||
Apache 2.0 License | ||
All rights reserved. | ||
``` | ||
``` |