mc_rtc
is an interface for simulation and robot control systems. These systems should provide the state of a given robot (joints' values, sensor readings...) and in return mc_rtc
will provide the desired robot's state (command). This is done through the mc_control::MCGlobalController
class. This class does not perform control by itself but rather delegates this task to the mc_control::MCController
derived objects that it holds. Writing a controller within the mc_rtc
framework is done by writing a class that inherits from the mc_control::MCController
base class and implements the required functionnality. The details of this process can be found in the project documentation.
mc_rtc
is a super-set of SpaceVecAlg/RBDyn/Tasks libraries which provides a friendlier/easier interface for the user.
This framework assumes some familiarity with the SpaceVecAlg, RBDyn and Tasks although the libraries in the mc_rtc
package abstract most of these libraries inner-workings. Unfamiliar users may refer to the SpaceVecAlg and RBDyn tutorials and the SpaceVecAlg and RBDyn presentations authored by Joris Vaillant.
The project website provides a somewhat complete introduction of the framework functionalities.
Feel free to open an issue for questions, feature requests or problems you might encounter.
The following interface between mc_rtc
and 3rd-party framework are available:
- mc_rtc_ros contains a number of tools related to the framework as well as a simple "ticker" that allows to run controllers in an open-loop fashion;
- mc_openrtm embeds
mc_rtc
into a RTC component, this can be used to control a robot that is using the OpenRTM framework, an example with the virtual JVRC1 robot is also provided; - mc_udp provides a thin UDP-based client/server. The client is a regular
mc_rtc
interface that gets data through the UDP socket. The server can easily be implemented to interface with your robot. A server to interface with OpenRTM components is provided. - mc_vrep interface with the VREP simulation software;
- mc_naoqi interface with the NAOqi framework (Softbank Robotics robots);
- mc_franka interface with the libfranka library for Franka Emika robots;
- mc_mujoco interface with the MuJoCo physics simulator;
Please see mc_rtc installation guide for details.
mc_rtc also uses the following great 3rd party libraries but does not require you to get or install them:
- Qhull 2020.2 under the Qhull license
- RapidJSON under the MIT license
- mpack under the MIT license