KO
|
EN
gitlite — search
Search
#typescript
#ai-agents
#ai
#dsh-plugin
#deepseek-harness
#open-source
#claude-code
#codex
#cli
#developer-tools
#react
#windows
rmw_ecal
★ 76
Open GitHub ↗
ROS2 middleware based on eCAL
Download README (.md)
Explore Similar Repositories
ecal-rs
:
Rust bindings to the Eclipse eCAL API
ECALP
:
[ICLR 2025] Official repository for “Efficient and Context-Aware Label Propagation for Zero-/Few-Shot Training-Free Adaptation of Vision-Language Model”
eCAL
:
Simulator for the eCAL metric
rustecal
:
Idiomatic Rust bindings for eCAL.
ecal-core
:
📦 eCAL C/C++ runtime core
// repository documentation
Was this content helpful?
★ 0
(0 ratings)
Select Rating:
★
★
★
★
★
Submit Feedback
Recent Feedback
×
Download README
Do you want to download the
README.md
file for
rmw_ecal
?
Download (.md)
# eCAL ROS2 middleware layer  ROS2 middleware based on eCAL. **NOTE:** Minimun eCAL compatible with RMW is 5.10. eCAL RMW can offer: * High performance (shared memory is used for inter-process communication and udp multicast for inter-host communication) * Support for [eCAL](https://github.com/eclipse-ecal/ecal) ecosystem powerful tools like eCAL recorder, eCAL player, eCAL monitor, which can be used to record, replay and monitor RMW layer * Communication between ROS2 nodes and eCAL tasks without need for a gateway ## rmw_ecal is looking for a maintainer We (the [Eclipse eCAL Team](https://projects.eclipse.org/projects/automotive.ecal/who)) 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: - Testing it with the latest ROS versions - Creating Pull requests - Answering other users' questions 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 * Install [eCAL](https://eclipse-ecal.github.io/ecal/getting_started/setup.html) * Clone latest release of this repository into your [ROS2 workspace](https://index.ros.org/doc/ros2/Tutorials/Workspace/Creating-A-Workspace/) * Source ROS2 ```bash # On Linux source /path/to/your/ros/distro/folder/setup.bash # On Windows call C:/path/to/your/ros/distro/folder/setup.bat ``` * Run `colcon build` from your workspace folder * Setup your workspace ```bash # 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_proto_cpp ### 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 ```bash # 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 ```bash RMW_IMPLEMENTATION=rmw_ecal_dynamic_cpp ros2 run demo_nodes_cpp talker ``` Pros: * Faster than rmw_ecal_proto_cpp * Plug&Play doesn't require any additional steps/ros packages to work Cons: * Doesn't integrate well into eCAL ecosystem (monitor will only show binary data for messages and native eCAL nodes won't be able to deserialize its data) ### rmw_ecal_proto_cpp rmw_ecal_proto_cpp uses protobuf based static typesupport. To use this implementation setup [rosidl_typesupport_protobuf](https://github.com/eclipse-ecal/rosidl_typesupport_protobuf) and set variable RMW_IMPLEMENTATION to "rmw_ecal_proto_cpp". Run all nodes using rmw_ecal_proto_cpp ```bash # 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 ```bash RMW_IMPLEMENTATION=rmw_ecal_proto_cpp ros2 run demo_nodes_cpp talker ``` Pros: * Integrates well into eCAL ecosystem (monitor will show actual message data and native eCAL nodes will be able to deserialize its messages) Cons: * A bit slower than rmw_ecal_dynamic_cpp * Not plug&play, requires [rosidl_typesupport_protobuf](https://github.com/eclipse-ecal/rosidl_typesupport_protobuf) to be built and sourced to work ## Zero copy support [eCAL 5.10 introduced zero copy support for publishers](https://eclipse-ecal.github.io/ecal/advanced/layers/shm.html#zero-copy-mode-optional), it's currently disabled by default since it's still in experimental stage. You can enable it by adding this config to ecal.ini ```ini [publisher] memfile_zero_copy = 1 ``` ## Currently supported ROS2 distributions * Foxy Fitzroy * Galactic Geochelone * Humble Hawksbill ## Legacy ROS2 distributions * [Dashing Diademata](https://github.com/eclipse-ecal/rmw_ecal/tree/legacy/dashing) * [Eloquent Elusor](https://github.com/eclipse-ecal/rmw_ecal/tree/legacy/eloquent)