ROBOTICS 101Concept explainer

Physics Simulation and Time Steps

A physics engine moves time forward in small steps. Stiff things, like hard ground or a tight joint, change force very quickly, and if the step is too large the simulator overshoots, adds energy that is not there, and the robot jitters or flies apart. This is the most common way robot simulations go wrong.

A stability limit

Contact acts like a spring of stiffness \(k\) on a mass \(m\), with natural frequency \(\omega_n = \sqrt{k/m}\). For semi-implicit Euler to stay stable, the time step must be small compared with that oscillation:

$$\Delta t < \frac{2}{\omega_n} = 2\sqrt{\frac{m}{k}}$$

Explicit Euler is worse: it adds a little energy every step at any step size, so stiff contacts always drift unstable.

What to notice

With a small step, the box settles and rests quietly. Raise the step and it starts to buzz, then hop, then fly off. Stiffer ground lowers the safe step, which is the trade-off from the contact concept: harder contact looks more real but needs a smaller step, which is slower to simulate. The readout shows the stability limit and how close you are.

Simulators handle this with small fixed steps, implicit integrators, or solvers that treat contact as a constraint instead of a spring. When a robot model explodes in simulation, a too-large time step or a too-stiff joint is the first thing to check.