Extending retarget¶
Plugin-style extension points keep the core small. Pick the guide that matches what you are adding:
| Guide | When to use it |
|---|---|
| Add a Robot | New RobotSpec, kinematics layout, joint limits |
| Add a Kinematics Backend | MuJoCo-style FK, Jacobians, integration |
| Add a Motion Format | Loaders for new motion file layouts |
| Add an Objective or Constraint | Custom optimization terms |
Protocols and registries are documented in the API and Registries sections.
Every registry requires a member of its extensible enum-key base. Define a
project enum such as LabRobot(RobotKind) or LabObjective(ObjectiveKind),
then pass that member to register() and get(). Raw strings are accepted only
at config and CLI deserialization boundaries.
Spec and factory registries (robots, motion_formats,
kinematics_backends, solver_factories) accept direct values or factories.
Protocol registries (motion_loaders, objective_terms, constraint_terms,
exporters, and visualizers) validate decorated implementations at
registration time.