Skip to content

ignc-research/arena-rosnav-3D

Repository files navigation

Important Updates (01/03/2023)!:

We have restructured, improved, and extended the whole codebase substantially. Therefore, we created a new organization at Aren-Rosnav. Please have a look at our new organization, which contains an improved version the arena-rosnav platform with multiple simulators along with a variety of other modules. As of 01/03/2023, this repository is not actively maintained anymore.

Arena-Rosnav-3D

This repository is the 3D version of the navigation platform arena-rosnav-2D. It is build on the 3D ROS simulator Gazebo and integrates with a modified Pedsim Simulator to provide realistic dynamic 3D scenarios and tasks to evaluate and and benchmark classic and learning-based ROS navigation approaches on multiple robot platforms. It is fully compatible with the planning algorithms trained and developed with arena-rosnav-2D. This presents an essential step in deploying the navigation approaches from arena-rosnav towards real robots.

Random task mode Arena Generated

The repo currently contains:

  • Local planners for dynamic obstacle avoidance: teb, dwa, mpc, cadrl (DRL), rlca(DRL), arena (DRL), rosnav (DRL)
  • Task generator with modes: random, scenario, manual, staged
  • Multiple detailed scenario-worlds
  • Robot models: turtlebot3_burger, ridgeback, jackal, agv-ota, Robotino(rto), youbot, turtlebot3_waffle_pi, Car-O-Bot4 (cob4), dingo
  • [Automated] Creation of random 3D-words with static and dynamic obstacles
  • Realistic behavior patterns and semantic states of dynamic obstacles (by including pedsim's extended social force model, extended with industrial classes)
  • Implementation of intermediate planner classes to combine local DRL planner with global map-based planners: Spatial Horizon, Space-Time, Subsampling
  • Integration with arena-tools map generator and LIRS-World_Construction_Tool. Providing seamless conversion from randomly generated ROS maps to actual Gazebo worlds.
  • "Random world" task mode, where with each Task reset, a new Gazebo world is loaded

If you find our repository helpful, please cite one of our papers

@inproceedings{kastner2021arena,
  title={Arena-Rosnav: Towards Deployment of Deep-Reinforcement-Learning-Based Obstacle Avoidance into Conventional Autonomous Navigation Systems},
  author={K{\"a}stner, Linh and Buiyan, Teham and Jiao, Lei and Le, Tuan Anh and Zhao, Xinlin and Shen, Zhengcheng and Lambrecht, Jens},
  booktitle={2021 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS)},
  pages={6456--6463},
  organization={IEEE}
}
@misc{arena-bench,
  doi = {10.48550/ARXIV.2206.05728},
  url = {https://arxiv.org/abs/2206.05728},
  author = {Kästner, Linh and Bhuiyan, Teham and Le, Tuan Anh and Treis, Elias and Cox, Johannes and Meinardus, Boris and Kmiecik, Jacek and Carstens, Reyk and Pichel, Duc and Fatloun, Bassel and Khorsandi, Niloufar and Lambrecht, Jens},
  title = {Arena-Bench: A Benchmarking Suite for Obstacle Avoidance Approaches in Highly Dynamic Environments},
  publisher = {arXiv},
  year = {2022}
}

1. Installation

Please refer to Installation.md for detailed explanations about the installation process.

NOTE: This repo is using ros-noetic and python 3.8

2. Usage

For more detailed explanations, we refer to Usage.md for command-line use, as well as detailed explanations about agent, policy and training setups.

Arena-rosnav-3D is structurally very similar to arena-rosnav to allow easy switching between 2D and 3D environments. Currently, a large number of custom worlds and a random world generator are supported. You can include dynamic obstacles either in a scenario mode or in a random mode where the dynamic obstacle trajectories are determined randomly.

Worlds

We provide the following worlds:

aws_house turtlebot3_house small_warehouse random world factory
hospital experiment_rooms bookstore turtlebot3_world

World generation with arena-tools and LIRS

By combining the random 2d map generation feature from our own arena-tools with the seamless image to Gazebo world conversion of LIRS_World_Construction_Tools we can test our navigation approaches on magnitude of 3D worlds, varying in layout, complexity. For more information on how to use this feature please refer to arena-tools. Otherwise, if you already have your own map image in mind, visit LIRS_World_Construction_Tools to gain information on how to convert it into a Gazebo world.


Robots

We support different robots:

turtlebot3_burger jackal ridgeback agv-ota
Robotino(rto) youbot turtlebot3_waffle_pi Car-O-Bot4 (cob4) dingo

All robots are equipped with a laser scanner. The robots differ in size, laser-range etc. See below table for more detailed information on each robot:

Name Max Speed (v_x) [m/s] Max Speed (v_y) [m/s] Max Rotational Speed (θ_y) [rad/s] Radius [m] Emergency-Stop¹ Laser-range [m] Holonomic²
turtlebot3-burger 0.22 0.0 2.84 0.113 True 3.5 False
jackal 2.0 0.0 4.0 0.267 True 30.0 False
ridgeback 1.1 0.5 2.0 0.625 True 10.0 True
agv-ota 0.5 0.0 0.4 0.629 True 5.0 False
rto 2.78 2.78 1.0 0.225 False 5.6 True
youbot 0.8 0.8 1.2 0.347 False 5.6 True
turtlebot3_waffle_pi 0.26 0.0 1.82 0.208 False 3.5 False
Car-O-Bot4 (cob4) 1.1 0.2 0.8 0.36 True 29.5 True
dingo 1.3 0.0 (4.0) 0.378 todo 30.0 False

For additional / more detailed information about each robot:

NOTE: The emergency-stop capability is currently still being development, it will however be available on all robots.

Sample usage

After successful installation, run the following command with your python-env activated (workon rosnav).

roslaunch arena_bringup start_arena_gazebo.launch local_planner:=teb task_mode:=random world:=small_warehouse actors:=6

Training

To quick start drl training run the following lines. For more detailed information see this documentation.

roslaunch arena_bringup start_arena_gazebo.launch  train_mode:=true use_viz:=true  task_mode:=random

# in a new terminal
roscd arena_local_planner_drl
python scripts/training/train_agent.py --agent MLP_ARENA2D

Evaluation

To benchmark the performance of your simulation and visualize your results with qualitative and quantitative plots like in the example below, see the documentation here

Exemplary qualitative plot Exemplary quantitative plot

Miscellaneous

Used third party repos: