It is a ROS package that implements a SEAL: Simultaneous exploration and localization for multi-robot systems. It uses the Gaussian process model for environment scanning and occupancy girds as a map representation. This package has three different ROS nodes:
- SEAL graph node.
- SEAL Gaussian process node.
- SEAL convex hull node.
If you use this work, please cite our paper: E. Latif and R. Parasuraman, "SEAL: Simultaneous Exploration and Localization for Multi-Robot Systems," 2023 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS), Detroit, MI, USA, 2023, pp. 5358-5365, doi: 10.1109/IROS55552.2023.10342157.
IEEE Published version: https://ieeexplore.ieee.org/document/10342157 Preprint available at https://arxiv.org/abs/2306.12623
By creating a map using GP, robots first perform relative position-weighted connectivity graphs using RSSI as local sensor data, expanding these graphs based on potential positions at a particular location and then further optimizing to obtain relative position estimates for all connected robots; SEAL seeks to efficiently achieve high localization accuracy. Furthermore, robots also provide fused Gaussian process maps, which are then converted into global maps. SEAL applied convex hull optimization for boundary detection and navigated robots to unexplored boundaries. An overview of the SEAL can be found in the Figure below:
The overall functionality of SEAL with respect to single robot and information sharing can be seen in the architecture figure below:
- C++ requirements.
(pybind11 is also required, but it's built into this repository; you don't need to install) - python 3.6+
- Turtlebot Simulation Installation is required to launch turtlebot 3e for Gazebo simulation
- g2o installed
$ git clone https://github.com/uoip/g2opy.git
$ cd g2opy
$ mkdir build
$ cd build
$ cmake ..
$ make -j8
$ cd ..
$ python setup.py install
6-You should have/install the following python modules:
-OpenCV (cv2)
```sh
$ sudo apt-get install python-opencv
-Numpy
$ sudo apt-get install python-numpy
-Sklearn
$ sudo apt-get install python-scikits-learn
- add in the amazon world map by executing the following comments:
$ cd ~/catkin_explore/src
$ git clone https://github.com/aws-robotics/aws-robomaker-small-house-world.git
$ git clone https://github.com/aws-robotics/aws-robomaker-bookstore-world.git
$ cd ~/catkin_explore/
$ catkin_make
Download the package and place it inside the /src
folder in catkin workspace. And then compile using catkin_make
.
This package provides an exploration strategy for cooperative robot along with the multi-robot navigation stack configured move_base node.
For the cooperative robotic configuration, the package doesn't require special network configuration, it simply works by having a single ROS master (can be one of the robots). So on the other robots, the ROS_MASTER_URI
parameter should be pointing at the master's address.
For more information on setting up ROS on multiple machines, follow this link.
All robot's frames should be prefixed by its name. Naming of robots starts from "/tb3_0", "/tb3_1", ... and so on.
All the nodes and topics running on a robot must also be prefixed by its name. For tb3_0, node names should look like: /tb3_0/gp
.
And topic names should be like: /tb3_0/odom
, /tb3_0/gp
, /tb3_0/ch
, ..etc.
Each robot should have a Gaussian estimation map generated from the GPMix package.
For the multi-robot case, there is a node that convert all the GP maps into one occupancy map. You can use this package.
Run the SEAL package after installation on a robot and source bash and ~/catkin_explore/devel/setup.sh file:
$ mkdir -p catkin_explore/src
$ cd catkin_explore/src
$ git clone https://github.com/herolab-uga/ROS-SEAL.git
$ cd ~/catkin_explore/
$ catkin_make
$ roslaunch seal seal_bookstore.launch
-
Ehsan Latif, Ph.D. - Lab Alum
-
Dr. Ramviyas Parasuraman - Lab Director
Heterogeneous Robotics Lab (HeRoLab), School of Computing, University of Georgia.
For further information, contact Ehsan Latif ehsan.latif@uga.edu or Dr. Ramviyas Parasuraman ramviyas@uga.edu