Bosch has open sourced a true zero-copy middleware for inter-process communication
on modern robotics and vehicle computers. The shared memory based
solution is compatible with Linux/QNX and achieves data independent communication
in constant time without serializing data. We would like to present our
recent development towards an open-source release and demonstrate our performance
and timing benchmarks on a privately developed embedded robot.
On FOSDEM 2018 Bosch presented OpenADx, an initiative to collaborate and accelerate
the development of automated driving with the open source community.
On FOSDEM 2020 we would like to present the first project under the OpenADx
umbrella called Eclipse iceoryx TM.
Over the course of its company history, Bosch could establish a solid understanding
of the needs and requirements of the automotive domain in terms of liability,
reliability, safety and determinism. In a time where highly automated driving hits
the road, these aspects become more and more important. An automated driving
kit is a networked system that processes a sensor data stream in the range
of GBytes/s. This naturally arises the need of an efficient and lightweight data
transfer mechanism. Our group at Bosch has its main focus on tackling exactly
this challenge. In order to approach the problem of distributing the high frequency,
high throughput data streams on fusion and planning computers, weβve developed
a solution which can guarantee a time constant communication channel independently
of the size of data to be transported. Our approach is based on shared
memory which allows for transparently connecting the same range of memory
between multiple processes and thus enables a true zero-copy communication.
Given the nature of shared memory, an efficient data transport can thus be realized
solely by passing pointers to memory addresses from publishers to subscribers.
iceoryx is fully compatible with the ROS2 and Adaptive AUTOSAR APIs
and can be used as an implementation for both.