LaValle, Chapter 13

Differential Models

Physics enters the picture — continuous-time dynamics, velocity constraints, and the Lagrangian mechanics that govern every robot that must obey Newton's laws.

Prerequisites: Calculus (derivatives, chain rule) + Basic physics (force, mass, energy). That's it.
10
Chapters
4+
Simulations
10
Quizzes

Chapter 0: Robots Can't Teleport

Imagine you're designing a planner for a car. Chapters 2 through 12 gave you powerful tools — graph search, sampling, MDPs. They can find a sequence of configurations: start here, pass through these waypoints, end there. Beautiful. But there's a catch: how does the car get from one configuration to the next?

A car can't teleport from (0, 0, facing north) to (5, 3, facing east). It must steer. It must accelerate. Its wheels roll — they don't slide. The geometry of how configurations can change over time is governed by physics, and that physics comes in the form of differential equations: equations that say not "where are you" but "how fast can you move, and in which directions."

The canvas below shows the difference concretely. A particle (blue) can move freely in any direction — that's what previous chapters assumed. A unicycle (orange) is constrained: it can only move forward or backward along its heading, and it can only rotate. Watch how the set of reachable positions after a short time is completely different for each.

Reachable Sets: Free Particle vs. Unicycle

Each dot is a configuration reachable after 1 second with random controls. The free particle fills a disk. The unicycle traces a constrained arc — it can't move sideways.

Click Spawn to see reachable configurations
The fundamental shift. Chapters 2–12 operated in configuration space and treated transitions as given. Chapter 13 asks: what differential equation governs transitions? The answer — &ẋ; = f(x, u) — is the starting point of everything that follows. The state x now includes positions, velocities, and angles. The input u is the actual physical control: a force, a torque, a voltage.

What this chapter builds

Velocity constraints
&ẋ; = f(x, u): the differential equation governing motion
Nonholonomic constraints
Constraints on velocity, not position — like a car's no-slip condition
Phase space
Extend state to include velocity — positions alone aren't enough
Newton-Euler + Lagrangian
Two equivalent ways to derive the equations of motion from physics
Euler-Lagrange equations
The systematic recipe: write energy, differentiate, get equations of motion
A planner finds a path through configuration space for a car-like robot. Why can't the robot necessarily follow this path?

Chapter 1: Velocity Constraints — &ẋ; = f(x, u)

The central equation of Chapter 13 is deceptively simple:

&ẋ;(t) = f(x(t), u(t))

Read this as: "the rate of change of the state at time t equals some function f of the current state and the current input." This is a first-order ordinary differential equation (ODE) — it tells you the direction and speed at which the state moves, not the state itself. Integrating it forward in time gives you a trajectory.

The function f encodes everything about the system's physics. For a point mass sliding on a frictionless surface, f is simple. For a six-degree-of-freedom robot arm with joint limits and gear ratios, f is complex. But the form &ẋ; = f(x, u) is universal — it covers every physical system we'll study in this chapter.

A concrete example: the unicycle

A unicycle has state x = (px, py, θ) — position and heading angle. Its controls are u = (v, ω) — forward speed and turning rate. The differential equation is:

x = v cosθ
y = v sinθ
θ̇ = ω

This says: the unicycle moves in the direction it's currently pointing (cosθ, sinθ) at speed v, and rotates at rate ω. There's no equation saying it can move sideways — that direction simply isn't available. The physics rules it out, not a software constraint.

f is a vector field on state space. At every state x, for every input u, f(x, u) is a vector — a direction and magnitude in state space. Applying input u at state x "points" the trajectory in direction f(x, u). Planning with differential constraints means choosing a sequence of inputs u(t) that steers this vector field toward the goal.

Worked example: integrating the unicycle

Suppose the unicycle starts at (0, 0, 0) — origin, facing right. Apply constant controls v = 1, ω = π/4 for 2 seconds. What state do we reach?

With constant ω, the heading at time t is θ(t) = ωt = (π/4)t. The position integrates:

