How eCAL relates to ROS
How eCAL relates to ROS#
Every so often, the question arises how eCAL relates to ROS. Both systems aim to provide interprocess communication based on Publish/Subscribe and Service/Client patterns. ROS1 had been available before the eCAL project was started; ROS2 was published before eCAL was released as an open source project. This section will shed some light on the motivation behind eCAL as well as how eCAL differs from ROS. It by no means provides a fully-fledged comparison of the two systems nor does it provide any benchmarks. However, it can guide the interested reader to decide if indeed eCAL may be a better fit than ROS for their use case.
Motivation for creating eCAL#
eCAL was developed by Continental out of the need of a communication middleware solution. At that time, ROS1 was not considered to be a suitable choice for the following reasons
Lack of Windows support
ROS1 doesn’t support the Windows operating system, which was a hard requirement at the time
Data throughput not high enough
ROS1 communication is based on TCP only, for both local and distributed communication. This limits the communication bandwidth for local communication compared to shared memory transport.
Lack of message downward/upward compatibility
eCAL was developed with rapid prototyping scenarios in mind. In these scenarios, datatypes usually evolve frequently. In ROS however changing message descriptions will usually render any legacy publisher / subscriber, as well as any existing rosbag useless. Especially not being able to use old recordings later was not acceptable.
eCAL was then build with these three features in mind.
How eCAL differs from ROS(2) today#
eCAL and ROS have both evolved over the years. With ROS2 came Windows support, and the ROS RMW concept allows for more flexible transport concepts.
As eCAL focuses on message transport, while ROS focuses on API and tools, it is possible to use eCAL as middleware layer in ROS via the rmw_ecal!
However, there are two key factors which sets eCAL apart from ROS today:
eCAL is message protocol agnostic
eCAL transports binary data that the user provides via the API. Thus, there is no coupling to the definition and serialization of those messages. This allows eCAL to be used in conjunction with many serialization libraries such as Protobuf, Flatbuffers, Capnproto or MessagePack. The developers can choose one with their requirements in mind, like backwards compatibility, fast serialization, or easy indexing.
ROS’s IDL system on the other hand is directly tied into ROS and cannot be exchanged. Even though the rmw (and therefore the serialization) can now be interchanged, tools like rosbag still cannot record the binary data and therefore not provide backwards compatibility.
eCAL is a library (+ tools) while ROS is an ecosystem
eCAL was build with modularity and ease of integration in mind. When building communication components, they only need to link to the eCAL core library. eCAL tools may be installed in addition.
ROS on the other hand comes with a complete ecosystem, bundling C++ libraries, providing its own build system. While this can be seen as an advantage for inexperienced users, it might make ROS harder to integrate into already existing ecosystems.
There are also some additional points which set both frameworks apart:
eCAL can create distributed recordings
In distributed scenarios with high data throughput it is essential to create distributed recordings where data is recorded on the host where it is created. eCAL Recorder can record in a distributed manner, and later merge recordings. These recordings can then be played back synchronized.
eCAL communication is brokerless
eCAL does not need a broker for tasks to communicate with each other. All necessary information is exchanged via UDP on a dedicated “monitoring layer”.
To use ROS or eCAL?#
Which project is the best fit for a given user highly depends on the use case. Usually, it is a good advice to continue using a framework you already know, until you hit its limits.
We recommend eCAL for scenarios where high bandwidth matters, as it usually performs much better than most stock RMWs.