Engineering
Snake robot
At dusk, in front of a collapsed building, a rescue team tests its snake robot on a taped field of raked dust: eight orange links on passive wheels, each joint driven along the serpenoid gait alpha sin(omega t + i beta) + gamma. Nothing pushes the robot forward but the ground - the wheels let a link slide along itself ten times more easily than across - and its translation and turning come out of the force and torque balance of the whole chain. Watch it crawl at the averaged speed the massless chain predicts, make the friction equal along and across and see it wriggle on the spot, set a small amplitude and meet the second-order closed form, offset the joints and follow it round a circle close to the ideal track. Every joule the joint motors put in reappears as heat in the dust.

What happens
Eight rigid links of 0.2 m and 0.6 kg (inertia m·l²/12) joined by motor joints whose angles follow the serpenoid gait φ_j = α·sin(ω·t + j·β) + γ from the tail to the head: 30° amplitude, 45° phase lag per joint, 0.5 Hz; the turning offset γ follows its setting critically damped with 0.5 s. The shape is prescribed, the body is not: the centre of mass and the mean heading follow from the total force and the torque about the centre of mass, integrated through the momentum and the angular momentum L = I(t)·dθ/dt + h(t). Each link feels the ground at its centre: viscous, 1.5 N·s/m along the link and 15 N·s/m across it (the passive wheels), its spin resisted by c_n·l²/12; or Coulomb on the friction ellipse with μ_t = 0.06 and μ_n = 0.6, smoothed below 2 cm/s. The anisotropy slider sets both ratios. RK4 in 2 ms steps; a recursive Newton–Euler pass from the tail gives every joint force and motor torque, closing at the head to round-off, and the motor power Στ·dφ/dt and the friction power are integrated with the same weights, so motor work = friction heat + kinetic change to 10^-8 J. The massless chain - zero net force and torque at every instant, a 3×3 solve - gives the averaged speed numerically; its second-order expansion with the first-order yaw recoil gives the small-amplitude closed form, exact as α → 0. The ideal track radius of a body sliding along its own mean arc is (l/γ)·J0(α/(2·sin(β/2))). The run pauses when the camera head reaches the tape.
Try this
Watch the speed over a gait cycle settle on the massless prediction; set the anisotropy to 1 and the robot wriggles on the spot; set the amplitude to 5° and compare with the closed form; turn the joints by 6° and compare the circle with the ideal track; try the Coulomb ground.
The model and its limits
A planar chain on flat ground with prescribed joint angles (ideal motors without torque limits), friction acting at the link centres, no contact with obstacles, no slip of the wheels on their axles, no tether drag. Speeds are those of this idealized robot, not of a real rescue snake in rubble.
Equations used in the module
Equations φ_j = α·sin(ω·t + j·β) + γ, F_j = −c_t·(v_j·t_j)·t_j − c_n·(v_j·n_j)·n_j M·dV/dt = ΣF_j, dL/dt = Σ(r_j − R)×F_j + ΣT_j, L = I(t)·dθ/dt + h(t) W_motor = ∫Στ_j·dφ_j/dt dt, W_motor + W_friction = ΔE_k V ≈ (c_n − c_t)/(N·c_t)·mean Σψ_j·(dy_j/dt + Ω·x_j) ~ α²·ω, R = (l/γ)·J0(α/(2·sin(β/2)))


