peci1
May 13, 2025, 10:03am
1
Okay, found it right in the README … Shame on me
RMW for ROS 2 using Zenoh as the middleware
To directly connect to a router running on the robot, just do this:
ZENOH_CONFIG_OVERRIDE='mode="client";connect/endpoints=["tcp/192.168.1.1:7447"]' ros2 run rqt_image_view rqt_image_view
Alternatively, run a router on your laptop that communicates with the robot’s router:
ZENOH_CONFIG_OVERRIDE='connect/endpoints=["tcp/192.168.1.1:7447"]' ros2 run rmw_zenoh_cpp rmw_zenohd
And then all other ROS 2 commands work without anything special.
A downside I found is that you can’t enter hostname in the endpoint.
1 Like
Definitely possible to use hostnames in the endpoint, this all-in-one command is what we use to bridge from a router running on a remote robot (va0003) to the local router on the dev machine.
podman run -it --init --pull=newer --cgroups=split --tz=local --ipc=host --net=host --dns=127.0.0.53 docker.io/eclipse/zenoh --cfg='listen/endpoints:[]' --cfg='connect/endpoints:["tcp/localhost:7447","tcp/va0003:7447#iface=tailscale0"]' --cfg='scouting/multicast/enabled:false'
Could you be running a particularly old version?
peci1
May 21, 2025, 7:43pm
3
I’m using the RMW-bundled Zenoh. Could the problem be in using the Avahi .local address?
It should just work if you have NSS configured correctly.
What distro are you using? Are you running in containers or not?