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)
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)
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 runto rebuild the contains without running execute:
make composeTo simplify compilation and testing of the changes there is possibility to enter docker container, using:
make enter-build-envthen 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-listenerI will put here some tips / tricks to not to forget.
docker network prune