robotctl monitor
Last updated
robotctl monitor
robotctl monitor --json --hz 50 > run.jsonl
The most informative tool in the set. It puts what a client asked for beside what was actually applied, and names the reason when they differ.
The reason is the point
Safety clamps things constantly, and “the stick is forward and the robot is still” is unreadable without it — you cannot tell whether to suspect the pad, the policy or the motors. It spells it out:
deadman — no intent arrived recently, velocity zeroed
A limit is explained, not merely named.
What is on the frame
- Every joint measured against what it was commanded
- The IMU’s projected gravity and the fall verdict drawn from it — upright is about
[0, 0, -1] - The achieved loop rate as a trace, so a stutter that has already recovered is still visible
- The bottom border: the policy currently loaded
That last one matters more than it sounds: walk is a mode name that two releases with completely different gaits both report.
The robot view
Down the right-hand side, the robot drawn as it is standing — posed by measured joint angles, tilted by the IMU’s gravity vector, using the same visual model the policies were trained against.
A leg folded the wrong way, a head pitched into the floor, a duck on its side: all just numbers in the joints table, all obvious here. It appears whenever the terminal is about 110 columns or wider.
When the ToF is delivering frames its points are drawn into the same scene, depth-tested against the robot’s own body — which is what makes “is it seeing my hand, or seeing itself” answerable.
Keys
| Key | Does |
|---|---|
q |
Quit |
↑ ↓ |
Scroll the joint list |
u |
Degrees or radians |
t |
The ToF matrix |
d |
Toggle the robot view |
[ ] |
Orbit it |
p |
The pad’s raw input stream |
p is the only place a stalled radio is visible — the failure where the link stays up and the robot walks on a stale command.
Redirected, it behaves differently
Piped or redirected it prints one line per tick, so > run.log and | grep FALLEN work. Those numbers are always radians, whatever the screen is set to.