LCAS / limo_ros2

limo ros2 packages
2 stars 9 forks source link

[FEAT]: Multi robot using Zenoh #19

Open jondave opened 9 months ago

jondave commented 9 months ago

Description

To run zenoh on multiple robots and interact with a single zenoh server need to change the line in the docker compose file and add a namespace e.g. limo number. -n /limo_1522 Topics on the server are /namespace/topic e.g. /limo_1522/imu

command: bash -c "source /opt/ros/lcas/install/setup.bash; (zenoh-bridge-ros2dds -n /limo_1522 -l tcp/0.0.0.0:8888 &); (ros2 launch astra_camera dabai.launch.py &); ros2 launch limo_bringup limo_start.launch.py"

Tried this with two limos and the topic data lags quite a bit.

This is more for Leonardo in ROB1001 for two limo robots to communicate with each other.

Additional Information

No response

marc-hanheide commented 9 months ago

I'd suggest making the namespace an environment variable option which by default is no namespace. We could support a special keyword,.e.g. hostname which automatically will take the value of the $HOSTNAME?

marc-hanheide commented 9 months ago

see #20

jondave commented 9 months ago

I'm thinking about what @LeonardoGuevara wants to do with the limos, have two limos communicate with each other. E.g. limo 1 publishes a topic and limo 2 subscribes to it.

marc-hanheide commented 9 months ago

Does it work at all or not? It may be best if we deploy a zenoh server just like we do with mqtt, and let all robots connect to that with their namespace

jondave commented 9 months ago

As a quick "fix" you can launch zenoh bridge zenoh-bridge-ros2dds -e tcp/10.82.0.XXX:8888 -n /limo_XXX inside the container on Limo 1 with the IP address of Limo 2. Just change the namespace -n otherwise the topics interfere with each other. Limo 1 can publish a topic and Limo 2 can subscribe to it or vice versa. You can run zenoh bridge on a lab PC and connect to either Limo 1 or Limo 2 and subscribe to the topic published by Limo 1. Hopeful this is useful for @LeonardoGuevara

LeonardoGuevara commented 9 months ago

Sounds exactly like what we need the students to do, I will try it on Monday with the Limos.

jondave commented 9 months ago

As a quick "fix" you can launch zenoh bridge zenoh-bridge-ros2dds -e tcp/10.82.0.XXX:8888 -n /limo_XXX inside the container on Limo 1 with the IP address of Limo 2. Just change the namespace -n otherwise the topics interfere with each other. Limo 1 can publish a topic and Limo 2 can subscribe to it or vice versa. You can run zenoh bridge on a lab PC and connect to either Limo 1 or Limo 2 and subscribe to the topic published by Limo 1. Hopeful this is useful for @LeonardoGuevara

@marc-hanheide This won't work we need to set up a zenoh server/router for this to work properly as @LeonardoGuevara wants four limos to communicate with each other.