This package is a obstacle avoidance navigation stack developed for ROS Melodic & Ubuntu 18.04. The package uses Velocity-Obstacle method called ORCA(Optimal Reciprocal Collision Avoidance Algorithm) to avoid obstacles. It uses RVO2 library for ORCA & Kalman filters for dynamic object tracking with LiDAR. The package provides felxibility for user to choose start, goal points and planning horizon along with no. of multiple agents to avoid and provide static obstacle data of enviroment to ORCA as RVO vectors. The packages uses Proxemics theory to avoid human and obstacles area of proxemity for Social Aware Navigation through predicting the t+1 RVO velocity.
The package allows user to get Dynamic Obatcle tracking data from DetectedEntity.msg from obstacle tracker package. The novality of this package is to use ORCA along with proxemics predicting whether future velocities lies in collision area or not. This can be further be used to develop a Behaviour Module over the Motion planner.
Keywords: Velocity Obstacles, ORCA, Proxemics Theory, Social-Aware-Navigation, Obstacle Avoidance.
Author: Nagarjun Vinukonda, Kavit Shah
Affiliation: Worcester Polytechnic Institute
Maintainer: Nagarjun Vinukonda, [email protected]
The algorithm has been made to deploy on mobile robots with static indoor environments.
- Simulation in Hospital environment && Simulation in Hospital Lobby with Laser range =10m
- Obstacle detector using Kalman filter results:
- NOTE: For more information on Obstacle Detector visit Master Branch
-
Robot Operating System (ROS) (Melodic Preferred),
- You will need turtlebot3 & turtlebot3_simulation packages:
-
Eigen3 (linear algebra library)
-
OpenCV (Image Processing Library) OpenCV4 and above
- Don't forget to configure the OpenCV_DIR in the CMakeLists.txt with {path-to-your-OpenCV-library}
-
[CMake] Version : 3.10.2 & above
Once you have successfully build the project you can run the executables with the following commands from inside your build directory
- Launching the world file
-
To run the project on static world (with standing humans)
roslaunch env turtlebot3_env_open_spaces_wsh-edit.launch
-
To run the project on dynamic world (with moving humans) .. [work in progress]
roslaunch env turtlebot3_env_open_spaces_wwh-edit.launch
- Run the simulation
-
To run the simulation, in another sourced terminal:
rosrun orca test_sim
- Run Obstacle detector package:
- First run split_scan package, then obstacle tracker:
roslaunch split_scan split_scan.launch
roslaunch obstacle_detector detector.launch
-
To understand about interacting with the library please refer the orca->src->test_sim_Function_Information.txt
-
While making any new changes, please update the CHANGELOG.rst files in the base folder and in each package about the changes made. Creating a new branch for the change would be highly adviced.
-
Note: This package is for my further modifications and testing. If you like to add issues, I recommend add it to main branch
-
Your contributions are truly appreciated
-
RVO2 library for ORCA for the code
-
Van Den Berg, Jur, et al. "Reciprocal n-body collision avoidance." Robotics research. Springer, Berlin, Heidelberg, 2011. 3-19.
-
M.Przybyła, “Detection and tracking of 2d geometric obstacles from lrfdata,” in2017 11th International Workshop on Robot Motion and Control(RoMoCo). IEEE, 2017, pp. 135–141
-
More information on Obstacle detecor package created by author is found here