Low-Level API#
At its core, RCS provides a C++ interface that defines all functions needed to control a robot in an abstract manner. This interface has Python bindings, allowing for direct control without the overhead of the Gymnasium interface.
C++ Interface#
The C++ layer handles:
Real-time Control: Communication with robot hardware drivers.
Simulation Stepping: Interfacing with MuJoCo.
Kinematics: Fast IK/FK calculations using Pinocchio.
Python Bindings#
The Python bindings expose the C++ functionality to Python. This allows you to:
Create
SimRobotorHardwareRobotinstances.Send joint or Cartesian commands directly.
Read robot state (positions, velocities, torques).
Interface with sensors (cameras, grippers).
Example: Direct Control#
import rcs.sim as sim
# ... setup ...
robot.set_cartesian_position(target_pose)
simulation.step_until_convergence()
Adding New Robots#
Support for new robots can be implemented in both C++ and Python.
C++: Implement the
Robotinterface for high-performance drivers.Python: Implement the python-side interface for easier prototyping or python-only drivers.
The base environment is implementation-agnostic and works with any robot that adheres to the interface.