Torque, speed & reach
Momentum substitutes for torque only where a slow motion is blocked; on Pupper the binding limits are speed, power and reach
Using momentum to do what a motor cannot do slowly is established physics with a long robot record. A joint too weak to hold a pendulum horizontal can still swing it over the top by adding energy stroke by stroke. Driven at its own joint, a pendulum needs about 0.93/r strokes, where r is the torque limit divided by the torque needed to hold it horizontal (arithmetic in the theory note; Åström and Furuta 2000 give exact thresholds for the cart pendulum). Topping, Kenneally and Koditschek (ICRA 2017) state the general test for legged robots. A task is infeasible slowly when geometry or the continuous (thermal) torque rules it out, and infeasible dynamically only when energy or power runs short. Their Minitaur needed 0.55 N·m/kg to crawl up a 0.196 m stair against 0.3 N·m/kg of continuous torque, but two legs could deliver 12.96 J against the 11.5 J needed, and it bounded up. RHex righted itself in 10 of 10 trials with its front-leg torque limit cut by 90 %, by pumping energy over three thrusts (Saranli et al., IJRR 2004). Backflips have been flown at torque ratios of 1.6–3.1 (Solo-8, Mini Cheetah), and learned policies climb about one leg length (A1, Solo-12, ANYmal).
Three findings bound the idea.
- Momentum does not lower peak torque. It moves the demand from a sustained static load to short peaks. Faster chair rises need disproportionately larger knee moments, and Mini Cheetah's backflip held its hips at the torque limit for about 0.2 s.
- A countermovement, the dip before a jump, adds nothing when the motor has no internal state. The push-off then starts from the same state as a squat jump from the same depth. People gain 3.4 cm from it mainly because muscles need time to activate; a muscle model with instant activation keeps only 0.4 cm (Bobbert and Casius 2005). A countermovement pays through a spring. On arms with series or variable-stiffness springs, every optimal input found begins with a backswing, and link speed reached 2.45–2.72 times motor speed (Haddadin et al. 2009; Wolf and Hirzinger 2008).
- When momentum skills fail on hardware, the cause is usually electrical, not the simulated torque clip. An A1 jump policy trained with a plain torque clip demanded about 30 V from a 21.5 V pack and about 3,750 W from a 1,290 W battery, and failed. Only the policy trained with both a voltage and a power limit succeeded (Bellegarda et al. 2024). Solo-12's parkour policy stayed within its torque limits but damaged its batteries (Chane-Sane et al. 2024).
Using momentum is also not a research gap by itself. Any optimizer bound by a torque limit uses it where it pays: an A1 parkour policy learned on its own to back away from a box after a failed climb, to gain run-up space (Zhuang et al. 2023). What is missing is the measurement behind the question. No paper compares the peak torque a learned dynamic motion uses with the quasi-static requirement of the same task, and no torque-limit sweep of a dynamic skill has been run on hardware.
Pupper v3 has no slow-motion torque problem on flat ground. Every static posture computed from the training model needs at most 2.3 N·m against the 3 N·m clip, and its torque ratio of 2.2 sits among the robots that flipped and climbed. Its limits are speed, power, reach and the control interface. With the training model's flat 3 N·m clip, a scripted squat jump spins the knees to 37 rad/s and lifts the centre of mass (CoM) 0.150 m. With the GIM4305's retailer torque–speed figures at 20 V the same jump lifts it 0.114 m, with a pessimistic line 0.057 m, and through the robot's own PD interface 0.043–0.052 m. A countermovement never raised a rigid-leg jump, in 9 of 9 paired runs; knee springs did. Walking momentum is worth little on stairs: 1.3 cm of height at 0.5 m/s.
One finding falls outside the question. The ROS 2 simulator used to check our policies caps every joint at about 1.37 N·m. Its actuator model applies motor-side constants at the joint. Every check made there so far ran under that cap.
For Shappy the position, in order:
- Fix the simulators first. Put the GIM4305's torque–speed curve and a battery current or power cap into the training model, measured on one motor at 20 V. Correct the ROS 2 simulator's actuator constants.
- Frame the research as how much torque a skill needs when the controller may use momentum, not as using momentum. Measure it as a torque-limit sweep, the same recipe trained free and trained slow, against the slow-motion bound.
- Make self-righting the first skill. Pupper needs it anyway, a slow roll is blocked, its legs carry half its mass, and no energy-landscape study of righting exists for a quasi-direct-drive quadruped. Run the sweep in MJX, then on the robot with lowered driver torque limits, as RHex did.
- For v2, run the same sweep on the Go2 model's stair task inside the planned stair simulation gate. Add springs only if stair torque or jumping becomes the constraint.
Not recommended: countermovement jumps on the rigid Pupper, and momentum as the lever for the 3–4 cm stairs.
Sources and per-paper numbers are in four research notes in notes/research_notes/Momentum beyond torque limits/:
theory_and_biomechanics.mdrigid_actuator_momentum_skills.mdelastic_storage_power_amplification.mdactuator_limits_and_learning.md
The Pupper calculations are pupper_momentum.py and its output pupper_momentum_output.txt in the same folder.
The physics: momentum relaxes a torque limit only where the slow path is blocked
A torque-bounded joint can pass through a configuration whose static torque exceeds the bound if it carries enough kinetic energy into that region. The energy must exceed the work deficit, the integral of (static torque − torque limit) across the blocked stretch. The energy is collected where the static demand is low. In an oscillation, gravity stores it between strokes, which is why pumping always succeeds on a frictionless pendulum.
The pendulum gives the scaling (theory note, computed for a point-mass pendulum with bang-bang torque at its joint):
| r = torque limit / torque to hold horizontal | strokes to pass the top | time, in units of 1/ω0 |
|---|---|---|
| 1.0 | 1 | 3.4 |
| 0.725 | 1, threshold | – |
| 0.5 | 2 | 7.2 |
| 0.42 | 2, threshold | – |
| 0.2 | 5 | 18.0 |
| 0.1 | 10 | 37.0 |
One backswing before the push lowers the one-push threshold from r = 0.725 to 0.42. The backswing lengthens the path over which positive work is done, and gravity returns the energy stored during it. Planners that propagate velocities instead of quasi-static states swung up an 8 kg-per-link double pendulum with 70–83 % of the torque needed to hold its critical configuration, needing more swings as the limits tightened (Pham et al., IJRR 2017). Hardware pumping is slow. A three-link high-bar robot reached a handstand after about 7 s, and a 4.8 kg brachiator caught a bar 0.6 m away after three swings, in 2.9–7.5 s (Liu and Yamaura 2011; Nakanishi et al. 2000). Åström and Furuta recommend energy control with a 10–20 % energy excess over minimum-time control, whose energy overshoot exceeds 200 % at high authority.
Topping et al. (ICRA 2017) turned this into a design test for legged robots. A "quasi-static mismatch" comes from geometry or from too little continuous torque per kilogram. A "dynamic mismatch" comes from too little energy or power. Minitaur failed the first test on stairs on both counts: crawling a 0.196 m riser needs 0.55 N·m/kg against 0.3 continuous, and its 0.14 m leg workspace is shorter than the riser. It passed the second test (12.96 J available against 11.5 J needed) and bounded up. A winged robot failed on geometry alone: righting slowly needs about 90° of wing opening against a 75° maximum, yet it righted dynamically in every trial above 55° (Li et al. 2017).
Momentum does not lower peak torque in general. In human chair rises, faster rises need disproportionately larger knee moments. The sum of peak hip and knee moments rises exponentially for rises shorter than 2.5 s, above a static floor of about 1.53 N·m/kg (Yoshioka et al. 2007, 2009). Among older adults, the momentum-transfer strategy did not have the lowest knee torque (Scarborough et al. 2007). What momentum buys in a chair rise is passage through a state where the CoM is still behind the feet, which no slow motion can hold. In robots the same trade appears as short saturated peaks: two of Mini Cheetah's hips sat at the torque limit for about 0.2 s of its backflip (Di Carlo 2020).
The countermovement question has a clean answer for motors. With an ideal torque source, or a torque–speed line, a countermovement jump and a squat jump that start push-off from the same lowest configuration at zero velocity have identical feasible push-offs. The countermovement therefore adds nothing (theory note). It helps only through four things:
- actuator state: muscle activation, current rise, PD tracking error, latency, backlash;
- an elastic element that stores the descent;
- a deeper start than a squat could hold;
- segments that keep doing positive work, as arm swing does.
In people the countermovement adds 3.4 cm at the same start depth, explained by active-state build-up rather than elastic energy (Bobbert et al. 1996). A model keeps 2.5 cm of that with slow activation and 0.4 cm with instant activation (Bobbert and Casius 2005). Arm swing adds more, 0.086 m (Lees et al. 2004), and it transfers to motors: the extra load slows the pushing joints and keeps them on the high-torque part of their force–velocity curve, which a motor's torque–speed line reproduces. One part of the active-state argument may survive on Pupper. Its policy commands PD targets at 50 Hz, and 3 N·m needs 0.6 rad of tracking error at kp = 5. Building that error takes at least one policy step, a sizeable share of a 0.08–0.10 s push-off. No study has tested countermovement against squat jumps with stiff electric actuators.
What robots have done with momentum
Momentum skills on electric legged robots fall into four groups. Torque ratios below are the peak torque of the strongest leg joint divided by (m g / 4) × leg length; Pupper scores 2.2 at its 3 N·m clip. The ratio ignores joint speed, linkages and allowed contacts, so it is a coarse comparison.
| Skill | Robot | Torque ratio | Result | Source |
|---|---|---|---|---|
| Backflip, single take-off from rest | Mini Cheetah, 9 kg | 3.1 | 23 flips in a row; hips at the torque limit for about 0.2 s; trajectory optimized offline with a velocity-dependent torque limit | Di Carlo, MIT thesis 2020 (Katz et al., ICRA 2019) |
| Backflip, learned from hand-carried demonstrations | Solo-8, 2.2 kg | 1.6 | transferred to hardware with an external battery and motion capture; no success rate | Li et al., CoRL 2022 |
| Self-righting by pumping | RHex, 8.5 kg | 1.7 | torque limits cut by 90 / 20 / 20 % (front / middle / rear): righted in 10 of 10 trials after three thrusts | Saranli et al., IJRR 2004 |
| Self-righting where slow righting is impossible | winged robot, about 100 g | — | slow righting needs about 90° of wing opening against a 75° maximum; dynamic pushes righted every trial above 55° | Li et al., Advanced Robotics 2017 |
| Self-righting with an oscillating leg | 260 g robot with a 51.5 g pendulum leg | — | always righted at 45° leg amplitude, on the first wing opening | Othayoth and Li, eLife 2021 |
| Stairs: bounding where crawling is impossible | Minitaur, 5 kg | 1.0–2.0 | crawling a 0.196 m riser needs 0.55 N·m/kg against 0.3 continuous; bounding needs 11.5 J against 12.96 J from two legs; it bounded up | Topping et al., ICRA 2017 |
| Climbing a box with a front-leg pull | A1, 12.5 kg | 2.7 (2.1 at the 25 N·m safety clip) | 0.40 m box 8 of 10; 0.50 m 3 of 5 (1.0–1.25 leg lengths) | Zhuang et al., CoRL 2023; Cheng et al., ICRA 2024 |
| Climbing a step | Solo-12, 2.5 kg, Raspberry Pi 5 onboard | 1.4–1.5 | 0.40 m step (1.25 leg lengths) in 85 % of trials | Chane-Sane et al., CoRL 2024 |
| Gap jump with a run-up | Barkour, 11.5 kg | 1.0 | 0.5 m gap after accelerating to 2.3 m/s; 38 % of trials | Caluwaerts et al. 2023 |
| Vertical jump | Stanford Doggo, 4.8 kg, two motors per leg, no springs | 1.6–3.3 | CoM rose 1.14 m | Kau et al., ICRA 2019 |
Four regularities run through these results.
- The climbs are not ordered by torque ratio. Solo-12 (1.4–1.5) and ANYmal D (about 1.0) climbed as high in leg lengths as the A1 (2.7). The A1 and ANYmal climbs pulled with the front legs and used knees, shanks or the base.
- Every hardware flip with a published method takes off once from rest. None pumps. Pumping appears only in self-righting, where the body rocks against the ground between pushes.
- A run-up is reported as necessary only for the weakest robot's long jump (Barkour). The A1 parkour policy learned on its own to back away for run-up space after a failed climb (Zhuang et al.).
- Same-robot comparisons of a slow and a dynamic strategy, with numbers, are analytic (Minitaur) or simulated. In simulation, letting ANYmal C choose its own timing instead of tracking 1 m/s raised its 95 %-success limits from 0.22 to 0.40 m stairs and from 0.15 to 1.2 m gaps (Rudin et al., IROS 2022). No matched hardware comparison exists.
Hardware: the limits that break are electrical and thermal
Momentum skills spend short stretches at the torque limit. Mini Cheetah's backflip held two hips at the limit for about 0.2 s. Barkour's knees sat near 13 N·m, against a 12 N·m stated peak, for about 0.1 s in each launch and landing (Caluwaerts et al. 2023). Peak ratings allow this: small legged-robot motors give about three times their continuous torque in bursts (Doggo 4.8 against 1.51 N·m; GIM4305 3.47 against 1.0 N·m in a retailer table).
The hardware failures came from limits the simulators lacked.
- A1 jumps: the policy trained with a plain torque clip demanded about 30 V from a 21.5 V pack and about 3,750 W from a 1,290 W battery. With a back-EMF limit alone it still demanded about 2,500 W. Both failed on hardware. Only the policy trained with both a voltage and a battery-power limit succeeded (Bellegarda et al. 2024).
- Solo-12 parkour, on a 2.5 kg robot with a Raspberry Pi 5 like Pupper's: the policy respected its torque limits but "is likely hitting the battery current limits", and the authors think the batteries were damaged (Chane-Sane et al. 2024).
- Mini Cheetah running at 3.7 m/s: a hip reached 34 of its 40 rad/s and 280 W against a 250 W actuator rating, and the driver truncated a 25.5 N·m command to 17 N·m (Kim et al. 2019).
- Go1 continuous jumps fell short of simulation, which the authors attributed to unmodelled motor saturation (Yang et al. 2023).
Heat binds repeated skills. An A1 carrying 3 kg overheated a knee motor in 5–7 min (Qian et al. 2026; Wan et al. 2026). A humanoid brachiation policy failed after several swings as its shoulder motors heated (Xiong et al. 2026). Two Unitree G1s broke during agile data collection (He et al. 2025, ASAP). Thermal-aware policies exist, with a lumped thermal model in the observation and a barrier-function reward, but they need motor temperature or current. Pupper decodes motor current on its STM32 boards and does not forward it to the Pi.
Springs: the only way a countermovement adds energy
In arms with series or variable-stiffness springs, every optimal or best input found begins with a backswing. The motor drives the link the wrong way, the reversal loads the spring, and the spring then adds speed on top of the motor's own. Link speed reached 2.45 times motor speed in a DLR kick (490 against 200 °/s) and 2.72 times in a throw (588 against 216 °/s), and theory allows up to 4 for one switch (Haddadin et al. 2009; Wolf and Hirzinger 2008; Garabini et al. 2011). Optimal throws on a compliant arm showed "a characteristic counter-movement strategy whereby there is an initial back-swing" at every effort weight, and cyclic pumping when given more time (Braun et al. 2011). This elastic version of the countermovement is the one that raises a speed limit.
For jumping, a spring helps when take-off speed is capped by motor speed and the moved mass is small. Spring-driven output then depends on motor force and stroke, not on motor speed (Ilton et al. 2018). A plain series spring raises peak power at most about 1.4 times, or 2 times with gravity; more needs a latch or a mechanical advantage that rises during the stroke (Galantis and Woledge 2003). With a rising advantage, the 0.1 kg Salto's spring delivered 2.94 times the motor's peak power and the robot jumped 1.008 m (Haldane et al. 2016). Winding a spring over many motor turns let a 30 g device reach 32.9 m (Hawkes et al. 2022).
On quadrupeds the best-measured spring result is torque relief, not jumping. A parallel knee spring on ANYmal cut the mean knee torque from 26 to 7 N·m, the peak from 73 to 52 N·m and the torque-squared cost of transport by 33 %, for 1.2 kg on 51.3 kg (Bjelonic et al., RA-L 2023). Series springs soft enough to store useful energy cut force bandwidth to about 10–28 Hz. No quadruped study compares jumps with and without springs under the same controller. At Pupper's scale springs are not required if the joints are fast: Stanford Doggo, 4.8 kg with no springs, raised its CoM 1.14 m.
Learning momentum skills under torque limits
Learners find momentum without being asked. The hard part is keeping it deployable.
- The recurring recipe is to discover with relaxed limits, then tighten. HumanUP weakened its torque-limit penalty 50 times in a discovery stage, then tracked the discovered get-up slowed 8 times (He et al. 2025). HoST shrank an action bound that caps the PD torque from 1.0 to 0.25 of its range while a helping lift force decayed (Huang et al. 2025). Tao et al. (2022) lowered a character's torque limit step by step after the first success; with fixed limits of 40–60 % they usually found no get-up.
- Training directly under the final limits failed in HumanUP, in Tao et al., and in constraints-as-terminations (CaT) with hard constraints only.
- On Solo-12, a robot of Pupper's class, CaT kept knee torque within ±3 N·m while it climbed a 24 cm platform, 77.5–85 % on hardware (Chane-Sane et al., IROS 2024).
- Fast get-ups found with full strength cannot simply be slowed down: imitating a slowed version of a strong policy failed (Tao et al.).
- ANYmal's recovery "must use momentum to dynamically flip the robot", and its success rose to 100 % only after its joint-velocity constraints were relaxed (Hwangbo et al. 2019).
Sweeps of torque limit against skill success are few and simulation-only. HiFAR's humanoid recovery held 100 % at 85 % torque and fell to 60 % from supine at 75 % (Chen et al. 2025). Co-design studies vary the gear ratio for energy, not for feasibility, and find flips bounded by joint speed: backflips chose a 6:1 gear over 9:1 (Fadini et al. 2024).
Pupper v3: torque does not bind slow motion; speed, the control interface and geometry do
The numbers below come from the official MJX training model (pupperv3-monorepo 6f96c5e, copy under terrain_training/viz_multi/). Run pupper_momentum.py with MuJoCo 3.16. In this model joint 1 of each leg is hip pitch, joint 2 abduction and joint 3 the knee (checked from the joint axes). The leg measures 84.5 mm from the abduction axis to the knee and 89.8 mm from the knee to the centre of the 19.9 mm foot sphere. The training actuator is a PD (kp 5; kd 0.1 in the XML, 0.25 in the training config) clipped at ±3 N·m, with 0.0016 kg·m² armature and 0.125 N·m joint friction. It has no torque–speed curve.
Jumps were simulated in MuJoCo at 0.5 ms with direct joint torques. A scripted controller pushed the feet straight down with the largest force the torque envelope allowed, split between front and back legs to hold pitch. Six envelopes were compared:
- flat 3 N·m, as in the training model;
- the GIM4305 retailer figures at 20 V: 3.47 N·m at the 5.6 A current limit up to about 21.7 rad/s, falling to zero at 31.9 rad/s (0.626 N·m/A, 1.15 Ω);
- a "corner" model: 3.5 N·m up to a voltage line through 10.5 N·m at stall and 30 rad/s no-load;
- a pessimistic linear line from 3.5 N·m at stall to zero at 30 rad/s;
- the ROS 2 simulator's actuator model (below);
- the robot's own interface: the motor PD towards a target within ±1.0 rad (official action scale) or ±0.75 rad (ours) of the default pose, then the pessimistic line.
| Quantity | Value |
|---|---|
| Torque ratio τ / (m g / 4 × leg length) | 2.21 at 3 N·m, 2.58 at 3.5 N·m, 0.74 at the 1.0 N·m rating; Go2 official model: knee 2.86, hip and abduction 1.49 |
| Static torque, four-leg stance, base origin 0.08–0.19 m above the floor | knee at most 0.58 N·m, abduction 0.14, hip 0.07 |
| Default stance held by the PD in simulation | knee 0.38, abduction 0.12, hip 0.04 N·m |
| Three legs / one diagonal pair | knee 0.76 / 0.68 N·m |
| One leg carrying the whole robot, foot under the hip | knee 1.12 N·m at 0.9 leg lengths, 2.31 N·m at 0.5 leg lengths (interior knee 61°) |
| Rearing on the hind legs, body pitched 15–90° | hind hip at most 1.22, knee 0.79 N·m; with the body level the hind feet cannot reach under the CoM |
| Squat jump from a 0.08 m base height: CoM rise above standing / foot clearance at apex | flat 3 N·m +0.150 m / 12.3 cm, joints at 37 rad/s; retailer figures +0.114 m / 8.9 cm, joints at 30 rad/s; corner +0.102 m / 7.9 cm; pessimistic line +0.057 m / 3.8 cm; ROS 2 simulator model +0.046 m / 2.4 cm; interface ±1.0 rad +0.052 m / 3.5 cm, ±0.75 rad +0.043 m / 3.0 cm |
| Countermovement against squat jump from the same lowest height, no springs | the countermovement jump was lower in all 9 pairs, by 0.004–0.062 m |
| Parallel knee springs, k = 1–4 N·m/rad, pessimistic line | squat jump +0.073 to +0.100 m against +0.057 m without; countermovement jump +0.041 to +0.082 m; at k = 3–4 the countermovement loaded each knee spring to 3.9–4.7 N·m, against the 3.2–3.3 N·m that motors and gravity hold statically |
| Forward walking speed as height, v² / 2g | 1.3 cm at 0.5 m/s, 2.9 cm at 0.75 m/s, 5.1 cm at 1.0 m/s |
| Self-righting from the back, scripted right-leg abduction swing, body box collision on | slow 3 s ramp: rolled 20° and stalled with torque to spare; fastest step: 73–76°; pumped at each roll reversal, 3 N·m: 96°, then fell back; never turned over at 0.75–3 N·m |
Four things follow.
- Torque does not bind Pupper's slow motion on flat ground. The worst static case computed, one leg carrying the whole robot at a 61° knee, needs 2.31 N·m against the 3 N·m clip; the four-legged stance needs at most 0.58 N·m, and rearing on the hind legs at most 1.22 N·m. Where a slow motion is blocked on Pupper, the cause is geometry: with the body level the hind feet cannot reach under the CoM, and a slow abduction push stalled after 20° of roll with torque to spare.
- Speed binds jumping. The training model's clip lets the knee spin to 37 rad/s, past the motor's no-load speed, and so overstates the jump: +0.150 m against +0.114 m with the retailer figures and +0.057 m with the pessimistic line. The elastic note's knee-only model, built separately, also found the clip never binding and the knee speed binding. Doubling joint speed would roughly double a jump.
- The robot's interface binds before the motor does. The motor PD (kp 5, kd 0.25) with targets limited to ±1.0 rad around the default pose brakes fast joints (0.25 × 20 rad/s = 5 N·m) and caps the PD torque. Through it the same scripted jump reached only 0.043–0.052 m. The 50 Hz target update adds the delay noted in the physics section.
- A countermovement did not help a rigid leg, and a spring did. In 9 of 9 pairs the countermovement jump was lower than the squat jump from the same lowest height. Part of that gap is the scripted controller: the feet spread during the free fall. With parallel knee springs, the countermovement loaded each spring 20–40 % beyond what motors and gravity hold statically. That is the dynamic exceedance of a static torque limit the question asks about. The scripted push turned part of that energy into pitch and backward speed, so its apex (+0.075 to +0.082 m) stayed below the slowly preloaded squat jump (+0.086 to +0.100 m). An optimized push is needed to see whether the extra spring energy becomes height.
The ROS 2 simulator under sim_teleop/ caps every joint at about 1.37 N·m. Its actuator model clamps the PD torque to ±3 N·m, then to ±kt·(V − kt·|ω|)/R with kt 0.04, R 0.7 Ω and V 24 V, using the joint's own velocity and torque. The source files read in our Docker image are pupperv3_mujoco_sim/lib/actuator_model.hpp, mujoco_core_interactive.hpp and pupper_v3_mujoco.ros2_control.xacro, at monorepo 6f96c5e. The constants look motor-side, with the 10:1 gear not applied. The cap is 1.37 N·m at rest and 1.30 N·m at 30 rad/s, and braking is limited the same way. Every ROS 2 simulator result so far ran under it: own3_h1 crossing 3 cm stairs, the standing heights, the behaviour policies. Those results passed at less than half the training torque. That says walking and 3 cm climbing need little torque; it does not make the model right.
What to do for Shappy
The position, in order:
- Simulators first. This needs no hardware.
- Replace the flat ±3 N·m clip in the MJX/Warp training environment with a speed-dependent cap plus a total pack-current cap, in the two-block form Bellegarda et al. validated. Use the retailer figures at 20 V until a bench measurement exists. MuJoCo 3.7 added a
dcmotoractuator; whether MJX or Warp support it is unchecked. - Correct the ROS 2 simulator's kt and R (or apply the gear ratio), then recheck own3_h1 there.
- Replace the flat ±3 N·m clip in the MJX/Warp training environment with a speed-dependent cap plus a total pack-current cap, in the two-block form Bellegarda et al. validated. Use the retailer figures at 20 V until a bench measurement exists. MuJoCo 3.7 added a
- The research question: how much torque a skill needs when the controller may use momentum.
- Train the same recipe twice at each torque limit: once free, once with a cap on joint speed or body velocity that forces a slow solution. Sweep the limit over 3.0, 2.0, 1.5 and 1.0 N·m. The gap between the two success curves is what momentum buys.
- Skill: self-righting from the back first; then a curb or box above the 7 cm curb the stair policy now passes 56 times in 100.
- Use an energy-based reward with a 10–20 % excess, as Åström and Furuta recommend, and a discover-then-tighten curriculum.
- On hardware, repeat the boundary points with the driver torque limit lowered, as RHex did, and record bus voltage and pack current. The robot can stand in for weaker motors this way without new parts.
- v2 sizing.
- Put the same sweep inside the planned stair simulation gate on the Go2 model, scaling joint torque to 100 / 75 / 55 / 40 % and the knee speed with it.
- Run Topping's two paper tests first: continuous torque and workspace for the slow strategy, energy and power per riser for the dynamic one.
- Joint speed limits flips and jumps (Fadini et al. 2024), which again favours 6–10:1 gearing over Dynamixel-Q's 20:1.
- Springs.
- A parallel knee spring for v2 if stair torque becomes the constraint, trained with the spring in the model as Bjelonic et al. did.
- Series springs only if jumping becomes a goal. None on Pupper v3 now.
Not recommended:
- countermovement jumps on the rigid Pupper (no gain in theory and in 9 of 9 runs);
- momentum as the lever for the 3–4 cm stairs (walking momentum is worth 1.3 cm at 0.5 m/s, and the stair limits found earlier are tread length and edges);
- a backflip as a research target. It is a single take-off from rest, already characterized on Mini Cheetah, and at 3 kg it would add data, not a question, while risking the printed parts.
What each check would settle:
| Check | One outcome | The other outcome |
|---|---|---|
| Bench: one GIM4305 at 20 V (stall torque against current, no-load speed, time at 3.5 N·m to 80 °C) | full torque to about 22 rad/s, as the retailer table implies → the training cap uses it, and the scripted jump stays near +0.11 m | torque falls from stall → the pessimistic envelope (+0.06 m) is the one to train with |
| Righting, free against slow, swept over torque limits | the free policy succeeds at limits where the slow one fails → momentum substitutes for torque on Pupper, and the lowest such limit is the result | both fail at the same limit → no substitution; righting is decided by geometry and contacts |
| Hardware at lowered driver limits | the success boundary lands within one torque step of simulation → the simulated sweep can size v2 | the robot fails earlier → voltage or current binds; model them before trusting any sweep |
| Go2-model stair sweep | stairs succeed near half the official torque → a 25 N·m knee class suffices with a learned policy | success needs close to the official torque → keep the 45 N·m class |
Conclusion
The idea in the question is right about the physics, and it has been demonstrated. Pumped energy righted RHex with its front-leg torque cut by 90 %. It carried Minitaur up stairs it could not crawl. It swings pendulums over the top with torque below their static load. It is not, by itself, a new research direction: any controller bound by a torque limit already uses momentum where it pays, and the published failures of momentum skills came from voltage, battery and heat rather than from the torque value. A countermovement adds energy only through a spring.
For Pupper the binding limits are speed, its PD interface and geometry, not torque. Its simulators misstate them in both directions: the training model allows joint speeds the motor cannot reach, and the ROS 2 simulator caps torque at less than half the real limit. The version worth doing measures how much torque a skill needs when momentum is allowed. Do it on self-righting on Pupper first and on the v2 stair task second. That comparison is missing on hardware, and it decides which actuator v2 buys.
Source notes, scripts and their outputs: notes/research_notes/Momentum beyond torque limits/ in the Shappy repository.