Fixed-Map Exploration Through a Robotic Swarm
The aim of this project was to build a simulation with up to 4 robots implementing the Node counting algorithm (a simple graph-traversal method) in order to autonomously map the fixed-lenght environment in which they are spawned, along with the obstacles contained in it, to a fully connected graph shared representation. The architecture implements a distributed control approach, with the only centralized node which integrates the data sent by each autonoumous robot.
Note: a demo.mkv
demonstration video is available in the main folder.
Implementation
Assumptions
In order to implement this architecture some assumptions were made:
- The map and the corresponding graph are constructed by the robots as they explore their surrounding environment, by placing a -1 in the position of the obstacle detected.
- The distances between nodes is equal to 1 meter.
- A node is set as "visited" if the robot is at a distance > 0.2 meter from the node.
- At the beginning of the simulation, the robots could be in random positions, but thery are always outside the graph.
- All free nodes should be visited by at least one robot.
- The algorithm has to be robust to variation of the maps (size and obstacles), of the starting position of the robot and of the number of robots.
- The robots use to detect obstacoles in run-time, and they are not informed of the position of other robots by the centralized node
Ros Package
The developed package is divided in the following folders:
urdf
folder with.xacro
robot descriptionlaunch
folder with relative launchfiles setting up the simulation environment with different number of robots (empty world), taking as input the starting position of each robot (a launch file for each different number of robots).src
code implementing the algorithm (taking as input a text file with the map/graph description).
Software prerequisites:
- ROS kinetic, to download it follow this guide.
- GAZEBO robotic simulator for ROS, to download it follow this guide.
How to run the project
- Clone this repository in your workspace through the command
git clone
- Launch the desired launchfile through one of the following command
1 robot
roslaunch node_counting_alg spawn1-hol.launch
4 robots
roslaunch node_counting_alg spawn4-hol.launch
Authors
- Davide Lanza - davidel96@hotmail.it
- Alberto Ghiotto - alberto.ghiotto@hotmail.it
- Alberto Grillo - albogrillo@gmail.com
EMARO Advanced Robotics Master - 2nd year
University of Genoa