This ros package is derived from the ORCA library (lib).
- Ubuntu 18.04
- ros Melodic
git clone https://github.com/hanruihua/rvo_ros.git
cd ~/catkin_ws
catkin_make
export GAZEBO_PLUGIN_PATH=${GAZEBO_PLUGIN_PATH}:~/catkin_ws/devel/lib
Please write this line in the file .bashrc or .zshrc
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
roslaunch rvo_ros rvo_gazebo_agent.launch
Note: Using service to set the model and goals.
rosrun rvo_ros set_goals_client
-
arguments:
- model:
- "default": specify a series of point as goals for the agents. The number of goals should be same as the number of agents: 1 1 2 3 4 2.
- "random": allocate the goals randomly with limit along x and y, only for number: min_x, max_x, min_y, max_y.
- "circle": allocate the goals with circle shape: circle_point_x, circle_point_y, radius, flag. flag is to set the reverse mode
- model:
-
example:
rosrun rvo_ros set_goals_client default 1 1 1 4 4 4 4 1
rosrun rvo_ros set_goals_client random 0 5 1 4
rosrun rvo_ros set_goals_client circle 4 4 4 0
- Subscribed Topic
/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.
- Published Topic
/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.
Han - Han
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:
- Each robot is assumed to have a simple shape (circular or convex polygon) moving in a two-dimensional workspace.
- 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.
- 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:
- Do not need communication among robots.
- Can tackle the static obstacles.
- Can guarantee local collision-free motion for a large number of robots in a cluttered workspace.
Limitation:
- The assumption of perfect sensing is hard to perform in real world because of the uncertainties.
- Too many parameters to construct the complex model.