Legacy remote API

The legacy remote API, or just remote API, should not be mixed-up with the BØ-based remote API, which is a newer version of the remote API that is more flexible, easier to use and most importantly, much simpler to extend.

The remote API is part of the CoppeliaSim API framework.

The remote API allows to control a simulation (or the simulator itself) from an external application or a remote hardware (e.g. real robot, remote computer, etc.). The CoppeliaSim remote API is composed by approximately one hundred specific functions and one generic function, that can be called from a C/C++ application, a Python script, a Java application, a Matlab/Octave program, or a Lua script. The remote API functions are interacting with CoppeliaSim via socket communication (or, optionally, via shared memory). All this happens in a hidden fashion to the user. The remote API can let one or several external applications interact with CoppeliaSim in a synchronous* or asynchronous* way (asynchronous by default), and even remote control of the simulator is supported (e.g. remotely loading a scene, starting, pausing or stopping a simulation for instance).

The word Synchronous is used in the sense that each simulation pass runs synchronously with the remote API application (i.e. the simulator will wait for a trigger signal from a client to start next simulation pass at a time t+dt). This is different from synchronous/asynchronous in the sense of blocking/non-blocking operation. The remote API also supports blocking and non-blocking operations.

Make sure you understand how the remote API is operating by reading this section. Also have a look at the external controller tutorial.

The remote API functionality comes in 2 separate entities, that are interacting via socket communication:

  • the client side (i.e. your application): the remote API on the client side is available for many different programming languages. Currently following languages are supported: C/C++, Python, Java, Matlab, Octave and Lua. Bindings for other languages can easily be created by yourself. Instructions on how to enable the remote API on the client side are given here.
  • the server side (i.e. CoppeliaSim): the remote API on the server side is implemented via a CoppeliaSim plugin that is loaded by CoppeliaSim by default: simExtRemoteApi.dll, libsimExtRemoteApi.dylib or libsimExtRemoteApi.so. The plugin project files are located here. Instructions on how to enabled the remote API on the server side are given here.