hanruihua / rvo_ros

The ros package of rvo library
43 stars 13 forks source link
robotics ros

reciprocal velocity obstacle ros library

Introduction

This ros package is derived from the ORCA library (lib).

Environment

Install

git clone https://github.com/hanruihua/rvo_ros.git
cd ~/catkin_ws
catkin_make

set environment parameter

export GAZEBO_PLUGIN_PATH=${GAZEBO_PLUGIN_PATH}:~/catkin_ws/devel/lib

Please write this line in the file .bashrc or .zshrc

Usage

rosrun rvo_ros rvo_node args

args: the coordinates of init point. default 0,1 0,2 ...0 10

for example:

rosrun rvo_ros rvo_node 0 1 0 2 0 3

test with simulation

roslaunch rvo_ros rvo_gazebo_agent.launch

Note: Using service to set the model and goals.

Service

rosrun rvo_ros set_goals_client

Topics

/rvo/model_states (gazebo_msgs/ModelStates)

attention: To avoid the model confusion, only the model name which is like the 'agent+num' style, for example, agent1, agent2, can be regarded as the agent model.

/rvo_vel (gazebo_msgs/WorldStates)

Note: only the speed in x, y direction of each agent calculated from the rvo are set in the WorldStates twist part.

author

Han - Han

License

This project is licensed under the MIT License

Overview ([paper])

The approach for reciprocal n-body collision avoidance, where multiple mobile robots need to avoid collisions with each other while moving in a common workspace.

Assumption:

  1. Each robot is assumed to have a simple shape (circular or convex polygon) moving in a two-dimensional workspace.
  2. The robot is holonomic, i.e. it can move in any direction, such that the control input of each robot is simply given by a two-dimensional velocity vector.
  3. Each robot has perfect sensing, and is able to infer the exact shape, position and velocity of obstacles and other robots in the environment.

Advantage:

  1. Do not need communication among robots.
  2. Can tackle the static obstacles.
  3. Can guarantee local collision-free motion for a large number of robots in a cluttered workspace.

Limitation:

  1. The assumption of perfect sensing is hard to perform in real world because of the uncertainties.
  2. Too many parameters to construct the complex model.