Robo Cat vs Objects on a Table
A simulated robo-cat that learned to fight objects on a table.
A side project, August 2026
The purpose was for me to get familiar with robotics. The robo-cat uses neural networks to walk and push objects off the table in a physically simulated world. Very useful.
Click the table to place an object. Drag the scene to rotate. Scroll to zoom. Drag the cat to reposition it.
- pause/resume
- reset
- automatic object placement
- toggle unnecessary sound
- adjust animation speed
Notes
- 16 actuated joints run and trained in MuJoCo.
- A walker network (20k parameters) turns a state and velocity command into locomotion. Pre-trained.
- A decider network (13k parameters) controls the walker to clear things off the table.
- The walker was pre-trained before the decider, with a mirror-symmetry loss and a penalty on erratic motion.
- The entire demo is 6.3MB.
References
| Work | What it gave |
|---|---|
| Todorov et al., MuJoCo, IROS 2012 | the physics engine |
| Schulman et al., Proximal Policy Optimization, 2017 | the training algorithm |
| Rudin et al., Learning to Walk in Minutes, CoRL 2021 | the walker’s reward and observations |
| Iscen et al., Policies Modulating Trajectory Generators, CoRL 2018 | correct a scripted gait, don’t invent one |
| Siekmann et al., Periodic Reward Composition, RSS 2021 | the gait clock and the foot rewards |
| Fu et al., Minimizing Energy Consumption, CoRL 2021 | mechanical power instead of squared torque |
| Abdolhosseini et al., On Learning Symmetric Locomotion, MIG 2019 | the symmetry loss that stopped the limp |
| Hoeller et al., ANYmal Parkour, Science Robotics 2024 | a slow decider over a fast walker |
| Lecomte et al., Gait Analysis in the Cat, Front. Neuroinform. 2021 | the joint angles the body is shaped to |
License
MIT, except the physics engine: the demo embeds the MuJoCo WebAssembly build, Apache 2.0, whose notice ships beside it.
Full disclosure: I would have not been able to realize this project without agentic assistance. I learned a lot about managing this task, but I take no credit for the coding details.