px(t) = ∫0t cos(ωs) ds = sin(ωt)/ω
py(t) = ∫0t sin(ωs) ds = (1 − cos(ωt))/ω

At t = 2: θ = π/2, px = sin(π/2)/(π/4) = 4/π ≈ 1.27, py = (1 − cos(π/2))/(π/4) = 4/π ≈ 1.27. The unicycle has turned 90° and traced a circular arc.

Unicycle Trajectory — Euler Integration

Adjust forward speed v and turning rate ω. Watch the orange unicycle trace its trajectory. The vector field arrows show the available motion direction at each grid point.

Speed v 1.0
Turn ω 0.8
For the unicycle model, what does the equation ṗx = v cosθ express?

Chapter 2: Nonholonomic Constraints

You want to parallel park. You maneuver — forward, turn, backward, turn — in a sequence of small moves that no single straight path could achieve. You're exploiting something subtle: although your car cannot slide sideways at any instant, it can reach any nearby configuration by combining forward and turning motions cleverly. This is the heart of nonholonomy.

A holonomic constraint restricts the configurations a system can occupy — it reduces the dimension of the configuration space itself. A nonholonomic constraint restricts the velocities available at each configuration, but does not reduce the reachable configurations. The car's no-slip condition is nonholonomic: it says the wheel's velocity must be tangent to the wheel's rolling direction, but with enough maneuvering, you can reach any configuration in the plane.

The no-slip condition for a car

A simplified car (the "kinematic car") has state x = (px, py, θ) — rear-axle position and heading. The no-slip condition says the rear axle cannot move sideways. Mathematically:

x sinθ − ṗy cosθ = 0

This is a Pfaffian constraint — a linear constraint on the velocity vector (ṗx, ṗy). It's not integrable to a constraint on position alone, which is precisely what makes it nonholonomic.

Integrability test. A velocity constraint A(x)&ẋ; = 0 is holonomic if and only if it can be written as dg(x)/dt = 0 for some scalar function g — meaning the constraint is the time derivative of a position constraint. The no-slip condition fails this test: there's no function of (px, py, θ) whose zero level set exactly captures the constrained configurations.

Lie brackets and reachability

Here's what's remarkable: even though the car can't move sideways directly, it can move sideways indirectly. The Lie bracket of two vector fields f1 and f2 — written [f1, f2] — gives the "new direction" generated by alternating between them. For the car, the forward/backward motion vector field f1 and the turning vector field f2 have a Lie bracket that points sideways. This is why parallel parking works.

The Lie Algebra Rank Condition (LARC) says: a system is small-time locally controllable (STLC) from x if the set {f1, f2, [f1,f2], [f1,[f1,f2]], ...} spans the full tangent space at x. For the kinematic car in the plane (3D state space), two vector fields plus one Lie bracket bracket gives three independent directions — full rank — so the car is controllable.

Constraint typeEffect on C-spaceEffect on reachabilityExample
HolonomicReduces dimension of CLimits reachable configurationsRobot on a rail
NonholonomicNo reductionLimits instantaneous velocities onlyCar, unicycle, bicycle
Actuated DOF < nNo changeMay still be fully reachable via Lie bracketsParallel parking
A car cannot slide sideways at any instant. Why can it still reach any configuration in the plane?

Chapter 3: Phase Space — Position Isn't Enough

Drop a ball. To predict its future trajectory, knowing where it is right now isn't enough. You also need to know how fast it's moving. A ball at position y = 5m moving upward at 3 m/s behaves completely differently from a ball at y = 5m moving downward at 3 m/s — even though they occupy the same geometric position.

For systems governed by Newton's second law (F = ma), the equation of motion is second-order in position: ẍ = f(x, ẋ, u). To convert this into the first-order form &ẋ; = f(x, u) that planning algorithms need, we double the state. The phase space (also called state space in control theory) includes both positions and velocities:

q = (x, ẋ)    so    q̇ = (ẋ, ẍ) = (ẋ, f(x, ẋ, u))

Now the system is first-order in q. The generalized coordinates q1, ..., qn describe configuration (positions and angles). Their time derivatives q̇1, ..., q̇n are the generalized velocities. Together they form the phase state.

