• Stars
    star
    108
  • Rank 319,407 (Top 7 %)
  • Language
    C++
  • License
    BSD 2-Clause "Sim...
  • Created almost 6 years ago
  • Updated almost 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A simulation system based on ROS and Gazebo which is specially built for multi-robot task allocation (exploration and destruction problem)

Dynamic_task_allocation

We built a simulation environment combining the Robot Operating System (ROS) with Gazebo, which is suitable for dynamic multi-robot task allocation. The simulation system adopts distributed programming, i.e., each simulated robot runs the whole program independently under different ROS nodes. In this way, the simulation system is close to the real environment, featuring communication delay, world model synchronization and other common problems of distributed systems. The map size, the number of tasks and the number of robots, etc. can be customized.

Runtime environment

Branch master :

  1. Ubuntu 16.04
  2. ROS Kinetic
  3. Python 3.5
  4. Gazebo version 7.0 (the full ROS Kinetic includes the Gazebo 7.0)

Branch 18.04_melodic :

  1. Ubuntu 18.04
  2. ROS Melodic
  3. Python 3.5
  4. Gazebo version 9.0 (the full ROS Melodic includes the Gazebo 9.0)

Build

Place the package in your workspace content, and then:

$ cd dynamic_allocation

$ catkin_make --pkg allocation_common

$ catkin_make

Run

roscore

We need to initiate a roscore in any path with the following command:

$ roscore

dpn_ros

The Deep Q-learning network is built with tensorflow (Python), and we need to launch it separately:

$ export PYTHONPATH="Your_path"+/dynamic_allocation/devel/lib/python2.7/dist-packages:$PYTHONPATH

$ cd dynamic_allocation/src/DQN/srcipts/

$ python3 train.py

If you do not need the approach with DQN, you can skip this step.

other nodes

We can launch the other nodes by using a single launch file:

$ cd dynamic_allocation/

$ source devel/setup.sh

$ roslaunch allocation_common dynamic_allocation.launch

Now, you can see a QT Gui for control terminal and the simulation environment in Gazebo:

Framework of simulation system

There are six components included in the simulation system:

  1. allocation common: including the core definitions, ROS messages and ROS services that the simulation system used;
  2. allocation gazebo: including the model plug-ins and world plug-in which implement the model control and state feedback in Gazebo;
  3. control terminal: the QT GUI with control buttons and information browsers, it is convenient for user operation and state visualization;
  4. DQN: Deep Q-learning network built with tensorflow;
  5. gazebo description: describing the robot model, task model and world of allocation with sdf;
  6. task allocation: the core program that contains the auction-based, vacancy chain and deep Q-learning approach.

The rosgraph of the simulation system with two robots:

How to use

The nodes in this system exchange information using topics and services. Each simulated robot is associated with a task_allocation node, and the communication becomes more complicated with more robots. The simulation system is a simplified environment for exploration and destruction problem, where the blue areas are the suspicious locations that need to be explored. A robotic team collaborates to complete the exploration and destruction tasks. Before the mission starts, we need to set some parameters in advance:

  • Height and width: the map size for this exploration;
  • Number of tasks and robots: the number of the suspicious locations in the map and the number of robots in the team;
  • Strike ability: the strike ability Pi of each robot;
  • Noise: whether to add Gaussian noise to the localization of robots;
  • Starting point: whether to start at a random position, and if not, all robots start from the lower left point of the map;
  • Approach: which approach is used in task allocation: auction-based, vacancy chain, deep Q-learning);
  • Probability or Greed: if using vacancy chain approach, the strategy for destruction task selection can be chosen from greedy and non-greedy;
  • Train and times: if using deep Q-learning approach, it is divided into two modes: training and testing. And the times of trainings can be set.

With this specially designed simulation system, it is very convenient to complete the simulation experiment of dynamic task allocation for the MRS. It can also be extended for other multi-robot scenarios.

video example

Notice

