Repository Summary
| Description | PoC SOME/IP to ROS2 topics |
| Checkout URI | https://github.com/miketsukerman/vsomeip-ros-bridge.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2024-04-24 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Tags | someip ros2 |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| gnss_bridge | 0.0.1 |
| gnss_listener | 0.0.1 |
| gnss_provider | 0.0.1 |
| gnss_someip_lib | 0.0.1 |
README
ROS SOME/IP bridge
Proof of concept project which tries to create a bridge between vsomeip / common-api and ROS linux environment.
Problem definition
Make SOME/IP data available in ROS2 natively.
Simulation
To simulate real GPS/GNSS data coming from the receiver we would use gpsfake tool together with a text file
containing small set of real NMEA messages. Can be obtained from https://www.nmeagen.org/.
Architecture
- We would use open source SOME/IP stack implementation (COVESA/GENIVI)
-
gpsddaemon +gpsfakeutility - SOME/IP broadcast’s published as ROS2 topics.

UDS = Unix Domain Socket (used by GENIVI stack for communication between router and clients on localhost)
Limitations
We will limit our scope by making available only SOME/IP broadcast messages as topics, with string messages which contain data in json format.
Open points
- Parse FIDL/FDEPL files to generate bridge glue code automatically
- Add support for different data types (i.e. ROS topic datatypes)
- Think of potential configuration (mapping between topics and SOME/IP events)
- Think how to handle outgoing data (requests)
- Think how to handle attributes
How it works
To simulate remote ECU which broadcasts GNSS data over the network using
UDP packets with SOME/IP serialised payload we would use dedicated docker container Docker.server.
At the same time to receive those PDUs we would run another dedicated docker container Docker.client.
to run the setup simply execute (tested in ubuntu 20.04):
make run
to rebuild the contains without running execute:
make compose
Development
To simplify compilation and testing of the changes there is possibility to enter docker container, using:
make enter-build-env
then you can use shortcuts like
make colcon-build
to build all packages in the repository. Or, if you like to build them separately use
make gnss-provider
make gnss-bridge
make gnss-someip-lib
make gnss-listener
Tips
I will put here some tips / tricks to not to forget.
Cleanup docker networks
docker network prune
Links
- https://colcon.readthedocs.io/en/released/user/how-to.html
- https://hub.docker.com/_/ros
- https://docs.ros.org/en/foxy/Tutorials/Composition.html
- https://docs.ros.org/en/foxy/Tutorials/Topics/Understanding-ROS2-Topics.html
- https://docs.ros.org/en/foxy/Tutorials/Understanding-ROS2-Nodes.html