Proof of concept project which tries to create a bridge between vsomeip / common-api and ROS linux environment.
Make SOME/IP data available in ROS2 natively.
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/.
- We would use open source SOME/IP stack implementation (COVESA/GENIVI)
gpsd
daemon +gpsfake
utility- SOME/IP broadcast's published as ROS2 topics.
UDS = Unix Domain Socket (used by GENIVI stack for communication between router and clients on localhost)
We will limit our scope by making available only SOME/IP broadcast messages as topics, with string messages which contain data in json format.
- 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
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
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
I will put here some tips / tricks to not to forget.
docker network prune