Joint Control Loops in Humanoid Robots: How a 50 Hz Policy Drives a 40 kHz Joint

Joints & actuators · Explainer

Joint control loops: how a 50 Hz policy drives a 40 kHz joint

The neural network that makes a humanoid walk decides what each joint should do about 50 times a second. The joint itself corrects its current tens of thousands of times a second. Between the two sit a stiffness-and-damping law, a fieldbus and a set of gains, and that layered loop structure decides how compliant, stable and safe the robot feels.

50 Hz
Policy rate reported for learned controllers on Agility Digit, Berkeley Humanoid and Unitree G1
40 kHz
Current and joint PD loop rate on the MIT Mini Cheetah actuator driver
5
Numbers in an MIT-mode joint command: position, velocity, kp, kd and feed-forward torque
4 kHz
Top EtherCAT cycle rate on Berkeley Humanoid and Synapticon’s Circulo joint drives

Sources: Radosavovic et al. 2023; Liao et al. 2024 (Berkeley Humanoid); Katz 2018 (MIT thesis); Seeed Studio RobStride documentation; Synapticon.

Three loops nested inside every joint

Spec sheets list torque, speed and mass, but a humanoid joint is also a stack of feedback loops running at very different speeds. At the top, a whole-body controller or learned policy on the robot’s main computer decides where each joint should go. In the middle, the joint drive turns that target into a torque request using a spring-and-damper law. At the bottom, a field-oriented current loop in the same drive switches the motor phases so the motor actually produces that torque. Each loop is roughly an order of magnitude faster than the one above it.

The split exists because each layer has a different job. The policy needs to see the whole body and plan, which is computationally heavy, so it runs slowly. The torque law has to react to contact within a millisecond or less, so it runs in the drive next to the encoder. The current loop has to track a motor with very low inductance, so it runs as fast as the power stage switches. Ben Katz’s thesis on the MIT Mini Cheetah actuator is a clean public example: the drive switches at 40 kHz, closes the current loop at 40 kHz and runs the joint PD law synchronously with it.

Figure 1 · The cascaded control loop inside a humanoid joint

Policy / WBC ~50 Hz · main computer Joint impedance law τ = kp(q* − q) + kd(q̇* − q̇) + τff 1–40 kHz · in the joint drive Current loop FOC · tens of kHz Motor + gearbox + link q*, q̇*, kp, kd, τff CAN / EtherCAT iq* PWM phase currents encoder · q, q̇ joint state back to the policy over the bus Rates are typical published values; each robot sets its own. Dashed line runs at bus rate.

Illustration: humanoid.guide, after Katz 2018 and Liao et al. 2024. Schematic, not a specific product.

The five-number command

Most learned humanoid controllers do not send raw torques to the joints. They send a target position, and the drive turns it into torque with a proportional-derivative law: torque equals a stiffness gain kp times the position error, plus a damping gain kd times the velocity error, plus an optional feed-forward torque. Radosavovic and colleagues’ Digit controller is typical. The network runs at 50 Hz and outputs PD setpoints for 16 joints, plus predicted PD gains for 8 leg joints, while the joint PD controller runs at 1 kHz.

The low-cost actuator world has made this law into a wire format. The so-called MIT mode, inherited from the Mini Cheetah driver, packs five numbers into one CAN frame: desired position, desired velocity, kp, kd and feed-forward torque. CubeMars (T-Motor) documents the command for its AK-series motors. RobStride, whose modules appear in many Chinese humanoids and research robots, uses the same five fields over 1 Mbps CAN. Its documentation gives kp ranges of 0 to 500 and kd of 0 to 5 on the small RS-00 to RS-02 and RS-05 motors, rising to 5,000 and 100 on the larger RS-03, RS-04 and RS-06.

Sending gains as well as targets is what makes a joint compliant on demand. A high kp holds a pose stiffly. A low kp lets the limb give way when it touches something, and the controller can change that between one 20 ms tick and the next without touching hardware. This is impedance control, and it only works well if the joint is back-drivable and the inner loop is much faster than the outer one.

Figure 2 · Animated · One 20 ms policy step, and what the inner loops do inside it

POLICYJOINT PDCURRENT 50 Hz1 kHz40 kHz 800 updates · too dense to draw one by one 0 ms10 ms20 ms

Illustration: humanoid.guide. Rates from Radosavovic et al. 2023 (Digit: 50 Hz policy, 1 kHz PD) and Katz 2018 (Mini Cheetah: 40 kHz). CSS animation; stops when reduced motion is requested.

Published loop rates, robot by robot

Commercial humanoid makers rarely publish inner-loop rates, so most hard numbers come from research platforms and actuator documentation. The pattern is consistent anyway. Policies run at about 50 Hz, the bus runs at 1 to 4 kHz, and the drive’s own loops run from 1 kHz to 40 kHz.

Table 1 · Control loop figures published for humanoid and legged-robot joints

