In our December 2019 newsletter issue, Michael Pöhnl wrote an article explaining the basics of the Eclipse iceoryx technology. Now that Eclipse iceoryx 1.0.0 (Almond) has been released, we thought we should catch up with Michael to learn more about what’s new and noteworthy in this first major release.
Here’s an edited version of our conversation.
Q. What are the most important things for developers to know about the Eclipse iceoryx Almond release?
A. There are a couple of things. For the first time, we have a release with stable APIs for the community to use, and we have long-term support in place. This long-term support is particularly important for our second major piece of news, which is that Eclipse iceoryx is now integrated into the latest release of the Robot Operating System (ROS) 2, which is called Galactic Geochelone. The integration into ROS 2 means the iceoryx technology can now be used by a community of several hundred thousand robotics developers.
Q. The Eclipse Cyclone DDS technology is also integrated into ROS 2. What is the relationship between the two projects?
A. ROS 2 is a framework that allows you to plug in different communications middleware.
Eclipse iceoryx is inter-process-communication (IPC) middleware for operating systems such as Linux, macOS, and QNX, and it’s used for communications on a single device. Eclipse Cyclone DDS is middleware that’s designed for communications over a network stack. This is less efficient when you have to transfer large amounts of data between processes on a single device. Previously, you had to choose one or the other. Now, you can combine the two technologies to have the best of both worlds in ROS 2.
Q. What are the key features in the Almond release that made ROS 2 integration possible?
A. We had to ensure that iceoryx could support multiple data writers and readers. In the past, iceoryx was primarily used in the automotive industry, where there was typically one data writer and several readers — one-to-many communications. That’s too restrictive for ROS 2, where many-to-many communications capabilities are needed.
We also had to support additional operating systems, such as macOS, and we’re working to add Windows support. These operating systems are not typically used on computers in cars, which is where iceoryx has traditionally been used.
Q. In addition to the ROS 2-specific enhancements, what other new features will developers benefit from in the new release?
A. iceoryx is written in modern C++, so, we’re using the latest capabilities in the C++ guidelines, but it also supports C. This is important if you want to integrate iceoryx into frameworks that are written in C, or are using Python, or another language. With our class architecture and the C API, it’s easier to integrate iceoryx into a broad range of frameworks. This flexibility is one of its greatest strengths.
Q. Is Eclipse iceoryx integrated into frameworks other than ROS 2?
A. Yes. Whether frameworks are proprietary or open source, they all need communications middleware. For example, iceoryx is integrated into an open source framework called eCAL, which is managed by Continental, one of the world’s largest automotive suppliers. In fact, Continental was able to integrate iceoryx in just a few days with no outside assistance. We often receive feedback that integration and getting started is quite easy and well-documented.
It’s also integrated into several AUTOSAR Adaptive platforms. AUTOSAR is an open system architecture for the automotive industry.
Q. Can I use Eclipse iceoryx on its own, or should I use it as part of a framework?
A. It depends on the use case. We designed and implemented the iceoryx technology so you can use it as a standalone technology as well as in frameworks. For example, if you’re writing software for a single device that doesn’t have to communicate with other devices, then iceoryx is all you need. But it doesn’t provide a rich set of tooling.
In a framework like ROS 2, you have access to many more tools for designing applications, debugging, and recording and replaying data.
Q. It sounds like iceoryx can be used for a wide variety of applications. What are some of the use cases?
A. Because the iceoryx technology can communicate data without ever making a copy of the data, it’s ideal wherever you have large amounts of data and need high-performance communications. It could be a gaming system, a robotics system, or an automated driving system.
It’s particularly good for safety-critical automotive systems. In software for these systems, memory is not typically allocated during runtime, it’s allocated at startup. You have to take a more fixed approach to memory because it’s a real-time system with determinism constraints. We’ve continued with this philosophy and are very careful to ensure there are no deadlocks, which would be a problem in safety-critical environments.
The technology is already quite widely used in the automotive industry. The predecessor to iceoryx, which was proprietary software, is running in the driver assistance system in millions of cars. Eclipse iceoryx is used by ETAS, which provides solutions and services for embedded automotive systems, and by Continental, which is using it in the eCAL framework for pre-development of their automated driving system. Several companies that have adopted the AUTOSAR Adaptive standard are using it. And, of course, a production-ready, automotive-grade version of the iceoryx software is integrated into our suite of products at Apex.AI.
Q. What are your next steps with Eclipse iceoryx?
A. We’d like to find out whether there are other projects within the Eclipse Foundation community that could take advantage of the zero-copy, shared memory transport that iceoryx provides.
The technology is already in Eclipse DDS Cyclone, and we’ve started discussions with the Eclipse zenoh developers, but maybe there are other frameworks or simulation technologies that have to deal with the challenge that iceoryx solves. We would love for the developers on these projects to get in touch with us. Our mailing list, iceoryx-dev@eclipse.org, or our Gitter channel at gitter.im/eclipse/iceoryx, are good ways to do that.
In the long run, iceoryx is striving to comply with the highest safety level in the automotive industry, ISO 26262 ASIL D. We will continue to work toward this goal.
Q. How can people get involved in Eclipse iceoryx?
A. We invite everyone to provide feedback on the software and to join the iceoryx community. We’re using GitHub discussions, and we have a bi-weekly developer meeting.
Learn More
To learn more about Eclipse iceoryx and get started with the software, visit iceoryx.io.