Skip to content

Torso: lessons

Controls whole-body forces and momentum to keep balance, delivers commands from higher layers to the motors on time, and handles power and safety.

On the robot

No lessons are published yet. Here are the planned topics.

Overview

From 50 Hz commands to joint torques, why robots stay upright (CoM, support polygon, ZMP), power, heat and emergency stop managed in the torso

  1. From 50 Hz commands to joint torques: DDS, the control loop, the bus and the current loopComing soon

    The path a 50 Hz command takes through DDS, the control loop, the bus and the current loop before it becomes torque.

  2. Why robots stay upright: center of mass, support polygon and ZMPComing soon

    Static and dynamic balance, the capture point, and the roughly 0.27 s before a fall becomes unrecoverable.

  3. What the torso manages: power, heat and emergency stopsComing soon

    Why motors heat up even when the robot is just standing, and the problem of defining a 'safely stopped' state.

Basics

The linear inverted pendulum model (LIPM) and capture point, low-level joint command loops, DDS/QoS and measuring real-time performance, the motor bus bandwidth budget

  1. Computing the ZMP and capture point with the linear inverted pendulum model (LIPM)Coming soon

    Integrating the LIPM to find the boundary between the ankle strategy and stepping, and the e^(ω·t_d) amplification caused by latency.

  2. The structure of a joint command: running a low-level control loop with unitree_sdk2 and a simulatorComing soon

    The five fields of LowCmd, send-period jitter and a heartbeat watchdog (hands-on in simulation only).

  3. Real-time performance is measured by the worst case: DDS, QoS and cyclictestComing soon

    Tail latency distributions, PREEMPT_RT and QoS, including runs under GPU load and in different Jetson power modes.

  4. Motor bus bandwidth budgets: CAN and serial busesComing soon

    Computing bus utilization, and measurements on vcan and an SO-101.

Advanced

Centroidal dynamics, whole-body control as a QP, real-time design with EtherCAT and ros2_control, clock domains and time sync

  1. Centroidal dynamics: from whole-body momentum to single-rigid-body MPCComing soon

    From the equation stating that only contact forces change the robot's momentum to single-rigid-body MPC.

  2. Whole-body control as a QP: tasks, constraints and prioritiesComing soon

    Weighted versus hierarchical priorities, slack variables, and solving the QP within 1 ms.

  3. Designing real-time control systems: EtherCAT, ros2_control and allocation-free loopsComing soon

    Distributed clocks, and a jitter experiment on the read→update→write loop.

  4. A robot with many clocks: clock domains and time synchronizationComing soon

    PTP and NTP, ROS time, use_sim_time and backward time jumps.

In practice

Integrating the lower-body locomotion controller with the upper-body task controller, safety placed in the fastest loop (E-stops, watchdogs, multi-level limits), thermal and battery constraints, debugging jitter, dropouts and time going backwards

  1. Integrating a lower-body locomotion controller with an upper-body task controller: the interface connecting the twoComing soon

    Decoupled versus unified controllers, command spaces, which controller owns the waist joint, and how upper-body loads act as disturbances.

  2. Safety functions belong in the fastest loop: E-stops, watchdogs and multi-level limitsComing soon

    Placing safety functions according to loop rate, and a toy safety wrapper.

  3. How thermal and battery constraints affect control: thermal budgets, voltage sag and deratingComing soon

    A system-level thermal budget, battery voltage drop, and derating.

  4. Debugging real-time control systems: tracing the causes of shaking, dropouts and backward time jumpsComing soon

    Timestamping every hop and reading the latency distributions to tell whether the cause lies in the bus, the OS or DDS.