[Documentation] [TitleIndex] [WordIndex




vrep_ros_bridge is a plugin for V-Rep developed by the Inria Lagadic team located at Rennes.

Our objective is to create a simulation environment in order to test and debug our algorithms on the simulated robots. We decided to use V-Rep as 3D simulator and ROS for the communication and its useful tools.

The main application of the plugin is to provide a communication interface between V-Rep and ROS. The aim is to control the V-Rep simulation externally using ROS messages and ROS services.

V-Rep, developed by Coppelia Robotics, is an open-source state-of-the-art (and freely available for academic use) 3D physical simulation engine which is becoming more and more widespread in the robotics community thanks to its flexibility (possibility to simulate many different robotic platforms), dynamical engine (it supports ODE, Bullet and Vortex), and finally customizability (it offers many different possibilities to include one's own code or to interface it with the external world).


This plugin is a shared library that is automatically loaded by V-REP's main client application at program start-up. Our plugin looks for known objects in the scene in order to manage them. It creates ROS publishers to send out simulation data (for example pose and velocity of objects present in the scene), it receives (ROS subscribers) messages and it dynamically applies the commands to the object.

Note that vrep_ros_bridge is a meta-package, while vrep_ros_plugin is the real main package.

ROS V-Rep Bridge uses the pluginlib package. Pluginlib is a C++ library for loading and unloading plugins from within a ROS package. Plugins are dynamically loadable classes that are loaded from a runtime library (i.e. shared object, dynamically linked library). In this way our handlers are actually plugins with some dependencies. If we don't need a handler or we don't have installed its dependencies we are still able to build our bridge (that plugin will not be available). For example, the quadrotor_tk_handler needs Telekyb. If we don't want to install Telekyb we can just add a file called CATKIN_IGNORE in the quadrotor_tk_handler folder and it will not be considered. In spite of this the other handlers will be available.

alt text

This is the list of the objects supported by the plugin:

and this is the list of the handlers to control and describe the simulation:

The next section show how to link the plugin with an object in V-REP.


We have an object in the scene (let's say a quadrotor) and we want that the plugin vrep_ros_bridge manage it. To do it we will have to tag the object with a predefined string. If we don't do it the plugin will not act on the object. We will show how to tag a quadrotor but the procedure for the other objects will be similar.


The function 'simExtSetFloatCustomDataFromHeader()' adds a custom data to the object related to 'sim_ext_ros_bridge_set_obj_twist_data_main'. As we can see, the function requires a third input. If requested, we can add a value to our custom data, setting the third input of the function. In our case, since we don't want to use this additional parameter we set it to zero (it will be ignored). We can add float and int values. If you want to add an int value you have to use the function 'simExtSetIntCustomDataFromHeader()'. You can find the list of the Custom Lua Variables in the description of each handler. Moreover you will find the complete list in the file access.cpp (From line 149). In certain case the third values will be important (for instance to set the frequency of the camera acquisition). You will find more information about these commands in each wiki.ros page dedicated to the packages.


You will find a guide for the installation in the Github repository.

Installation test

If you have completed the previous installation guide without get any error, we can run V-REP and check if everything is working as expected.


You can find info about this demo here.

2024-06-22 14:21