/rl-collision-avoidance

Implementation of the paper "Towards Optimally Decentralized Multi-Robot Collision Avoidance via Deep Reinforcement Learning"

Primary LanguagePython

rl-collision-avoidance

This is a Pytorch implementation of the paper Towards Optimally Decentralized Multi-Robot Collision Avoidance via Deep Reinforcement Learning

Requirement

How to train

You may start with training in Stage1 and when it is well-trained you can transfer to Stage2 base on the policy model of Stage1, this is exactly what Curriculum Learning means. Training Stage2 from scratch may converge at a lower performance or not even converge. Please note that the motivation of training in Stage2 is to generalize the model, which hopefully can work well in real environment.

Please use the stage_ros-add_pose_and_crash package instead of the default package provided by ROS.

mkdir -p catkin_ws/src
cp stage_ros-add_pose_and_crash catkin_ws/src
cd catkin_ws
catkin_make
source devel/setup.bash

To train Stage1, modify the hyper-parameters in ppo_stage1.py as you like, and running the following command:

(leave out the -g if you want to see the GUI while training)
rosrun stage_ros_add_pose_and_crash stageros -g worlds/stage1.world
mpiexec -np 24 python ppo_stage1.py

To train Stage2, modify the hyper-parameters in ppo_stage2.py as you like, and running the following command:

rosrun stage_ros_add_pose_and_crash stageros -g worlds/stage2.world
mpiexec -np 44 python ppo_stage2.py

How to test

rosrun stage_ros_add_pose_and_crash stageros worlds/circle.world
mpiexec -np 50 python circle_test.py

Notice

I am not the author of the paper and not in their group either. You may contact Jia Pan (jpan@cs.hku.hk) for the paper related issues. If you find it useful and use it in your project, please consider citing:

@misc{Tianyu2018,
	author = {Tianyu Liu},
	title = {Robot Collision Avoidance via Deep Reinforcement Learning},
	year = {2018},
	publisher = {GitHub},
	journal = {GitHub repository},
	howpublished = {\url{https://github.com/Acmece/rl-collision-avoidance.git}},
	commit = {7bc682403cb9a327377481be1f110debc16babbd}
}