Why planners need phase space. A planner that ignores velocity cannot reason about momentum. A robot moving fast toward a wall cannot stop instantly — it has kinetic energy that must be dissipated through braking. Planning in configuration space alone produces paths that are geometrically feasible but dynamically impossible. Phase-space planning accounts for velocity constraints and produces physically executable trajectories.

Phase portrait: the geometry of dynamics

In the phase plane (q, q̇), every trajectory of the system traces a curve. The collection of all such curves — one for each initial condition — is the phase portrait. For a simple harmonic oscillator (spring-mass system), the phase portrait consists of concentric ellipses. For a pendulum, it contains closed loops (oscillation) and separatrices (the boundary between oscillation and full rotation).

Phase Portrait — Spring-Mass System

A mass on a spring: mẍ = −kx − bẋ. The phase portrait shows (position, velocity) trajectories. With no damping (b=0), orbits are ellipses. Add damping and they spiral inward to rest.

Damping b 0.0
Stiffness k 1.0
A robot arm is at joint angle θ = 45°. Why is this information insufficient to predict the arm's future trajectory?

Chapter 4: Newton-Euler Mechanics

F = ma. You've known this since high school. But what does it mean for a robot with rotating links, joints, and distributed mass? The Newton-Euler formulation extends F = ma to rigid bodies by treating translational and rotational motion separately, then coupling them through constraints at the joints.

Newton's second law: linear momentum

For the center of mass of a rigid body:

F = m · acm = m · ẍcm

Here F is the net external force vector (3D), m is the total mass, and acm is the acceleration of the center of mass. This handles translation.

Euler's rotational equation

Rotation is governed by the rotational analogue: torque equals rate of change of angular momentum.

τ = I · α + ω × (I · ω)

Here τ is the net torque, I is the inertia tensor (a 3×3 matrix encoding how mass is distributed around the center of mass), ω is the angular velocity vector, and α = dω/dt is the angular acceleration. The cross-product term ω × (I·ω) is the gyroscopic term — it appears because we're writing the equation in the body frame, which rotates.

The inertia tensor I is the rotational analogue of mass. A scalar mass m resists all translational accelerations equally. The tensor I resists rotational accelerations differently depending on the axis — a thin rod is easy to spin around its long axis, hard to spin around its short axis. I has units of kg·m² and is symmetric positive definite.

Coupling through joints

A robot arm has n links connected by n joints. Each link satisfies its own Newton-Euler equations, but the forces and torques at each joint connect neighboring links. The Newton-Euler method processes this by recursive outward-inward sweeps:

Outward sweep (base → tip)
Propagate velocities and accelerations joint by joint, computing vi, ai, ωi, αi for each link
Apply Newton-Euler at each link
Compute the forces and torques needed to produce the computed accelerations
Inward sweep (tip → base)
Sum up joint forces and torques, propagating back to find the required joint actuator inputs

The result is a set of equations of the form τ = M(q)q̈ + C(q, q̇)q̇ + g(q), where M is the mass matrix, C encodes Coriolis and centrifugal effects, and g is the gravity vector. This is the manipulator equation — the equation of motion for any serial robot arm.

python
import numpy as np

def manipulator_dynamics(q, qdot, tau, M, C_func, g_func):
    """Solve manipulator equation for qddot.

    tau = M(q) @ qddot + C(q,qdot) @ qdot + g(q)
    => qddot = M(q)^{-1} @ (tau - C(q,qdot)@qdot - g(q))

    Args:
        q:      joint angles (n,)
        qdot:   joint velocities (n,)
        tau:    applied joint torques (n,)
        M:      mass matrix (n,n) — symmetric positive definite
        C_func: Coriolis matrix function C(q, qdot) -> (n,n)
        g_func: gravity vector function g(q) -> (n,)
    Returns:
        qddot:  joint accelerations (n,)
    """
    C = C_func(q, qdot)   # Coriolis/centrifugal (n,n)
    g = g_func(q)          # gravity torques (n,)
    rhs = tau - C @ qdot - g
    qddot = np.linalg.solve(M, rhs)  # M^{-1} @ rhs
    return qddot