If you make use of this work, please cite my paper: Dai W, Lu H, Xiao J, et al. Multi-Robot Dynamic Task Allocation for Exploration and Destruction[J]. Journal of Intelligent & Robotic Systems, 2020, 98(2): 455-479.

More Repositories

1

InsMOS

[IROS23] InsMOS: Instance-Aware Moving Object Segmentation in LiDAR Data
Python
108
star
2

simatch

[RoboCup-China]δΈ­ε›½ζœΊε™¨δΊΊε€§θ΅›δΉ‹δΈ­εž‹η»„δ»ΏηœŸζ―”θ΅›η¨‹εΊ. Simulation Software for China Robotics Competition
C++
84
star
3

LCR-Net

[TRO] Fast and Accurate Deep Loop Closing and Relocalization for Reliable LiDAR SLAM
64
star
4

T-Hybrid-planner

[IROS23] Hybrid Map-Based Path Planning for Robot Navigation in Unstructured Environments
C++
60
star
5

ElC-OIS

[IROS23] Ellipsoidal Clustering for Open-World Instance Segmentation on LiDAR Data
Python
59
star
6

SG-D3QN

Robot Navigation in a Crowd by Integrating Deep Reinforcement Learning and Online Planning
Python
56
star
7

MDGAT-matcher

[RAL] Keypoint Matching for Point Cloud Registration Using Multiplex Dynamic Graph Attention Networks
Python
37
star
8

RDMNet

[TITS] reliable dense matching based point cloud registration for autonomous driving
Python
37
star
9

gazebo_visual

The simulation system based on ROS and Gazebo for RoboCup Middle Size Leage
C++
24
star
10

single_nubot_gazebo

Single robot basic motions simulation under Gazebo
C++
21
star
11

BCI_Multi_Robot

The human will use BCI to participate in the multi-robot strategy selection and control a single-robot at any time. For this purpose, a specific simulation system has been developed, which composed of: a non-invasive BCI Emotiv Epoc; a Graphical User Interface (GUI) based on QT; a multi-robot simulation environment based on Gazebo (open-source 3D robotics simulator).
C++
21
star
12

TD-NeRF

[IROS24] TD-NeRF: Novel Truncated Depth Prior for Joint Camera Pose and Neural Radiance Field Optimization
20
star
13

nubot_ws

[RoboCup] Code for RoboCup Middle Size League Competition by NuBot team from National University of Defense Technology
C++
15
star
14

HGAT-DRL

Python
14
star
15

NuBot_Rescue_Gazebo

C++
13
star
16

TSCM

[ICRA24] TSCM: A Teacher-Student Model for Vision Place Recognition Using Cross-Metric Knowledge Distillation
Python
13
star
17

task_allocation_gazebo

The code for task allocation and the simulation system based on ROS and Gazebo for task allocation are included
C++
12
star
18

Biologically-Inspired-Visual-Odometry

C++
6
star
19

CASRL

Code for paper A Safe Reinforcement Learning Approach to Autonomous Navigation of Mobile Robots in Dynamic Environments
6
star
20

SegNet4D

[Under review] SegNet4D: Effective and Efficient 4D LiDAR Semantic Segmentation in Autonomous Driving Environments
6
star
21

FTR-Benchmark

Python
5
star
22

PIFT

Perspective Invariant Feature Tranform: a novel RGB-D local feature
C++
5
star
23

DOSS

A Novel Decomposed Feature-Oriented Framework for Open-Set Semantic Segmentation on LiDAR Data
5
star
24

HRVO-RGBD

Hybrid Residuals based RGBD Visual Odometry
C++
4
star
25

RSS_LOAM_Datasets

3
star
26

SFEMOS

3
star
27

KPAttenNet

kernel-based attention network for point cloud compression
2
star
28

coach4sim

Coach for Gazebo simulation
C++
2
star
29

MSL_models15

Three Gazebo models: field, goal and football according to MSL rules
1
star
30

Steering_wheel_with_7Dof_arm_sim

Project of Steering wheel in coppeliasim.
C++
1
star