PlatformHigh-level / policyJoint PD loopBusActuator notes
MIT Mini Cheetah actuator—40 kHzCAN, 1 Mbps; 1.2 kHz achieved on a 3-DoF leg6:1 planetary, 17 N·m peak, 6.9 N·m continuous; current bandwidth 4.5 kHz at 4.5 N·m
Berkeley Humanoid50 Hz25 kHzEtherCAT, 1–4 kHz (0.5–2 ms latency)9:1 QDD, four sizes, 9.7–81.1 N·m peak; state estimator at 1 kHz
Agility Digit (RL controller)50 Hz1 kHz—Policy outputs PD setpoints for 16 joints and gains for 8 leg joints
Unitree G1 (research papers)50 HzTargets updated every 20 ms; on-motor rate not published—Four motor types modelled, up to about 111–131 N·m
RobStride RS-series—MIT mode in the driveCAN, 1 Mbpskp 0–500 / kd 0–5 (small); kp 0–5,000 / kd 0–100 (large); 5.5–120 N·m
Synapticon SOMANET Circulo—Dual-loop control in the driveEtherCAT DS402, up to 4 kHz60 V / 60 A rms; two 20-bit absolute encoders; hollow shaft

Sources: Katz 2018; Liao et al. 2024; Radosavovic et al. 2023; He et al. 2025 and OmniXtreme 2026 (G1); Seeed Studio RobStride documentation; Synapticon product page. — means not published in these sources.

Chart 1 · Update rate of each layer, log scale

10 Hz100 Hz1 kHz10 kHz100 kHz UPDATE RATE (LOG SCALE) Learned policy · Digit/Berkeley/G1 Joint PD loop · Agility Digit State estimator · Berkeley CAN bus, 3-DoF leg · Mini Cheetah EtherCAT max · Berkeley/Circulo Drive PD loop · Berkeley Current + PD loop · Mini Cheetah 50 Hz1 kHz1 kHz1.2 kHz4 kHz25 kHz40 kHz

Sources: Radosavovic et al. 2023; Liao et al. 2024; Katz 2018; Synapticon. Each bar is a rate published for that platform, not a measured comparison.

The bus in the middle: CAN or EtherCAT

The fieldbus sets how often the main computer can update every joint, and it is a real bottleneck. Classic CAN runs at 1 Mbps and is shared by every motor on the line. Katz puts the theoretical limit for the Mini Cheetah at about 4 kHz divided by the number of actuators on a bus. In practice the team reached 1.2 kHz on a three-motor leg. That is why legged robots built from CAN modules split their joints across several buses, typically one per limb.

EtherCAT, the industrial Ethernet standard used by most cobot joints, removes most of that limit. Berkeley Humanoid runs its EtherCAT network at 1 to 4 kHz, with a maximum latency of 0.5 to 2 ms depending on the rate chosen. Synapticon specifies its Circulo integrated joint drives at up to 4 kHz on the standard DS402 servo profile, with FailSafe over EtherCAT for safety data. The cost is more expensive drive electronics and a master controller. That trade explains why bus choice tends to follow price class: CAN for low-cost modules, EtherCAT for industrial and higher-end humanoid joints.

The bus only needs to be fast enough for the policy. The stiffness and damping that make a joint feel compliant come from the PD law inside the drive, so a 50 Hz controller can still produce a joint that reacts to impact within a millisecond or less.

What it means for buyers and builders

  • Ask where the PD law runs. A joint that closes its impedance loop in the drive, at kHz rates, will behave consistently whatever the main computer is doing. A joint that waits for torque commands over the bus inherits the bus’s latency and jitter.
  • Check the command interface. MIT mode (position, velocity, kp, kd, torque) is now a de facto standard on CAN modules from CubeMars and RobStride, which makes these actuators easy to drop into reinforcement-learning stacks. EtherCAT DS402 drives offer the same modes through a standard industrial profile.
  • Gains are part of the spec. Gain range sets how stiff or soft a joint can be made. A 0–500 kp range on a small module and 0–5,000 on a 120 N·m one reflect very different load cases.
  • Sim-to-real depends on the inner loop. Learned policies are trained against a model of the PD loop and the motor. The OmniXtreme G1 work models torque-speed limits, friction and back-EMF power limits for each motor type, because an inner loop that behaves differently from the simulator is a common cause of failed transfers.

Go deeper: The Humanoid Actuation Report

249 pages on motors, reducers, screws, bearings, encoders and drives, the vendors behind every major platform, and the cost curves that decide adoption to 2036.

The Humanoid Actuation Report All joints & actuators articles All humanoid.guide reports

FAQ

Why do humanoid policies run at only 50 Hz?

Running a neural network for the whole body takes milliseconds on onboard computers, and 50 Hz is enough to plan steps and posture. Fast reactions are handled by the PD law in each joint drive, which runs at 1 kHz or more.

What is MIT mode on a robot actuator?

A command format, originating with the MIT Mini Cheetah driver, that sends desired position, desired velocity, stiffness gain kp, damping gain kd and feed-forward torque in one message. The drive computes torque from those five numbers at its own loop rate.

Is EtherCAT better than CAN for humanoid joints?

EtherCAT gives more bandwidth and lower latency for many joints on one network, which is why it is used on Berkeley Humanoid and on industrial joint drives. CAN is cheaper and simpler, and works well when joints are split across several buses and the PD loop runs inside the drive.

What is impedance control in a humanoid joint?

Controlling a joint as a virtual spring and damper rather than as a rigid position servo. The stiffness and damping gains decide how much the joint gives way when it meets resistance, which is central to safe contact and stable walking.

Sources