Since ROS is an open source operating system, there are a lot of packages being developed every day. Our aim is to use as many available packages as possible and not reinvent the something that was created already. The resources that we looked into are map merging, exploration movement algorithms and multi-robot publisher.
Luckily for us, there are already such packages available, which are:
- explore_multirobot http://wiki.ros.org/explore_multirobot
- map_merging http://wiki.ros.org/map_merger
- tf_splitter http://wiki.ros.org/tf_splitter
- pose_publisher http://wiki.ros.org/pose_publisher
Map_merger
This is a package that will allow us to merge
multiple maps; It can distribute the data live and create a live global map. In
the example below you can see a map created by two robots:
The map_merger node offers the following features:
- Attempting to merge local maps received by other robots by
computing a transformation between the coordinate systems of the robots.
- Allowing other packages to transform coordinates between
different coordinate systems of multiple robots.
- Maps are merged pair-wise.
- Automatically attempts to determine the transformation
between coordinate systems and attempts to continuously improve the
transformation based on a quality metric.
Upon updates of the local map only parts of the map that
have changed are distributed minimizing transmission overhead.
Storage of map updates sent to other robots for
retransmissions.
- Keeps track of received map updates distributed by other
robots. If missing map updates are detected, the map_merger node automatically
requests retransmission of the missing updates.
In
the picture below you can see an example of the nodes that participate in map
merging:
Explore_multirobot
This package is responsible for movement decision of multiple robots. It can subscribe to additional topics such as map and goal. This package can work with different type of robots, and different type of odometry data.
This package is responsible for movement decision of multiple robots. It can subscribe to additional topics such as map and goal. This package can work with different type of robots, and different type of odometry data.
Tf_splitter
The tf_splitter package contains a ROS node that decomposes
the /tf topic into multiple ones according to the number of robots. This
package can be used in multi-robot systems to alleviate the network traffic
load.
More information and documentation can be found on the link provided in the beginning of this post
More information and documentation can be found on the link provided in the beginning of this post
------------------------------------------------------------------------------------------------