Home

Awesome

eCAL ROS2 middleware layer

Build

ROS2 middleware based on eCAL.

NOTE: Minimun eCAL compatible with RMW is 5.10.

eCAL RMW can offer:

rmw_ecal is looking for a maintainer

We (the Eclipse eCAL Team) have reached our maximum capacity. Therefore, we currently cannot support this project as well as we would like to and need your help! 🫵

You can help by:

If you would like to actively maintain this project, feel free to contact us 😊

We are not abandoning this project and are happy to help and resolve any eCAL related issues.

Build instructions

# On Linux
source /path/to/your/ros/distro/folder/setup.bash
# On Windows
call C:/path/to/your/ros/distro/folder/setup.bat
# On Linux
source /path/to/your/workspace/install/setup.bash
# On Windows
call C:/path/to/your/workspace/install/setup.bat

How to use

There are currently two rmw implementations

rmw_ecal_dynamic_cpp

rmw_ecal_dynamic_cpp uses custom dynamic typesupport which is builtin into rmw.
To use this implementation just set variable RMW_IMPLEMENTATION to "rmw_ecal_dynamic_cpp".

Run all nodes using rmw_ecal_dynamic_cpp

# On Linux
export RMW_IMPLEMENTATION=rmw_ecal_dynamic_cpp
# On Windows
set RMW_IMPLEMENTATION=rmw_ecal_dynamic_cpp

Run specific node (in this example demo_nodes_cpp talker) using

RMW_IMPLEMENTATION=rmw_ecal_dynamic_cpp ros2 run demo_nodes_cpp talker

Pros:

Cons:

rmw_ecal_proto_cpp

rmw_ecal_proto_cpp uses protobuf based static typesupport.
To use this implementation setup rosidl_typesupport_protobuf and set variable RMW_IMPLEMENTATION to "rmw_ecal_proto_cpp".

Run all nodes using rmw_ecal_proto_cpp

# On Linux
export RMW_IMPLEMENTATION=rmw_ecal_proto_cpp
# On Windows
set RMW_IMPLEMENTATION=rmw_ecal_proto_cpp

Run specific node (in this example demo_nodes_cpp talker) using

RMW_IMPLEMENTATION=rmw_ecal_proto_cpp ros2 run demo_nodes_cpp talker

Pros:

Cons:

Zero copy support

eCAL 5.10 introduced zero copy support for publishers, it's currently disabled by default since it's still in experimental stage. You can enable it by adding this config to ecal.ini

[publisher]
memfile_zero_copy = 1

Currently supported ROS2 distributions

Legacy ROS2 distributions