Skip to main content

Actuation & Control

High-torque electric servo motors for humanoid robots

Why this matters: Actuators are the muscles of a robot. Without precise control of these muscles, even the best planning algorithm is useless.

Introduction: Turning Electrons into Motion

The journey from "robot, walk forward" to actual walking involves converting digital commands into physical force. This is the domain of actuation and control.


Types of Actuators

Electric Motors

The most common actuator in modern robots.

TypeTorqueSpeedEfficiencyUse Case
Brushed DCLowHigh70-80%Hobby robots
Brushless DCHighVery High85-95%Drones, EVs
ServoMediumControlled80-90%Arms, legs
StepperMediumLow60-70%Precision positioning

Brushless DC motor cutaway showing internal components

Hydraulic Actuators

High power-to-weight ratio, but complex:

graph LR
A[Pump] --> B[Valve]
B --> C[Cylinder]
C --> D[Load]
C --> E[Sensor]
E --> B

Used in: Boston Dynamics Atlas (original), heavy industrial robots

Pneumatic Actuators

Soft, compliant, safe for human interaction:

  • Artificial muscles
  • Soft grippers
  • Collaborative robots

Motor Control Fundamentals

The Control Loop

Every actuator has a control loop:

graph TD
A[Desired Position] --> B[Controller]
B --> C[Motor Driver]
C --> D[Motor]
D --> E[Encoder]
E --> B

PID Control

The workhorse of motor control:

u(t) = Kp×e(t) + Ki×∫e(t)dt + Kd×de(t)/dt
class PIDController:
def __init__(self, kp, ki, kd):
self.kp, self.ki, self.kd = kp, ki, kd
self.integral = 0
self.prev_error = 0

def update(self, error, dt):
self.integral += error * dt
derivative = (error - self.prev_error) / dt
self.prev_error = error

return (self.kp * error +
self.ki * self.integral +
self.kd * derivative)

Tuning PID

ParameterToo LowToo High
KpSlow responseOscillation
KiSteady-state errorOvershoot, windup
KdOvershootNoise amplification
Ziegler-Nichols Method
  1. Set Ki = Kd = 0
  2. Increase Kp until oscillation
  3. Record critical gain Kc and period Tc
  4. Set: Kp = 0.6Kc, Ki = 1.2Kc/Tc, Kd = 0.075Kc×Tc

Advanced Control Techniques

Impedance Control

Instead of controlling position, control the relationship between force and motion:

M×ẍ + D×ẋ + K×x = F_ext

Makes the robot feel like a spring-damper system to external forces.

Model Predictive Control (MPC)

Optimize over a horizon of future states:

def mpc_step(current_state, reference_trajectory):
# Define optimization problem
problem = cp.Problem(
cp.Minimize(
sum([stage_cost(x[t], u[t], ref[t])
for t in range(horizon)])
),
constraints=[
x[t+1] == dynamics(x[t], u[t]),
u_min <= u[t] <= u_max,
x[0] == current_state
]
)
problem.solve()
return u[0].value # Apply first control

Control system block diagram with MPC


Humanoid-Specific Considerations

Compliance vs. Stiffness

ModeWhen to UseExample
High stiffnessPrecise positioningPicking up a glass
Low stiffnessUnknown environmentOpening a door
VariableContact transitionsWalking

Series Elastic Actuators (SEA)

Add a spring between motor and load:

Advantages:

  • Better force control
  • Energy storage for explosive movements
  • Safer human interaction

Used in: Atlas, Digit, many research robots

Quasi-Direct Drive

Minimize gear ratio for backdrivability:

  • Low friction
  • High bandwidth
  • Excellent force sensing

Used in: MIT Cheetah, Berkeley Blue


Power Systems

Battery Technology

ChemistryEnergy DensityPower DensityCycle Life
LiFePO4MediumVery High2000+
Li-ion NMCHighHigh500-1000
Li-PoHighVery High300-500
Thermal Management

Actuators and batteries generate heat. A 30% efficiency motor operating at 500W produces 150W of heat. Plan for cooling!


Key Takeaways

Summary
  1. Electric motors dominate modern robotics
  2. PID control is the foundation, but not always enough
  3. Impedance control enables safe interaction
  4. MPC optimizes over future trajectories
  5. Compliance (SEAs, QDD) is critical for dynamic robots

Further Reading

AI Agent

AI Robotics Guide

Knowledge Base v2.4

Hello! I am your Physical AI guide. How can I help you explore robotics today?