I’m trying to solve the problem of setting up a virtual environment for multiple robots easily. This is to help work with the problems of path planning around other robots in the fleet ( the classic problem of having your own two robots getting stuck in front of each other ), and getting started with building central fleet management applications.
We’ve just open-sourced code at https://github.com/aws-samples/multi-robot-fleet-sample-application and wanted to see what this community thought about it.
The code is built on the following assumptions:
- Path planning around robots in your own fleet requires the robots to “see” each other through its sensors, and communicate with each other via a central server or directly.
- In most cases, we are interested in knowing that a collision has occurred in simulation and not necessarily how the robots physics responded after the collision. We can infer collisions this from the position information itself if needed.
- Namespacing and accommodating different planners/localization for robots in a heterogeneous fleet can require a learning curve.
- Easy way to get the ground truth location and navigation location is helpful to evaluate localization algorithms.
- Folks who work on central fleet management and client facing applications require an easy way to setup a fleet of robots without worrying about the underlying robotics/rospackages.
The code is built on husky simulation, and spins up multiple gazebo simulations with one robot in each sim. The communication happens through rosbridge. We basically grab the location data of the robot in its gazebo environment, and use that data to move a static model via a gazebo plugin to mirror its location in the other simulations. More information at the README.
The end result looks something like so
The code can be easily launched on laptops that are the same network ( good time to use the spare computers that have been pulled out from robots and are sitting on a rack ), and if you’ve got an AWS account, you have cloudformation/setup available to kick things off with just a couple commands. I was able to setup upto 5 robots pretty easily.
The ROS related code for setting this up is at this location in the repository. Please do check it out and let us know what you think and especially if it can be improved!