What it means: every object — robot, crate, you — behaves, as far as tipping is concerned, as if all of its weight were squeezed into a single point: the centre of gravity (CG). Where that point sits relative to the wheels decides whether the robot stands proud or falls flat on its face.
Why it matters: a robot is only supported where it touches the ground. Two wheels give a support base that is just the line segment between the two contact points. Gravity pulls straight down through the CG — imagine a plumb (weight-on-a-string) line dropped from the CG. As long as that line lands between the wheels, the ground can carry the robot. The moment it lands beyond a wheel, nothing can hold the robot up: it rotates about that wheel and goes over. Try it yourself: stand with your heels against a wall and bend forward to touch your toes — you can't, because your CG's plumb line would swing outside your feet.
How it works: ① the payload shifts and raises the combined CG (a heavy load high up is the worst combination); ② the ramp tilts, so the plumb line drifts downhill relative to the wheels; ③ the robot tips the instant the plumb line passes the downhill wheel contact; ④ the tip angle θ_tip depends on just two ratios: how wide the wheelbase W is compared to the CG height hcg, and how far off-centre the CG sits; ⑤ the safety margin θ_tip − θ is the engineer's headroom — how many degrees of tilt you can still survive.
Where you see it in real engineering
Sumo robot champions are low and wide — CG a couple of centimetres off the deck and the wheelbase at the rules' limit, so they simply refuse to tip while shoving. Forklifts carry a rated load chart because a load placed further out both shifts and raises the combined CG — exceed the chart and the truck pole-vaults over its front axle. Racing motorbikes hang the rider off into the corner to keep the combined CG over the tyres, and stand-up scooters keep the deck low for the same reason.
🧮 The maths
hcg = (m·h + mp·hp) / (m + mp) , xcg = mp·p / (m + mp) , tan θtip = (W/2 − |xcg|) / hcg m — robot body mass (kg) · h — CG height of the bare body (m, shown in cm) · mp — payload mass (kg) · hp — payload CG height, fixed at 0.10 m · p — payload position along the platform, + toward the downhill wheel (m, shown in cm) · W — wheelbase between wheel contacts (m, shown in cm) · hcg — combined CG height (m) · xcg — combined CG offset from the wheelbase centre (m) · θtip — tilt angle at which the plumb line reaches a wheel contact (°) · safety margin = θtip − θ (°)
Worked example: W = 12 cm, h = 6 cm, m = 1 kg, no payload. Then hcg = 6 cm and xcg = 0, so tan θtip = (12/2)/6 = 1 and θtip = atan(1) = 45.0°. Set those sliders in the workspace — the tip-angle tile reads exactly 45.0°.
Assumptions & limitations: the robot is a rigid body represented by a point-mass CG — no rocking, suspension or flex; this is statics only: the tip angle is where tipping starts, and any dynamic swing or bounce is ignored; wheels never roll or slide on the ramp; the payload is bolted down (no shifting cargo). The stability margin uses the distance from the CG to the nearest wheel (W/2 − |xcg|) — the safe, worst-case engineering choice: any off-centre payload shrinks the margin we display. With the payload toward the uphill wheel, real tipping actually happens slightly later than shown; toward the downhill wheel the formula is exact. This simulation is an educational approximation of a real chassis on a real ramp — real designs add suspension compliance, tyre deformation and dynamic load shifts, which the model ignores.
🕹 Simulation workspace
Controls
Start tilts the ramp at 12°/s until the robot goes over (Restart re-runs from the slider angle, Pause freezes mid-tilt, Reset restores every default). You can also drag θ yourself; changing any slider puts the robot back upright. The payload slider's range always matches the wheelbase.
Live measurements
Combined CG height hcg—
CG offset xcg—
Tip angle θtip—
Safety margin θtip−θ—
Ready
Tiles are computed from the geometry every frame — nothing here is a fixed number. Status: STABLE (margin > 5°), CLOSE (0–5°), WILL TIP (negative).
robot body (cartoon — CG height is the marked point)payload crate at height 10 cmCG ⊕ + plumb line — green stable / amber close / red tippingtip axis: the downhill wheel it rotates abouttilting ramp + θ arc
📈 Graphs
Tip angle θtip = atan((W/2 − |xcg|)/hcg) swept over the body-CG-height slider, using your current wheelbase and payload. The amber line is your current tilt θ: when the blue curve dips below it, the robot goes over. The red tick marks where you are right now.
🧪 Guided experiments
🏆 Engineering challenges
🌍 Real-world applications
🤖 Sumo robotsChampions crouch the CG low and use every centimetre of legal wheelbase — they refuse to tip while shoving. This page grew out of the Sim Lab Robot Sumo Push simulator: low and wide wins there too, and that sim adds the pushing battle on top of the stability fight.
🚜 ForkliftsThe rated load chart shrinks as the load moves further from the front wheels — exactly the (W/2 − |xcg|)/hcg margin shrinking as xcg and hcg grow. Exceed it and the truck pole-vaults over its front axle.
🚴 Motorcycles in cornersLeaning moves the combined CG sideways; riders hang off the inside to keep the plumb line within the contact patch so the tyres, not the angle, set the limit.
🛴 Stand-up scooters & balance botsA low deck keeps hcg small, so the rider can lean a long way before the plumb line clears the wheels — the same number self-balancing robots guard every millisecond.
🔧 Try it with hardware — ESP32 + MPU-6050Build a two-wheel chassis, stand it on a plank you tilt slowly, and log the IMU tilt until it topples. Compare the measured tip angle with the sim's θtip, then bolt ballast down low and measure again.
⚙️ Try it with hardware — Arduino UNO R4 + rulerMeasure W with a ruler and estimate h (CG ≈ halfway up the body), predict θtip = atan((W/2)/h), then find the real tip angle with a phone inclinometer under the plank. Aim for ±5°.
✅ Check your understanding
📌 What you discovered
Every object tips as if all its weight sat at one point — the centre of gravity.
A payload shifts the CG sideways (xcg = mp·p/(m+mp)) and a tall load raises it (heights blend weighted by mass).
The tip angle follows tan θtip = (W/2 − |xcg|)/hcg — lower CG and wider wheelbase both push it steeper (atan makes it non-linear: 71.6° → 16.7° as h goes 2 → 20 cm).
The plumb-line test is the whole lesson: weight line between the wheels = stable; past a wheel = tip, rotating about the downhill wheel.
Engineers design to a safety margin θtip − θ that stays positive with room to spare — the nearest-edge, worst-case number.
➡ Engineering takeaway: stability is a race between the plumb line and the wheelbase — keep the CG low, keep it centred, make the base wide. Can't lower the CG? Widen the base. Can't widen it? Ballast it low.