Coder Social home page Coder Social logo

kimhunhui / dynamic-obstacle-tracker-and-avoidance-orca Goto Github PK

View Code? Open in Web Editor NEW

This project forked from nagarjunvinukonda/dynamic-obstacle-tracker-and-avoidance-orca

0.0 0.0 0.0 89.28 MB

This package is modified for tracking humans and small moving obstacles for tracking velocity, radius, and position

C++ 81.15% Python 9.42% CMake 9.43%

dynamic-obstacle-tracker-and-avoidance-orca's Introduction

Dynamic Obstacle Avoidance in Indoor Environment using ORCA in ROS

Overview

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:

ezgif com-gif-maker (5)

  • NOTE: For more information on Obstacle Detector visit Master Branch

Installation:

Building from Source

Dependencies

Launch Files

Once you have successfully build the project you can run the executables with the following commands from inside your build directory

  1. 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
    
  1. Run the simulation
  • To run the simulation, in another sourced terminal:

      rosrun orca test_sim
    
  1. Run Obstacle detector package:
  • First run split_scan package, then obstacle tracker:
 	roslaunch split_scan split_scan.launch 
	roslaunch obstacle_detector detector.launch

For Contributors:

  • 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

References & Useful resources:

  • 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

dynamic-obstacle-tracker-and-avoidance-orca's People

Contributors

nagarjunvinukonda avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.