diff --git a/README.md b/README.md index e498671..e625dda 100644 --- a/README.md +++ b/README.md @@ -96,23 +96,26 @@ A typical usage is to run 1 bridge in a robot, and 1 bridge in another host moni It's important to make sure that NO DDS communication can occur between 2 hosts that are bridged by `zenoh-bridge-ros2dds`. Otherwise, some duplicate or looping traffic can occur. To make sure of this, you can either: - - define `ROS_LOCALHOST_ONLY=1` + - define `ROS_LOCALHOST_ONLY=1`. + Preferably, enable MULTICAST on the loopback interface with this command (on Linux): `sudo ip l set lo multicast on` - use different `ROS_DOMAIN_ID` on each hosts - - use a `CYCLONEDDS_URI` that configures CycloneDDS to only use internal interfaces to the robot. - For instance for Turtlebot4 which embedds 2 hosts interconnected via USB: + - use a `CYCLONEDDS_URI` that configures CycloneDDS to only use internal interfaces to the robot. This configuration has to be used for all ROS Nodes as well as for the bridge. + For instance for Turtlebot4 which embeds 2 hosts interconnected via USB: ```xml - - + + + + true - ``` + ``` On the robot, run: - `zenoh-bridge-dds -l tcp/0.0.0.0:7447` @@ -125,7 +128,6 @@ On the operating host run: - `ros2 action list` - Other interconnectivity between the 2 bridges can be configured (e.g. automatic discovery via UDP multicast, interconnection via 1 or more Zenoh routers...). See the [Zenoh documentation](https://zenoh.io/docs/getting-started/deployment/) to learn more about the possibile deployments allowed by Zenoh. diff --git a/zenoh-plugin-ros2dds/src/lib.rs b/zenoh-plugin-ros2dds/src/lib.rs index 9444ef2..a244628 100644 --- a/zenoh-plugin-ros2dds/src/lib.rs +++ b/zenoh-plugin-ros2dds/src/lib.rs @@ -95,7 +95,7 @@ zenoh::kedefine!( // CycloneDDS' localhost-only: set network interface address (shortened form of config would be // possible, too, but I think it is clearer to spell it out completely). // Empty configuration fragments are ignored, so it is safe to unconditionally append a comma. -const CYCLONEDDS_CONFIG_LOCALHOST_ONLY: &str = r#","#; +const CYCLONEDDS_CONFIG_LOCALHOST_ONLY: &str = r#","#; // CycloneDDS' enable-shm: enable usage of Iceoryx shared memory #[cfg(feature = "dds_shm")]