• Stars
    star
    572
  • Rank 77,995 (Top 2 %)
  • Language
    Python
  • Created over 6 years ago
  • Updated almost 3 years ago

Reviews

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

Repository Details

ROS package for dynamic obstacle avoidance for ground robots trained with deep RL

cadrl_ros (Collision Avoidance with Deep RL)

ROS implementation of a dynamic obstacle avoidance algorithm trained with Deep RL 20 agent circle

Paper:

M. Everett, Y. Chen, and J. P. How, "Motion Planning Among Dynamic, Decision-Making Agents with Deep Reinforcement Learning", IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS), 2018

Paper: https://arxiv.org/abs/1805.01956 Video: https://www.youtube.com/watch?v=XHoXkWLhwYQ

Bibtex:

@inproceedings{Everett18_IROS,
  address = {Madrid, Spain},
  author = {Everett, Michael and Chen, Yu Fan and How, Jonathan P.},
  booktitle = {IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS)},
  date-modified = {2018-10-03 06:18:08 -0400},
  month = sep,
  title = {Motion Planning Among Dynamic, Decision-Making Agents with Deep Reinforcement Learning},
  year = {2018},
  url = {https://arxiv.org/pdf/1805.01956.pdf},
  bdsk-url-1 = {https://arxiv.org/pdf/1805.01956.pdf}
}

Dependencies:

  • TensorFlow is required (tested with version 1.4.0)

  • numpy is required

  • ROS is optional (tested with Kinetic on Ubuntu 16.04)

  • ford_msgs if you're using ROS, for our custom msg definitions.

General Notes:

The main contribution of this software is the network.py file and trained model parameters (TensorFlow checkpoints). Those contain the policy as reported in our paper and enables other reasearchers to easily compare future algorithms.

To make it easy to understand the flow of the code, we provide an example in scripts/ga3c_cadrl_demo.ipynb, in the form of a Jupyter notebook. This can be used just as a reference, but if you want to edit the file, make sure Jupyter is installed in your tensorflow virtualenv to be sure it will work.

To Run Jupyter Notebook (minimum working example of algorithm)

This assumes you have nvidia-docker installed already. Might work with regular docker with minor changes.

git clone [email protected]/mfe7/cadrl_ros
./cadrl_ros/docker/build_docker.sh
./cadrl_ros/docker/run_docker.sh

That will start an instance of the docker container, and output a Jupyter notebook URL. Copy the URL into a browser, navigate to cadrl_ros/scripts and open ga3c_cadrl_demo.ipynb.

Tensorflow and other deps are already installed in the docker container you just built, so the notebook should "just work."

ROS Notes:

We also provide a ROS implementation that we tested on a Clearpath Jackal ground robot. This node is just one module of the software required for autonomous navigation among dynamic obstacles, and much of it is written as to integrate with our system. The ROS node as written may not be particularly useful for other systems, but should provide an example of how one might connect the modules to test our learned collision avoidance policy on hardware. For example, other systems likely have different representation formats for dynamic obstacles as extracted from their perception system, but it should be straightforward to just replace our cbClusters method with another one, as long as the same information makes it into the state vector when the policy is queried. We recommend looking at the Jupyter notebook first.

The algorithm was trained with goals set to be <10m from the agent's start position, so it would be necessary to provide this system with local subgoals if it were to be tested in a long journey. For short distances, say in an open atrium, this is probably not necessary.

To Run ROS version:

Clone and build this repo and its dependency (assume destination is ~/catkin_ws/src)

cd ~/catkin_ws/src
git clone [email protected]/mfe7/cadrl_ros
git clone [email protected]:acl-swarm/ford_msgs.git -b dev
cd ~/catkin_ws && catkin_make

Connect inputs/outputs of your system to launch/cadrl_node.launch

Subscribed Topics:
Published Topics:
  • ~nn_cmd_vel [geometry_msgs/Twist] Robot's commanded twist (linear, angular speed) according to network's output

  • The other published topics are just markers for visualization

    • ~pose_marker shows yellow rectangle at position according to ~pose
    • ~path_marker shows red trajectory according to history of ~pose
    • ~goal_path_marker shows blue arrow pointing toward position of commanded velocity 1 second into future
    • ~agent_markers shows orange cylinders at the positions/sizes of nearby agents
  • TODO: remove other_agents_marker, other_vels

Parameters:
  • ~jackal_speed Robot's preferred speed (m/s) - tested below 1.2m/s (and trained to be optimized near this speed)

Datasets:

As mentioned in the paper, we provide a few datasets that might be useful to researchers hoping to train NNs for collision avoidance. Please find the files in this Dropbox folder, along with instructions for use.

The test cases used in the paper are posted in this Dropbox folder. These contain initial positions, goal positions, preferred speed, radius settings for each test case, and are separated by number of agents. They were randomly generated in a way to produce reasonably interesting scenarios to evaluate the algorithms, but since they are random, some may be really easy or boring.

Primary code maintainer:

Michael Everett (https://github.com/mfe7)

More Repositories

1

faster

3D Trajectory Planner in Unknown Environments
C++
949
star
2

mader

Trajectory Planner in Multi-Agent and Dynamic Environments
C++
479
star
3

gym-collision-avoidance

OpenEdge ABL
246
star
4

clipper

graph-theoretic framework for robust pairwise data association
C++
219
star
5

panther

Perception-Aware Trajectory Planner in Dynamic Environments
C++
187
star
6

dpgo

Distributed Pose Graph Optimization
C++
181
star
7

mppi_numba

A GPU implementation of Model Predictive Path Integral (MPPI) control that uses a probabilistic traversability model for planning risk-aware trajectories.
Jupyter Notebook
179
star
8

rl_collision_avoidance

Training code for GA3C-CADRL algorithm (collision avoidance with deep RL)
Python
118
star
9

rmader

Decentralized Multiagent Trajectory Planner Robust to Communication Delay
C++
72
star
10

minvo

Simplexes with Minimum Volume Enclosing Polynomial Curves
MATLAB
71
star
11

aclswarm

MIT ACL distributed formation flying using multirotors
C++
67
star
12

nfl_veripy

Formal Verification of Neural Feedback Loops (NFLs)
Python
63
star
13

dpgo_ros

ROS wrapper for distributed pose graph optimization
C++
59
star
14

deep_panther

C++
51
star
15

clear

CLEAR algorithm for multi-view data association
MATLAB
35
star
16

planning

List of planning algorithms developed at MIT-ACL
34
star
17

puma

PUMA: Fully Decentralized Uncertainty-aware Multiagent Trajectory Planner with Real-time Image Segmentation-based Frame Alignment
C++
27
star
18

fastsam_ros

ROS wrapper for FastSAM, with docker
Python
17
star
19

separator

Linear separability (via planes) of two sets of 3D points
C++
12
star
20

dc2g

Planning Beyond the Sensing Horizon Using a Learned Context
Python
10
star
21

gym-minigrid

Python
10
star
22

SOS-Match

JavaScript
10
star
23

yolov7_ros

ROS wrapper for YOLOv7, with docker
Python
9
star
24

dc2g_public

Deep Cost-to-Go Planning Algorithm (IROS '19)
9
star
25

iscp_path_planner

Iterative sequential convex programming path planner, from Steven and Mark's ICRA 2015 paper
Python
4
star
26

panther_extra

Python
1
star
27

murp-datasets

Jupyter Notebook
1
star
28

motlee

Multiple Object Tracking with Localization Error Elimination
Python
1
star
29

mit-acl.github.io

SCSS
1
star