Introduction to Eclipse iceoryx: a safe IPC framework for autonomous robots and cars (Simon Hoinkis, Christian Eltzschig) [FOSDEM 2020]

link slides

iceoryx was developed in Bosch since two years and was open-sourced last year. It is now an independent project. It is an IPC mechanism meant for autonomous cars.

In autonomous driving, you need to transport large amounts of data (10Gbps) with low latency. A typical middleware will copy published inputs and then copy them out to subscribers. This is performance and latency overhead. In iceoryx, the broker daemon (RouDi) is only involved during registration. For the actual communication, the applications work independently.

The data is allocated from shared memory, written once, and never copied. Reference counting is used to automatically recycle the memory. Thus, the latency is independent of the message size.

iceoryx is apache 2.0 licensed and written in C++11. It uses lockfree algorithms. It is better to not use it directly, but to use a higher-level API like ROS2 or eCal.

iceoryx strives for the highes automotive safety standard. Determinism is the key to achieve this, so allocate upgront from static memory pools, and no exceptions. Lock-free programming is hard.

Some upcoming features are:

  • n-to-1 communication, i.e. multi-publisher.
  • request-response communication. -language binding.
  • Integration with Cyclone DDS.
  • Windows and MacOS support.

There was a demonstration with the Larry robot, an open hardware DIY kit.