# Euler integration step
def step(q, qdot, tau, M, C_func, g_func, dt=0.01):
    qddot = manipulator_dynamics(q, qdot, tau, M, C_func, g_func)
    q_new    = q    + qdot  * dt
    qdot_new = qdot + qddot * dt
    return q_new, qdot_new
In the manipulator equation τ = M(q)q̈ + C(q,q̇)q̇ + g(q), what does the term C(q,q̇)q̇ represent?

Chapter 5: Simple Pendulum — Phase Portrait Showcase

The simple pendulum is the most important example in all of classical mechanics. It's nonlinear, exactly solvable in terms of elliptic integrals, and shows every key feature of phase-space dynamics: stable equilibria, unstable equilibria, periodic orbits, and separatrices. It's the sandbox where intuition for differential systems is built.

The equations of motion

A mass m on a massless rod of length L, subject to gravity g. The angle θ is measured from the downward vertical. The torque from gravity is −mgL sinθ (restoring for small angles). The equation of motion is:

mL2θ̈ = −mgL sinθ − bθ̇ + τctrl

Dividing by mL2: θ̈ = −(g/L) sinθ − (b/mL2)θ̇ + u

Define ω02 = g/L and γ = b/mL2. The phase-space form (state = (θ, θ̇)):

dθ/dt = θ̇
dθ̇/dt = −ω02 sinθ − γθ̇ + u

Two equilibria: θ = 0 (stable, pendulum hanging down) and θ = π (unstable, pendulum balanced upright). The phase portrait tells you everything about the dynamics at a glance.

Interactive Pendulum + Phase Portrait

Left: the pendulum in physical space. Right: the phase portrait (θ, θ̇). The orange dot is the current state. Click the pendulum canvas to set initial angle. Use sliders to change damping and control torque.

Damping γ 0.10
Torque u 0.0
θ=0.00 ω=0.00
The separatrix is the boundary of doom. In the undamped phase portrait, there exists a curve — the separatrix — that passes through the unstable equilibrium at (π, 0). States inside the separatrix oscillate (the pendulum swings back and forth). States outside the separatrix rotate (the pendulum goes over the top, forever). The separatrix itself is the trajectory that asymptotically approaches the unstable equilibrium — infinitely slow as it approaches, never quite arriving.

Energy interpretation

The total mechanical energy of the pendulum is E = (1/2)mL2θ̇2 + mgL(1 − cosθ). With no damping and no control (u = 0, γ = 0), E is conserved — each phase portrait trajectory is a level curve of E. The separatrix corresponds to E = 2mgL, the energy needed to balance the pendulum perfectly upright.

Damping dissipates energy (dE/dt = −γθ̇2 ≤ 0), spiraling the trajectory inward toward the stable equilibrium. Control torque injects or removes energy. Swing-up control — bringing the pendulum from hanging to balanced — requires carefully pumping energy to cross the separatrix, then switching to stabilization at the top.

In the undamped pendulum phase portrait, what determines whether the pendulum oscillates or rotates continuously over the top?

Chapter 6: Lagrangian Mechanics

Newton-Euler is powerful but bookkeeping-heavy. For every link you need to track forces, torques, reaction forces at joints, and carefully propagate them through the chain. For a 7-DOF robot arm, that's seven recursive sweeps with 3D vector arithmetic at each step. There's a better way.

The Lagrangian formulation sidesteps all of that. Instead of tracking forces, you track energy. Define the Lagrangian as kinetic energy minus potential energy:

L(q, q̇) = T(q, q̇) − V(q)

Here T is the total kinetic energy of the system and V is the total potential energy. Both are scalar functions of the generalized coordinates q and velocities q̇. The Lagrangian captures everything about the system's dynamics in a single scalar — no vectors, no frames, no reaction forces needed.

