How jrl-umi3218/mc_rtc works
mc_rtc is a robot-control framework: an interface supplies robot state and receives desired commands through MCGlobalController, which delegates control to a selected MCController. Controllers work with robot models, optional observer pipelines, control tasks, and a QP solver; FSM controllers add state-driven behavior. The framework also exposes GUI and logging facilities, plugins, Python bindings, and ROS/Replay integrations. The graph reflects README capabilities and the sampled source; some subsystem wiring is documented by the framework structure but was not directly inspected, so uncertain edges are omitted.
Main entry points: mc_global_controller.cpp Global controller · MCController.cpp Controller · MetaTask.h Control tasks · ObserverPipeline.cpp Observer pipeline
Components 19
Control runtime
- Global controller
src/mc_control/mc_global_controller.cpp - Controller
src/mc_control/MCController.cpp - FSM controller
src/mc_control/fsm/Controller.cpp - FSM executor
src/mc_control/fsm/Executor.cpp - Controller loader
src/mc_control/ControllerLoader.cpp
Robot state
- Observer pipeline
src/mc_observers/ObserverPipeline.cpp - Observer loader
src/mc_observers/ObserverLoader.cpp - Robot models
src/mc_rbdyn/RobotLoader.cpp - Robot state
include/mc_rbdyn/Robots.h
Control formulation
- Control tasks
include/mc_tasks/MetaTask.h - QP solver
src/mc_solver/QPSolver.cpp - Trajectories
include/mc_trajectory/Spline.h
User interfaces
- GUI state
src/mc_rtc/gui/StateBuilder.cpp - Controller server
src/mc_control/ControllerServer.cpp - Logging
src/mc_rtc/Logger.cpp
Extensions
- Python controller
src/mc_control/python/python_controller.cpp - ROS plugin
plugins/ROS/src/plugin/ROS.cpp - Replay plugin
plugins/Replay/src/Replay.cpp
Other components
- Robot interface
Connections 22
- Robot interface → Global controller: provides state
- Global controller → Controller: runs controller
- Controller loader → Global controller: loads controller
- Global controller → Robot interface: returns commands
- Global controller → Controller server: handles requests
- Controller server → GUI state: publishes state
- Global controller → GUI state: publishes GUI
- Global controller → Robot state: updates state
- Controller → Robot models: loads models
- Controller → Observer pipeline: creates pipelines
- Observer pipeline → Observer loader: loads observers
- Observer pipeline → Robot state: updates estimates
- FSM controller → Controller: extends runtime
- FSM controller → FSM executor: runs states
- FSM executor → Control tasks: dispatches behavior
- Controller → Control tasks: configures tasks
- Control tasks → QP solver: adds objectives
- Trajectories → Control tasks: defines motion
- Controller → Logging: records data
- Python controller → Controller: creates controller
- ROS plugin → Global controller: integrates control
- Replay plugin → Global controller: replays data