I would like to know if anyone has tried ROS2 for a Multi-Robot System, either in hardware or simulator. It would be great if someone could share their experience. I am trying to evaluate the possibility and challenges in using ROS2 for a Multi-Robot System to accomplish a collaborative task.
Hey! I am starting to look into this over the next few months, with the goal of doing it in both simulation and hardware.
My group’s initial thought is to use the ROS 2-1 bridge to control the robot with ROS 1, and then have whitelisted topics transmitted via ROS 2 for a distributed, decentralized multiagent system. Once I start looking at this more in the next month I’ll have more information about what works/doesn’t work.
Thanks @yatesco. I look forward to reading your findings.
How do you plan to co-ordinate between multiple robots, a) Have a centralized entity that talks to all the robots and sends out command for each of them OR b) Have some kind of peer to peer communication between robots to co-ordinate and take action.
We’re going to focus on a distributed, peer to peer communication. This way, we can showcase a fully distributed system where each robot will have their own maps, nav stack, etc, and can make decisions independent of the other agents.
@yatesco you might find helpful to know that ros2/navigation2 now supports having multiple robots in the same ROS domain navigating independently.
We’re also considering implementing a few other multi-robot features: https://github.com/ros-planning/navigation2/issues/1245
Let us know if you’d like to see any of these or have other ideas.
It is fantastic for multi-agent systems. I have used multiple turtlebot 3 robots using ROS2 dashing and it is a real breeze to get them all up and running. I have even crated a guide on how to give them all different namespaces, which is the sort of challenge you may face if you decide to use turtlebots. Do be aware that the biggest limitation I have run into so far is device drivers for some hardware, but it isn’t too bad. Another is the lack of multi-robot launching from a single launch file. You will need to make launch files generic enough that they can be launched with a couple arguments from a bash script. There is ongoing work to update the
launch command with remote machine launching capabilities, so keep an eye out for that.
A recent experiment of mine had multiple turtlebots sharing images with one another for topological mapping.