Energy is coordinate-free. The beauty of the Lagrangian approach: kinetic energy T = (1/2)mv² and potential energy V = mgh don't care what coordinate system you use. You write them in whatever generalized coordinates are convenient (angles for a pendulum, arc length for a bead on a wire, joint angles for a robot), and the procedure gives you the equations of motion automatically. Newton-Euler requires careful attention to reference frames; Lagrangian does not.

A systematic recipe

Step 1: Choose generalized coordinates
Pick q = (q1, ..., qn) that describe all DOFs. For a double pendulum: q = (θ1, θ2).
Step 2: Write kinetic energy T
Express velocities of all mass elements in terms of q̇. T = (1/2) q̇T M(q) q̇.
Step 3: Write potential energy V
Express heights and spring deformations in terms of q. V = V(q) only — no velocities.
Step 4: Compute L = T − V
Just subtract the two scalars. L is now a function of (q, q̇).
Step 5: Apply Euler-Lagrange equations
d/dt(∂L/∂q̇) − ∂L/∂q = τ gives the equations of motion.

Worked example: single pendulum via Lagrangian

Generalized coordinate: q = θ (angle from downward vertical). The mass m is at position (L sinθ, −L cosθ).

Kinetic energy: velocity magnitude is Lθ̇, so T = (1/2)mL2θ̇2.

Potential energy: height is −L cosθ, so V = −mgL cosθ (taking zero at the pivot).

Lagrangian: L = (1/2)mL2θ̇2 + mgL cosθ.

Now apply the Euler-Lagrange recipe (next chapter). The result: mL2θ̈ = −mgL sinθ. Divide by mL2: θ̈ = −(g/L) sinθ. Exactly what Newton gives — but we never drew a free-body diagram.

What is the Lagrangian of a system?

Chapter 7: Euler-Lagrange Equations

We have the Lagrangian L(q, q̇) = T − V. How do we extract equations of motion from it? The answer is the Euler-Lagrange equations — one equation per generalized coordinate:

d/dt (∂L/∂q̇i) − ∂L/∂qi = τi

Here τi is the generalized force corresponding to coordinate qi: a torque if qi is an angle, a force if qi is a position. The left side is purely a function of L and its derivatives — no physics beyond energy. The right side is the external input.

Where the Euler-Lagrange equations come from

The Euler-Lagrange equations are the optimality conditions for the action functional: S[q] = ∫t1t2 L(q(t), q̇(t)) dt. Hamilton's principle states: the actual trajectory q(t) that a physical system follows is the one that makes S stationary (a local extremum) over all paths with fixed endpoints. Setting δS = 0 and integrating by parts produces exactly the Euler-Lagrange equations. This variational derivation reveals their deep origin — they're not arbitrary; they're the condition for the physical path to be optimal in a precise mathematical sense.

The manipulator equation falls out automatically. For a robot arm with n joints, T = (1/2)q̇T M(q) q̇ and V = V(q). Applying Euler-Lagrange to each joint gives τ = M(q)q̈ + C(q,q̇)q̇ + g(q) — exactly the manipulator equation from Chapter 4. The Newton-Euler approach required recursive sweeps. The Lagrangian approach requires only differentiation of two scalar functions.

Detailed derivation: double pendulum

Two pendulums linked: link 1 (mass m1, length L1, angle θ1) and link 2 (mass m2, length L2, angle θ2 relative to link 1). The position of mass 2 is:

x2 = L1sinθ1 + L2sin(θ12)
y2 = −L1cosθ1 − L2cos(θ12)

Its velocity squared: ẋ22 + ẏ22 = L12θ̇12 + L22(θ̇1+θ̇2)2 + 2L1L2θ̇1(θ̇1+θ̇2)cosθ2.

Total T = (1/2)m1L12θ̇12 + (1/2)m2[above]. Total V = −m1gL1cosθ1 − m2g[L1cosθ1 + L2cos(θ12)]. Applying Euler-Lagrange to each θi yields two coupled nonlinear ODEs — the double pendulum equations. No free-body diagrams. Just differentiation.

python
import numpy as np
from scipy.integrate import solve_ivp

