/elastic_formation_for_swarm_robotics

Code of Elastic Formations as Dynamic Boundaries for Potential Fields in Swarm Robotics

Primary LanguageC++

elastic_formation_for_swarm_robotics

Code of Autonomous Navigation of Robot Swarms Defining Elastic Formations as Dynamic Boundaries for Potential Fields, paper submit to CASE 2023 by Letícia dos Santos, Mathias Fassini Mantelli, Edson Prestes, Mariana Kolberg and Renan Maffei.

Video of a test with two real robots

The real test code is in a branch.

🤖 Any questions or problems with the code of this repository, please contact us by email: lsantos@inf.ufrgs.br

Install the dependences and packages

For the turtlebot3:

$ sudo apt-get install ros-noetic-joy ros-noetic-teleop-twist-joy \
  ros-noetic-teleop-twist-keyboard ros-noetic-laser-proc \
  ros-noetic-rgbd-launch ros-noetic-rosserial-arduino \
  ros-noetic-compressed-image-transport ros-noetic-rqt* ros-noetic-rviz \
  ros-noetic-gmapping ros-noetic-navigation ros-noetic-interactive-markers

Install TurtleBot3 Packages

$ sudo apt install ros-noetic-dynamixel-sdk
$ sudo apt install ros-noetic-turtlebot3-msgs
$ sudo apt install ros-noetic-turtlebot3

For the simulation:

$ cd ~/catkin_ws/src/
$ git clone -b noetic-devel https://github.com/ROBOTIS-GIT/turtlebot3_simulations.git

For other packages:

$ sudo apt-get install ros-noetic-actionlib ros-noetic-costmap-2d \
  ros-noetic-move-base-msgs ros-noetic-nav-msgs \
  ros-noetic-navfn ros-noetic-roscpp \
  ros-noetic-tf2 ros-noetic-tf2-ros \
  ros-noetic-rospy

For teb:

$ sudo apt-get install ros-noetic-teb-local-planner

For the paper pakages:

$ cd ~/catkin_ws/src/
$ git clone https://github.com/LeDSantos/elastic_formation_for_swarm_robotics.git

Execute the simulation

Choose the simulation scenario (House or Columns) and the formation configurations at central_control.cpp. You can also change configuration parameters of the individual robots at move_robot.cpp.

Compile:

$ cd ~/catkin_ws
$ catkin_make

Prepare the environment:

Run in each terminal that will be used:

source devel/setup.bash
export TURTLEBOT3_MODEL=burger

Unzip models.zip, place the bigRoomTurtle folder in the Gazebo's building_editor_models folder and cylinders in the Gazebo's model_editor_models folder. These models are used at the Columns scenario.

Compile:

catkin_make ## in project folder

Execute:

To start gazebo and rviz:

roslaunch multiple_turtlebots_nav simulation_(house or columns).launch ## there are some rviz configs at src/multiple_turtlebots_nav/navigation

To start the metrics:

roslaunch metrics metrics.launch environment:="(house or columns)" ## THIS IS OPTIONAL

To start central control and 3 robots:

roslaunch central_control run_central_and3robots.launch

Useful commands:

To create new map:

roslaunch multiple_turtlebots_nav map_new_room.launch

To save the map after mapping:

rosrun map_server map_saver