Concepts
Background reading. These pages discuss the design of bar_ros2 —
the architecture, the conventions, the trade-offs that decided which
abstractions live where. Read these when you want to understand the
project well enough to extend it (or argue with it).
If you're trying to get a specific job done, you probably want a how-to guide or the reference. Concepts are for understanding, not for doing.
| Page | What it explains |
|---|---|
| Architecture | The big picture: ros2_control as the spine, the in-process vs. out-of-process policy split, the four orthogonal axes (robot / hardware tier / task / compute). |
| Five-mode FSM | Why the operator surface is a state machine, what each mode is for, the transition rules and their gates. |
| MIT command surface | Why every joint exposes 5 command interfaces, the τ = K·err + D·erṙ + ff convention, how it makes silicon / MuJoCo / mock interchangeable. |
| Calibration math | The direction × homing_offset transform, where it lives (URDF + YAML), why it lives in the plugin and not the controller. |
| Safety pipeline | SafetyStatus flags, who publishes them, how mode_manager consumes them, the auto-DAMP fault path. |
| Frozen schemas | What "the schema is frozen once a policy depends on it" means in practice: joint order, message fields, command interfaces. |