def double_pendulum_rhs(t, y, m1, m2, L1, L2, g=9.81):
    """Euler-Lagrange equations for double pendulum.
    y = [theta1, dtheta1, theta2, dtheta2]
    """
    th1, w1, th2, w2 = y
    d = th2 - th1   # relative angle
    cos_d, sin_d = np.cos(d), np.sin(d)

    # Mass matrix elements (from Euler-Lagrange)
    M11 = (m1 + m2) * L1**2
    M12 = m2 * L1 * L2 * cos_d
    M21 = M12
    M22 = m2 * L2**2

    # Right-hand side (gravity + Coriolis)
    rhs1 = -m2 * L1 * L2 * w2**2 * sin_d - (m1+m2)*g*L1*np.sin(th1)
    rhs2 =  m2 * L1 * L2 * w1**2 * sin_d - m2*g*L2*np.sin(th2)

    # Solve 2x2 linear system for angular accelerations
    M = np.array([[M11, M12],[M21, M22]])
    rhs = np.array([rhs1, rhs2])
    alpha = np.linalg.solve(M, rhs)

    return [w1, alpha[0], w2, alpha[1]]

# Integrate for 5 seconds from near-vertical start
sol = solve_ivp(double_pendulum_rhs, [0, 5], [3.0, 0, 0.5, 0],
                args=(1, 1, 1, 1), max_step=0.01)
The Euler-Lagrange equation is d/dt(∂L/∂q̇i) − ∂L/∂qi = τi. What does the term ∂L/∂qi represent physically?

Chapter 8: Multiple Decision Makers — Differential Games

Everything so far assumed one player: a single robot with a single control input. But what about two robots competing for a target? A drone trying to evade a pursuer? An autonomous car sharing a road with a human driver who has their own objectives? These are differential games — dynamic systems with multiple decision makers, each optimizing their own objective.

A two-player differential game combines two control inputs in a single differential equation:

&ẋ; = f(x, u1, u2)

Player 1 (minimizer) chooses u1 ∈ U1. Player 2 (maximizer) chooses u2 ∈ U2. The classic pursuit-evasion game has the pursuer minimizing time-to-capture while the evader maximizes it. Neither player can observe the other's control directly — they must reason about each other's best strategies.

Zero-sum and the saddle point. In a zero-sum game, whatever Player 1 loses, Player 2 gains. The optimal solution concept is the saddle point: a pair (u1*, u2*) such that neither player benefits by unilaterally deviating. Equivalently: the minimax equals the maximin. At the saddle point, u1* minimizes the worst-case outcome against the best-responding u2*, and vice versa.

The pursuit-evasion game on the plane

Pursuer P at position p ∈ ℝ2, evader E at position e ∈ ℝ2. Both move at fixed speeds: ‖ṗ‖ = vP, ‖ė‖ = vE. The state is x = p − e (relative position). The game ends when ‖x‖ ≤ r (capture radius).

The key quantity is the value function V*(x) — the optimal time-to-capture when both players play optimally. It satisfies the Hamilton-Jacobi-Isaacs (HJI) equation:

minu1 maxu2 [∇V · f(x, u1, u2)] = −1

The −1 on the right comes from the fact that value decreases by 1 per second of real time. Solving the HJI equation gives V* and the saddle-point strategies: the pursuer steers to minimize V (head toward capture), the evader steers to maximize V (flee optimally).

Isaacs' result: the homicidal chauffeur

A famous differential game (Isaacs, 1965): the pursuer is a car with minimum turning radius rmin (think a fast but not very maneuverable vehicle). The evader is a slower pedestrian with no turning constraint. Who wins? It depends on the geometry. When the pursuer is fast enough and the initial configuration is in the "capture zone," the pursuer always wins regardless of evasion strategy — this zone boundary is called the barrier or safe evader set.

Pursuit-Evasion on the Plane

Orange: pursuer. Teal: evader. The pursuer uses "pure pursuit" (always head toward evader). The evader runs perpendicular to the line of sight. Adjust speed ratio to see who wins.

Speed ratio vP/vE 1.5
Distance: —

Nash equilibria in general-sum games

