RVO_rospy icon indicating copy to clipboard operation
RVO_rospy copied to clipboard

Implementation of the paper "Reciprocal Velocity Obstacles for real-time multi-agent navigation" in ROS using rospy in Turtlesim

RVO using rospy

About:

This repo consists of implementation of the paper RVO in ROS using the ROS python linrary "rospy". Turtlesim was used as the simulator for it's simplicity to test out the concept proposed in the paper.

Index:

  1. Repo Contents
  2. About RVO
  3. Using this repo
  4. Implementation Results

1. Repo Contents:

  • src/turtle_instance.py consists of a attributes and methods that describe the behaviour of each agent.
  • src/multi_process_agents.py consists of the code that:
    • generates the specified number of agents and
    • Each agent then creates an object from class defined in turtle_instance.py
    • Also, it assigns an individual process on CPU for each of the generated agent.
  • src/Individual/ consists of code where each python file is responsible for each agent. (This is a previous version before writing multi_process_agents.py)

2. About RVO:

Paper Review: Reciprocal Velocity Obstacles for Real-Time Multi-Agent Navigation


3. Using this repo

  1. Clone this package into your catkin workspace

git clone https://github.com/suraj2596/RVO_rospy/

  1. Do a catkin make at the root of your workspace

catkin_make

  1. Start ROS

roscore

  1. In another terminal, start turtlesim

rosrun turtlesim turtlesim_node

  1. In another terminal, run this command to spawn a turtle with name 'turtlex'

rosservice call /spawn "x: 0.0 y: 0.0 theta: 0.0 name: ''"

  1. In another terminal, run multi_process_agents.py

python multi_process_agents.py


4. Implementation Results:

These are the results obtained for various number of agents.

  • 2-agent: https://www.youtube.com/watch?v=wt4jghNB_5w
  • 4-agent: https://www.youtube.com/watch?v=gfRwZAqging
  • 12-agent: https://www.youtube.com/watch?v=ChxYs4OLPwg