Designing a robot jump from its physical limits

Comparing body-derived and human-retargeted jumping strategies, investigating the role of crouch depth, and developing a simulated box jump with controlled landing.

Sun Sep 13 2026 00:00:00 GMT+0000 (Coordinated Universal Time)

Part of the Robotic Movement series. Project page section: Jumping.

Why the jump came first

The vertical jump covers nearly everything I cared about in one movement. It is maximal, it uses the whole body, the only external forces are gravity and the ground, and it is one of the best-studied human movements, so there is published data to check against. If the idea could not produce a good jump, it would not produce anything.

Does the robot’s best jump look human?

For a while I believed the robot’s optimal jump looked nothing like a person’s. The plain optimiser’s solutions did not crouch at all; they pushed off fast and stiff and got their speed from a huge arm swing. I asked to see the best jump animated, and it changed my mind.

The best jump, the one derived from the robot’s own specification, uses the human strategy, exaggerated. It drops into a 36 cm crouch with the knees folding to about 166°, where a person stops around 90 to 110°, then drives the hips, knees and ankles while swinging the arms up. It takes off at over 3 m/s within the motors’ rated speeds. A recorded human jump, replayed on the same robot, takes off at only 0.5 to 1.6 m/s. The plain optimiser’s solutions had not been non-human by nature; the search had simply not found the better strategy.

Baseline: a recorded human jump mapped onto the G1 and tracked. The only human data in the project.
The starting strategy computed from the robot's own specification: a certified deep crouch, then full extension.

Watching it, I was convinced it was essentially the optimal squat jump for this body: an exaggerated human squat jump, deeper because the robot is not limited by flexibility. My first instinct was that the deeper crouch stored more elastic energy. That turned out to be wrong in an instructive way. The G1 has no springs or tendons, and making its joint limits fully inelastic changes takeoff speed by only 1 to 2%. The crouch wins through stroke length: work is torque times the angle each joint moves through, and a deeper crouch gives the hips, knees and ankles a longer range to push over before the feet leave the ground. The intuition was right that the crouch is what adds height. The mechanism was range, not spring.

Landing it

A jump that cannot land is not a jump. My instinct for balance came from the body: keep a line from the crown to the navel perpendicular to the floor, keep the soles parallel to it, and crouch slightly on landing to absorb the shock. The landing controller does essentially that: it sets the soles parallel to the floor in flight and yields into a damped crouch at touchdown.

The deep jump, landed by a balance controller.

Once the deep crouch was found, I stopped treating maximum jump height as the goal. That test had done its job: it showed that the strategy derived from the body beats both the plain optimiser and the copied human.

The box jump

The box jump took longer than anything else here, and I am glad I did not stop at the first failure. The G1 now jumps onto a 0.20 m box, lands with both feet on top and holds its balance for three seconds, with a realistic 10 ms motor lag, and it holds up under most of the disturbances I threw at it. Two things made it work, and both are what a person does: the feet reach ahead in flight to catch the forward momentum, and the landing controller anticipates the motor lag instead of reacting to it. A 0.30 m box is still out of reach for the G1: its 35 N·m waist hits its joint stop on every hard push, which caps the takeoff.

Unitree G1 jumps onto a 0.20 m box, lands and holds its balance for three seconds.

Previous: Where it started. Next: The throw.