Not all multi-player games are zero-sum. In a general-sum game, each player has a distinct cost functional. A Nash equilibrium is a strategy profile where no player benefits by unilaterally switching strategies. For two players with cost functionals J1, J2:

J1(u1*, u2*) ≤ J1(u1, u2*)   ∀ u1
J2(u1*, u2*) ≤ J2(u1*, u2)   ∀ u2

Finding Nash equilibria for differential games requires solving a coupled system of HJI equations — one per player. This is significantly harder than the single-player (optimal control) case and remains an active research area.

In a zero-sum pursuit-evasion game, what does it mean for (u1*, u2*) to be a saddle-point equilibrium?

Chapter 9: Connections and What Comes Next

You've now seen the full differential-model toolkit. Let's place it in context: what came before, what comes after, and where this mathematics appears beyond robotics.

What we built in this chapter

ConceptThe key equationWhat it enables
Velocity constraints&ẋ; = f(x, u)First-order form; input to all planners
Nonholonomic constraintsA(x)&ẋ; = 0, not integrableExplains parallel parking, car steering
Phase spacex = (q, q̇); q̈ → q̇ augmentationHandles inertia, momentum in planning
Newton-Eulerτ = M(q)q̈ + C(q,q̇)q̇ + g(q)Robot arm dynamics, explicit forces
LagrangianL = T − VEnergy-based formulation, cleaner algebra
Euler-Lagranged/dt(∂L/∂q̇) − ∂L/∂q = τSystematic recipe for equations of motion
Differential games&ẋ; = f(x, u1, u2); HJI equationMulti-agent scenarios, pursuit-evasion

The bridge to Chapter 14

Chapter 14 (Sampling-Based Planning with Differential Constraints) takes everything from this chapter and asks: how do we plan trajectories for systems governed by &ẋ; = f(x, u)? The key insight is that random-tree methods (RRT, EST) extend naturally: instead of sampling configurations and connecting them with straight lines, you sample controls u and integrate &ẋ; = f(x, u) forward to generate edges. The differential model you learned here becomes the edge generator for the planner.

Control-space sampling vs. configuration-space sampling. For holonomic systems, random trees sample in C-space and connect with geometric paths. For systems with differential constraints (cars, helicopters, robot arms with dynamics), trees must sample in control space U and integrate to get new states. The planner has no choice: the physics of &ẋ; = f(x, u) determines which directions are reachable.

Where differential models appear beyond robotics

DomainState xInput uModel &ẋ; = f(x, u)
AerospacePosition, velocity, attitudeThrust, aerodynamic surfaces6-DOF flight dynamics equations
EconomicsCapital stock, resource levelInvestment, extraction ratePontryagin maximum principle optimal control
BiologyPrey/predator populationsHarvesting rateLotka-Volterra with control
Legged robotsBody pose, contact forcesJoint torquesHybrid dynamics (phases: stance/flight)
Multi-agentJoint state of all agentsEach agent's controlDifferential game HJI

Limitations of the differential-model framework

Model accuracy. The manipulator equation assumes rigid links and perfect actuators. Real robots flex, backlash exists, and motors have nonlinear saturation. Model errors propagate through integration, growing over time. Robust and adaptive control methods address this.

Contact discontinuities. When a robot foot hits the ground, the dynamics change abruptly — a hybrid system with discrete mode switches. Pure differential equations don't capture this; hybrid systems theory extends &ẋ; = f(x, u) with discrete guards and reset maps.

Integration accuracy. Euler integration (Δx ≈ f(x,u)Δt) accumulates errors. Real implementations use Runge-Kutta 4 (RK4) for ~10× better accuracy at similar cost. ODE solver libraries (scipy.integrate.solve_ivp) handle stiff systems automatically.

Related micro-lessons

"What I cannot create, I do not understand." — Richard Feynman. You can now write the equations of motion for any rigid-body system from scratch: pick coordinates, write T and V, apply Euler-Lagrange, get equations of motion. That's the test. If you can derive the double pendulum equations without looking them up, you understand differential models.