{"id":18300544,"url":"https://github.com/eclipse-zenoh/zenoh-plugin-ros1","last_synced_at":"2025-04-05T14:30:41.463Z","repository":{"id":152866100,"uuid":"623515617","full_name":"eclipse-zenoh/zenoh-plugin-ros1","owner":"eclipse-zenoh","description":null,"archived":false,"fork":false,"pushed_at":"2025-04-02T00:15:24.000Z","size":2295,"stargazers_count":19,"open_issues_count":8,"forks_count":10,"subscribers_count":10,"default_branch":"main","last_synced_at":"2025-04-02T01:24:45.043Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/eclipse-zenoh.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-04-04T14:22:34.000Z","updated_at":"2025-03-20T14:38:45.000Z","dependencies_parsed_at":"2023-11-07T00:43:00.535Z","dependency_job_id":"5c983623-f6eb-475b-9868-fdfd9df0d1ab","html_url":"https://github.com/eclipse-zenoh/zenoh-plugin-ros1","commit_stats":null,"previous_names":[],"tags_count":60,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eclipse-zenoh%2Fzenoh-plugin-ros1","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eclipse-zenoh%2Fzenoh-plugin-ros1/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eclipse-zenoh%2Fzenoh-plugin-ros1/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eclipse-zenoh%2Fzenoh-plugin-ros1/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/eclipse-zenoh","download_url":"https://codeload.github.com/eclipse-zenoh/zenoh-plugin-ros1/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247352198,"owners_count":20925223,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":[],"created_at":"2024-11-05T15:12:46.541Z","updated_at":"2025-04-05T14:30:41.449Z","avatar_url":"https://github.com/eclipse-zenoh.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cimg src=\"https://raw.githubusercontent.com/eclipse-zenoh/zenoh/main/zenoh-dragon.png\" height=\"150\"\u003e\n\n\u003c!---\n[![CI](https://github.com/eclipse-zenoh/zenoh-plugin-ros1/workflows/Rust/badge.svg)](https://github.com/eclipse-zenoh/zenoh-plugin-ros1/actions?query=workflow%3ARust)\n---\u003e\n[![Discussion](https://img.shields.io/badge/discussion-on%20github-blue)](https://github.com/eclipse-zenoh/roadmap/discussions)\n[![Discord](https://img.shields.io/badge/chat-on%20discord-blue)](https://discord.gg/2GJ958VuHs)\n[![License](https://img.shields.io/badge/License-EPL%202.0-blue)](https://choosealicense.com/licenses/epl-2.0/)\n[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)\n\n# Eclipse Zenoh\n\nThe Eclipse Zenoh: Zero Overhead Pub/sub, Store/Query and Compute.\n\nZenoh (pronounce _/zeno/_) unifies data in motion, data at rest and computations. It carefully blends traditional pub/sub with geo-distributed storages, queries and computations, while retaining a level of time and space efficiency that is well beyond any of the mainstream stacks.\n\nCheck the website [zenoh.io](http://zenoh.io) and the [roadmap](https://github.com/eclipse-zenoh/roadmap) for more detailed information.\n\n-------------------------------\n\n# ROS1 to Zenoh Bridge plugin\n\n:point_right: **Install latest release:** see [below](#how-to-install-it)\n\n:point_right: **Docker image:** see [below](#docker-image)\n\n:point_right: **Build \"main\" branch:** see [below](#how-to-build-it)\n\n## Background\n\nROS1 is a well-known mature platform for building robotic systems. Despite the fact that next generation of ROS - ROS2 is released long time ago, many developers still prefer using ROS1. In order to integrate ROS1 systems to Zenoh infrastructure, [as it was done for DDS/ROS2](https://github.com/eclipse-zenoh/zenoh-plugin-dds), ROS1 to Zenoh Bridge was designed.\n\n## How to install it\n\nTo install the latest release of either the ROS1 plugin for the Zenoh router, either the `zenoh-bridge-ros1` standalone executable, you can do as follows:\n\n### Manual installation (all platforms)\n\nAll release packages can be downloaded from:\n\n- [https://download.eclipse.org/zenoh/zenoh-plugin-ros1/latest/](https://download.eclipse.org/zenoh/zenoh-plugin-ros1/latest/)\n\nEach subdirectory has the name of the Rust target. See the platforms each target corresponds to on [https://doc.rust-lang.org/stable/rustc/platform-support.html](https://doc.rust-lang.org/stable/rustc/platform-support.html)\n\nChoose your platform and download:\n\n- the `zenoh-plugin-ros1-\u003cversion\u003e-\u003cplatform\u003e.zip` file for the plugin.\n  Then unzip it in the same directory than `zenohd` or to any directory where it can find the plugin library (e.g. /usr/lib)\n- the `zenoh-bridge-ros1-\u003cversion\u003e-\u003cplatform\u003e.zip` file for the standalone executable.\n  Then unzip it where you want, and run the extracted `zenoh-bridge-ros1` binary.\n\n### Linux Debian\n\nAdd Eclipse Zenoh private repository to the sources list:\n\n```bash\necho \"deb [trusted=yes] https://download.eclipse.org/zenoh/debian-repo/ /\" | sudo tee -a /etc/apt/sources.list \u003e /dev/null\nsudo apt update\n```\n\nThen either:\n\n- install the plugin with: `sudo apt install zenoh-plugin-ros1`.\n- install the standalone executable with: `sudo apt install zenoh-bridge-ros1`.\n\n## How to build it\n\n\u003e :warning: **WARNING** :warning: : Zenoh and its ecosystem are under active development. When you build from git, make sure you also build from git any other Zenoh repository you plan to use (e.g. binding, plugin, backend, etc.). It may happen that some changes in git are not compatible with the most recent packaged Zenoh release (e.g. deb, docker, pip). We put particular effort in mantaining compatibility between the various git repositories in the Zenoh project.\n\u003e\n\u003e :warning: **WARNING** :warning: : As Rust doesn't have a stable ABI, the plugins should be\nbuilt with the exact same Rust version than `zenohd`, and using for `zenoh` dependency the same version (or commit number) than 'zenohd'.\nOtherwise, incompatibilities in memory mapping of shared types between `zenohd` and the library can lead to a `\"SIGSEV\"` crash.\n\u003e\n\u003e :warning: **WARNING** :warning: : We failed to build the plugin's tests on the system with 2(1)GB of RAM(swap) as ld ran out of memory, please pay attention to this fact!\n\nIn order to build the ROS1 to Zenoh Bridge, you need first to install the following dependencies:\n\n- [Rust](https://www.rust-lang.org/tools/install). If you already have the Rust toolchain installed, make sure it is up-to-date with:\n\n   ```bash\n   rustup update\n   ```\n\n- On Linux, make sure the `llvm` and `clang` development packages are installed:\n  - on Debians do: `sudo apt install llvm-dev libclang-dev`\n  - on CentOS or RHEL do: `sudo yum install llvm-devel clang-devel`\n  - on Alpine do: `apk install llvm11-dev clang-dev`\n\nOnce these dependencies are in place, you may clone the repository on your machine:\n\n```bash\ngit clone https://github.com/eclipse-zenoh/zenoh-plugin-ros1.git\ncd zenoh-plugin-ros1\ncargo build --release\n```\n\nThe standalone executable binary `zenoh-bridge-ros1` and a plugin shared library (`*.so` on Linux, `*.dylib` on Mac OS, `*.dll` on Windows) to be dynamically\nloaded by the zenoh router `zenohd` will be generated in the `target/release` subdirectory.\n\n## Docker image\n\nThe **`zenoh-bridge-ros1`** standalone executable is also available as a [Docker images](https://hub.docker.com/r/eclipse/zenoh-bridge-ros1/tags?page=1\u0026ordering=last_updated) for both amd64 and arm64. To get it, do:\n\n- `docker pull eclipse/zenoh-bridge-ros1:latest` for the latest release\n- `docker pull eclipse/zenoh-bridge-ros1:main` for the main branch version (nightly build)\n\nUsage: **`docker run --init --net host eclipse/zenoh-bridge-ros1`**\nIt supports the same command line arguments than the `zenoh-bridge-ros1` (see below or check with `-h` argument).\n\n## A quick test with built-in examples\n\nIf you want to run examples or tests, you need to install ROS1:\n\n```bash\nsudo apt install -y ros-base\n```\n\nThere is a set of example utilities illustrating bridge in operation.\nHere is a description on how to configure the following schema:\n\n```raw\n_____________________________                           ________________________________\n|                           |                           |                              |\n|        rosmaster_1        |                           |         rosmaster_2          |\n|                           |                           |                              |\n| ros1_publisher -\u003e zenoh-bridge-ros1 -\u003e zenoh -\u003e zenoh-bridge-ros1 -\u003e ros1_subscriber |\n|___________________________|                           |______________________________|\n```\n\n```bash\n# build the bridge from source\ncargo build -p zenoh-bridge-ros1\ncd target/debug/\n# terminal 1:\n./zenoh-bridge-ros1 --with_rosmaster true --ros_master_uri http://localhost:10000\n# terminal 2:\n./zenoh-bridge-ros1 --with_rosmaster true --ros_master_uri http://localhost:10001\n# terminal 3:\nROS_MASTER_URI=http://localhost:10000 rostopic pub /topic std_msgs/String -r 1 test_message\n# terminal 4:\nROS_MASTER_URI=http://localhost:10001 rostopic echo /topic\n```\n\nOnce completed, you will see the following exchange between ROS1 publisher and subscriber:\n\u003cimg src=\"ros_pubsub.png\"\u003e\n\n## Implementation\n\nCurrently, ROS1 to Zenoh Bridge is based on [rosrust library fork](https://github.com/ZettaScaleLabs/rosrust). Some limitations are applied due to rosrust's implementation details, and we are re-engineering rosrust to overcome this\n\n## Limitations\n\n- all topic names are bridged as-is\n- there is a performance impact coming from rosrust\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feclipse-zenoh%2Fzenoh-plugin-ros1","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feclipse-zenoh%2Fzenoh-plugin-ros1","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feclipse-zenoh%2Fzenoh-plugin-ros1/lists"}