ROS / ROS 2 Interface

The ROS Interface is part of the CoppeliaSim API framework and is courtesy of Federico Ferri. Make sure not to mix up the ROS Interface with the RosPlugin, which is an older, deprecated interface in CoppeliaSim. The ROS Interface duplicates the C/C++ ROS API with a good fidelity. This makes it the ideal choice for very flexible communication via ROS, but might require a little bit more insight on the various messages and the way ROS operates. It comes in two flavors, for ROS and ROS 2. You can recognize ROS Interface API functions from the simROS- or simROS2-prefixes.

ROS is a distributed pseudo operating system allowing for easy management and communication between multiple computers connected in a network. Please refer to the official ROS documentation for details about ROS.

CoppeliaSim can act as a ROS node that other nodes can communicate with via ROS services, ROS publishers and ROS subscribers.

The ROS Interface functionality in CoppeliaSim is enabled via a plugin: libsimExtROSInterface.* or libsimExtROS2Interface.*. The plugins can easily be adapted to your own needs. The plugins are loaded when CoppeliaSim is launched, but the load operation will only be successful if roscore was running at that time. Make sure to inspect CoppeliaSim's console window or terminal for details on plugin load operations.

Have a look at following simulation scenes/model for a quick start with the ROS Interface:

  • rosInterfaceTopicPublisherAndSubscriber.ttt
  • controlTypeExamples.ttt (focus on the red robot)
  • Models/tools/rosInterface helper tool.ttm (model allowing to operate CoppeliaSim in Synchronous mode, e.g. in order to manually step the simulation)
  • Also have a look at the ROS tutorial and the external controller tutorial.



    Recommended topics

  • ROS Interface API functions
  • ROS 2 Interface API functions
  • ROS tutorial