{"id":45687716,"url":"https://github.com/eclipse-ecal/rmw_ecal","last_synced_at":"2026-02-24T15:09:45.856Z","repository":{"id":39711854,"uuid":"291032130","full_name":"eclipse-ecal/rmw_ecal","owner":"eclipse-ecal","description":"ROS2 middleware based on eCAL","archived":false,"fork":false,"pushed_at":"2023-09-28T03:09:18.000Z","size":277,"stargazers_count":59,"open_issues_count":9,"forks_count":13,"subscribers_count":6,"default_branch":"master","last_synced_at":"2024-06-11T20:16:34.760Z","etag":null,"topics":["ecal","middleware","rmw","ros2"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/eclipse-ecal.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-08-28T11:41:52.000Z","updated_at":"2024-06-11T20:16:34.760Z","dependencies_parsed_at":"2023-02-15T06:46:38.281Z","dependency_job_id":null,"html_url":"https://github.com/eclipse-ecal/rmw_ecal","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/eclipse-ecal/rmw_ecal","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eclipse-ecal%2Frmw_ecal","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eclipse-ecal%2Frmw_ecal/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eclipse-ecal%2Frmw_ecal/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eclipse-ecal%2Frmw_ecal/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/eclipse-ecal","download_url":"https://codeload.github.com/eclipse-ecal/rmw_ecal/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eclipse-ecal%2Frmw_ecal/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29786987,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-24T10:45:18.109Z","status":"ssl_error","status_checked_at":"2026-02-24T10:45:09.911Z","response_time":75,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ecal","middleware","rmw","ros2"],"created_at":"2026-02-24T15:09:45.119Z","updated_at":"2026-02-24T15:09:45.851Z","avatar_url":"https://github.com/eclipse-ecal.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# eCAL ROS2 middleware layer\n![Build](https://github.com/eclipse-ecal/rmw_ecal/actions/workflows/ros_ci.yml/badge.svg)\n\nROS2 middleware based on eCAL.\n\n**NOTE:** Minimun eCAL compatible with RMW is 5.10.\n\neCAL RMW can offer:\n\n* High performance (shared memory is used for inter-process communication and udp multicast for inter-host communication)\n* 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\n* Communication between ROS2 nodes and eCAL tasks without need for a gateway\n\n## rmw_ecal is looking for a maintainer\n\nWe (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**! 🫵\n\nYou can help by:\n- Testing it with the latest ROS versions\n- Creating Pull requests\n- Answering other users' questions\n\nIf you would like to actively maintain this project, feel free to contact us 😊\n\n_We are not abandoning this project and are happy to help and resolve any eCAL related issues._\n\n## Build instructions\n\n* Install [eCAL](https://eclipse-ecal.github.io/ecal/getting_started/setup.html)\n* Clone latest release of this repository into your [ROS2 workspace](https://index.ros.org/doc/ros2/Tutorials/Workspace/Creating-A-Workspace/)\n* Source ROS2\n```bash\n# On Linux\nsource /path/to/your/ros/distro/folder/setup.bash\n# On Windows\ncall C:/path/to/your/ros/distro/folder/setup.bat\n```\n* Run `colcon build` from your workspace folder\n* Setup your workspace\n```bash\n# On Linux\nsource /path/to/your/workspace/install/setup.bash\n# On Windows\ncall C:/path/to/your/workspace/install/setup.bat\n```\n\n## How to use\nThere are currently two rmw implementations\n* rmw_ecal_dynamic_cpp\n* rmw_ecal_proto_cpp\n\n### rmw_ecal_dynamic_cpp\nrmw_ecal_dynamic_cpp uses custom dynamic typesupport which is builtin into rmw.  \nTo use this implementation just set variable RMW_IMPLEMENTATION to \"rmw_ecal_dynamic_cpp\".  \n\nRun all nodes using rmw_ecal_dynamic_cpp\n```bash\n# On Linux\nexport RMW_IMPLEMENTATION=rmw_ecal_dynamic_cpp\n# On Windows\nset RMW_IMPLEMENTATION=rmw_ecal_dynamic_cpp\n```\nRun specific node (in this example demo_nodes_cpp talker) using \n```bash\nRMW_IMPLEMENTATION=rmw_ecal_dynamic_cpp ros2 run demo_nodes_cpp talker\n```\n\nPros:\n* Faster than rmw_ecal_proto_cpp \n* Plug\u0026Play doesn't require any additional steps/ros packages to work\n  \nCons:\n* 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)\n \n### rmw_ecal_proto_cpp\nrmw_ecal_proto_cpp uses protobuf based static typesupport.  \nTo 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\".  \n\nRun all nodes using rmw_ecal_proto_cpp\n```bash\n# On Linux\nexport RMW_IMPLEMENTATION=rmw_ecal_proto_cpp\n# On Windows\nset RMW_IMPLEMENTATION=rmw_ecal_proto_cpp\n```\nRun specific node (in this example demo_nodes_cpp talker) using \n```bash\nRMW_IMPLEMENTATION=rmw_ecal_proto_cpp ros2 run demo_nodes_cpp talker\n```\nPros:\n* Integrates well into eCAL ecosystem (monitor will show actual message data and native eCAL nodes will be able to deserialize its messages)\n\nCons:\n* A bit slower than rmw_ecal_dynamic_cpp\n* Not plug\u0026play, requires [rosidl_typesupport_protobuf](https://github.com/eclipse-ecal/rosidl_typesupport_protobuf) to be built and sourced to work\n\n## Zero copy support\n[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.\nYou can enable it by adding this config to ecal.ini\n\n```ini\n[publisher]\nmemfile_zero_copy = 1\n```\n\n## Currently supported ROS2 distributions\n\n* Foxy Fitzroy\n* Galactic Geochelone\n* Humble Hawksbill\n\n## Legacy ROS2 distributions\n\n* [Dashing Diademata](https://github.com/eclipse-ecal/rmw_ecal/tree/legacy/dashing)\n* [Eloquent Elusor](https://github.com/eclipse-ecal/rmw_ecal/tree/legacy/eloquent)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feclipse-ecal%2Frmw_ecal","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feclipse-ecal%2Frmw_ecal","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feclipse-ecal%2Frmw_ecal/lists"}