TL;DR:
A robot tips when its center of mass moves outside the support polygon, the area enclosed by its ground contacts.
A higher center of mass and a narrower base give a smaller tilt angle before tipping:
tan θ = (half width) / (COM height).Hard braking, sharp turns and slopes tip a robot at lower angles than you expect. Keep heavy things low and centered.
A small wheeled robot drives happily around the floor. You bolt a camera mast with a battery on top, and the next sharp turn knocks it over. Nothing about the motors or code changed. The only change was where the weight is.
What it does on a robot
Stability is a property of the shape and mass layout of the robot, not of its controller. A robot that is stable only because its software keeps correcting it (like a self-balancing robot) is different from a robot that is stable by design. Most mobile robots should be stable by design.
The center of mass and the support polygon
The center of mass (COM) is the average position of all the mass of the robot. For a combination of parts, you find it by weighting: COM height = (m₁h₁ + m₂h₂ + ...) / (m₁ + m₂ + ...).
The support polygon is the area on the ground bounded by the points where the robot touches. For a four-wheeled robot, it is the rectangle between the wheels. The robot is stable while the point on the ground straight below its COM lies inside the polygon. If a tilt, a push or an acceleration moves the COM's ground projection past an edge, gravity turns the robot over that edge.
Worked example: a robot carrying a load high up
A robot base has mass 5 kg, its COM is 0.15 m above the floor, and the wheels are 0.30 m apart, so the half-width is 0.15 m. If it tilts sideways about the edge of the wheels, it tips when the COM is above the edge, which happens at a tilt angle θ:
tan θ = half-width / COM height
Base only:
tan θ = 0.15 / 0.15 = 1.00, soθ = 45°. A slope or tilt of up to 45° does not tip it (ignoring slipping).Add a 2 kg load on a mast at 0.60 m. The total mass is 7 kg. The new COM height is
(5 × 0.15 + 2 × 0.60) / 7 = (0.75 + 1.20) / 7 = 1.95 / 7 = 0.2786 m.New tipping angle:
tan θ = 0.15 / 0.2786 = 0.538, soθ = 28.3°. The same robot now tips at a much smaller tilt.Lower the load to 0.10 m. The COM height is
(0.75 + 2 × 0.10) / 7 = 0.95 / 7 = 0.1357 m. Thentan θ = 0.15 / 0.1357 = 1.105, soθ = 47.9°. It is even more stable than the base alone.
Acceleration tips a robot too. When braking, the inertia of the COM pushes the robot forward. Suppose the front and rear wheels are 0.30 m apart, so the half-length is 0.15 m. The robot tips forward when the deceleration exceeds:
a_tip = g × (half-length) / (COM height)
With the tall load, a_tip = 9.8 × 0.15 / 0.2786 = 5.28 m/s². With the load at 0.10 m, a_tip = 9.8 × 0.15 / 0.1357 = 10.8 m/s². If the robot can brake harder than 5.28 m/s² when the load is high, it will nose over. (Real wheels often slip before that, which limits braking, but you should not rely on slipping.)
Where it goes wrong
Forgetting the payload. The COM moves when you add a gripper, an arm that reaches out, or a full tank of water. Re-compute with every change.
Moving parts. A robot arm extending changes the COM as it moves. Liquid sloshing moves it too.
Turns. In a turn the robot accelerates sideways,
a = v² / R. It tips outward whenv² / Rexceedsg × (half-track) / (COM height). For our tall robot and a 0.5 m radius,v² = 5.28 × 0.5 = 2.64, which isv = 1.62 m/s. Faster than that, it rolls. Check:1.62² / 0.5 = 5.25, which matches.Slopes. On an incline the COM projects toward the downhill edge. A robot parked across a slope tips at the angle computed above, minus any margin from bumps.
Dynamic loads. Hitting a bump, or a wheel dropping into a gap, adds a sudden tilt.
Making a robot harder to tip
Put the heaviest parts, usually the battery and motors, low and near the center.
Widen the wheel base: tip angle depends on half-width over height.
Add outriggers or small wheels that extend the base for an arm or a tall mast.
Limit speed in turns and deceleration, in software.
Slow down when an arm is extended.
Add a tilt sensor that stops the motors and lowers the arm when the angle gets near the limit.
Safety: A tipping robot can crush a hand or a foot and its battery may be damaged in a fall. Test with a safety margin well below the computed tipping point, on a soft floor, with the robot at low speed, and keep your hands out from under the robot while testing tilt. Do not hold a tipping robot up with your body, let it fall and then switch off the power.
How real robots use it
Forklifts, mobile manipulators and humanoids are designed around the same rule. A forklift keeps its load low while driving, because raising it lifts the COM. A mobile arm will often compute the COM for every pose and slow down when the margin is small. For legged robots, the support polygon changes with every step, which is the subject of static and dynamic balance in legged robots.
Try it yourself
Make a small tilting experiment. Put a toy car or a box on a board, add a small weight at different heights with tape, and slowly lift one edge of the board until the toy tips. Measure the angle with a protractor or from the height of the lifted edge. Compare it with atan(half-width / COM height). Tape the weight lower and repeat. Do it over a soft surface.
Frequently asked questions
Does a heavier robot tip less easily?
Not by itself. Tipping depends on where the mass is, not how much. A heavy robot with the weight low and a wide base is stable. A heavy weight placed high makes it worse.
How do I find my robot's center of mass?
Balance it on a pivot in two different orientations and mark where the lines cross, or compute it from each part's mass and position.
