Work log · Experiment · Muscles · MyoSuite · RunPod
Work log for Muscles instead of motors
Muscles, stage 2: real leg muscles
Training cost about $9.69RunPod RTX 5090 and RTX PRO 6000 pods, $1.19–2.49 an hour · 15 training runs, 16 machines, about 6.1 machine-hours
Stage 1’s muscles act straight on a joint, with a fixed lever. Real leg muscles run along paths over the bones, their levers change with the angle, and some cross two joints. Stage 2 takes the leg muscles of MyoSuite (open source, Apache-2.0), scaled onto the fighter’s legs: first MyoLeg26 (13 muscles a leg on 26 tendon paths, stage 2a), then the full MyoLeg (40 a leg, wrapping round the bones, stage 2b). Everything above the hips keeps stage 1’s joint pairs. Each muscle’s lever arm was checked against MyoSuite’s own model at every joint it crosses: within 2.2 cm everywhere.
The runs
| run | what | result |
|---|---|---|
| muscle2a, muscle2a2 | 2a as first built, two seeds | learnt not to fall, but not the stance: stood tall, straight-legged, arms out (pose 0.01) |
| muscle2n, muscle2n2 | 2a with a torque-neutral zero action (each muscle’s resting excitation set so the stance holds) | passed the trainer’s test at 46.2 M / 76.9 M steps, but with the rear leg straight and swung back (pose 0.21–0.24) |
| muscle2c15, muscle2c20 | the hip abductor ×1.5 and ×2 (my first guess at the cause) | exactly the same posture: not the cause. The rear leg was resting on its hip and knee joint limits with its muscles idle |
| mbaseL | the servo body with a cost for resting near a joint limit, two seeds (control) | solved as before, 12.3 M / 12.1 M steps |
| muscle2L, muscle2L2 | 2a with the joint-limit cost | the rear leg takes the stance (knee 33–35°, pose 0.84), but falls stayed at 7–8 % to the 0.75 h cap; a 30-minute continuation collapsed |
| muscle2G, muscle2G2 | from muscle2L, a third of the learning rate (1e-4 and 5e-5) and half the PPO epochs, with a collapse guard | solved within 6.6 M more steps; falls 3 %, pose 0.90 |
| muscle2S, muscle2S2 | 2a from scratch on those settings | solved at 33.1 M / 49.6 M steps: 2.6× / 3.9× the servo |
| muscle2b, muscle2b2 | 2b, the full MyoLeg (142 muscles), the same settings | solved at 63.3 M / 73.5 M steps: 4.9× / 5.8× the servo, first time |
What it showed
Three things a muscle body needed that the servo body doesn’t:
- A torque-neutral zero action. On stage 1’s symmetric pairs, every muscle at half excitation turns no joint. On real leg muscles it is up to about 180 N m off, and the policy never found the stance from there.
- A cost for resting on joint limits. A straight leg pressed against its limits is held up for free, by the simulated bone, with no muscle working. The policy found that and kept it. The cost changes no physics and the servo body doesn’t notice it.
- Smaller policy updates. In the stance posture the balance plateaued at 7–15 % falls and then collapsed at the default PPO settings; a third of the learning rate and half the epochs solved it in a few million steps.
Kept: muscle2S-33.1M (2a) and muscle2b-63.3M (2b). Videos of both went to me for checking. Next: a skill on the muscle body (stage 3).
Every run
From the run records in kakuto-ml: each run's machines, their billed hours and cost (EC2 runs are estimates from the run logs).
| Run | Outcome | Machines | Hours | Cost |
|---|---|---|---|---|
muscle2b-2026102828 October · kept muscle2b-63.3M | Kept | 1 | 0.6 | $0.73 |
muscle2b2-2026102828 October | Not kept | 1 | 0.7 | $0.84 |
muscle2S-2026102828 October · kept muscle2S-33.1M | Kept | 1 | 0.3 | $0.32 |
muscle2S2-2026102828 October | Not kept | 1 | 0.4 | $0.52 |
muscle2G-2026102827 October · kept muscle2G-101.1M | Kept | 1 | 0.1 | $0.12 |
muscle2G2-2026102827 October | Not kept | 1 | 0.1 | $0.12 |
muscle2L2-2026102727 October | Not kept | 1 | 0.8 | $1.96 |
mbaseL-2026102727 October | Not kept | 1 | 0.3 | $0.68 |
muscle2L-2026102727 October · kept muscle2L-94.5M | Kept | 2 | 0.9 | $2.08 |
muscle2c15-2026102727 October | Stopped | 1 | 0.2 | $0.25 |
muscle2c20-2026102727 October | Stopped | 1 | 0.2 | $0.24 |
muscle2n-2026102727 October · kept muscle2n-46.2M | Kept | 1 | 0.5 | $0.55 |
muscle2n2-2026102727 October | Not kept | 1 | 0.6 | $0.74 |
muscle2a-2026102727 October | Stopped | 1 | 0.3 | $0.37 |
muscle2a2-2026102727 October | Stopped | 1 | 0.1 | $0.16 |
| 15 training runs | 16 | 6.1 | $9.69 |