Controllers¶
Controllers live in source/am_isaac/am_isaac/controllers/. A ControlPipelineCfg combines the public action mode, a controller configuration, and optional Pyroki IK settings; a RobotProfileCfg binds that pipeline to one robot.
Maintained controller families¶
| Family | Implementation | Role | Typical ID token |
|---|---|---|---|
| Six-DoF PID | pid_6dof_ctrl.py |
Tracks position and full orientation for fully actuated bases and the EE oracle | PID |
| Four-DoF PID | pid_4dof_ctrl.py |
Tracks position and yaw for underactuated multirotors | PID |
| L1 adaptive | l1_adaptive_ctrl.py |
Adds adaptive disturbance compensation around the six-DoF tracking structure | L1 |
| Whole-body MPC | wholebody_mpc_ctrl.py |
Jointly computes base wrench and arm targets under state and input constraints | MPC |
| Joint PID | pid_joint_ctrl.py |
Tracks arm and gripper joint targets inside robot command application | internal |
Pyroki is an IK front end, not a wrench controller. In an IK–tracking profile it resolves an EE target into base and arm targets; PID or L1 then tracks the base target. The MPC profile performs whole-body resolution within the optimizer and does not use the Pyroki front end.
Public controller contract¶
BaseController.compute(...) returns ControllerOutput. Its stable fields include applied body-frame force and torque, optional arm targets, and optional telemetry for commanded and realized rotor thrust, desired and final wrench, rotor angles, proximity effects, and drag. Controllers expose reset(...) for episode-local state such as integrators or adaptive estimates.
The simulator-facing pipeline is:
policy action -> ControlPipeline -> controller -> ControllerOutput -> RobotIO
Controller code should not contain task rewards, task success logic, or task reset geometry.
Physical-effect order¶
For multirotors, BaseController.compute(...) applies inverse allocation and saturation, optional rotor actuator dynamics, proximity effects, forward allocation, drag, and optional wind before returning the realized wrench. See Physics and Disturbances.
Dependencies¶
Physical EE-target profiles require the ext/pyroki integration. Whole-body MPC additionally requires acados and its generated solver build. The EE oracle is the appropriate first check when those optional dependencies are not installed.