Teaching a Robot to Walk
A Unitree Go2 quadruped learns to walk in MuJoCo - and then to score a goal.
Trailer
Overview
Reinforcement learning on a twelve-joint Unitree Go2 in MuJoCo, trained twice on purpose. A genetic algorithm written from scratch in NumPy ran 1,186 generations and moved the robot 0.74 m; PPO on Stable-Baselines3 reached a stable gait over 20 million timesteps, and the genetic version stayed in the repository as the comparison baseline rather than being deleted. A third layer sits on top of the finished walker: a high-level policy running at 10 Hz that steers the frozen gait by velocity command and learned to push a ball into a goal, without the walking policy ever being retrained.
What makes it interesting
- PPO across 20M timesteps on eight parallel MuJoCo environments - 48-dimensional observation, twelve torque-controlled joints at 50 Hz
- An eleven-term locomotion reward logged per component, under friction, mass and random-push domain randomization
- A pure-NumPy genetic algorithm kept as the baseline: 1,186 generations, behaviour-cloned warm start, anti-gaming curriculum gates
- Hierarchical RL for soccer: a frozen walker driven by a 10 Hz policy, scoring on 95% of its last hundred episodes
Technology
7 technologies, grouped by the job they do in this project.
Languages
- Python
AI & computer vision
- MuJoCo
- Stable-Baselines3
- PyTorch
- Gymnasium
- NumPy
- Matplotlib
At a glance
- Year
- 2026
- Status
- Open source
- Technologies
- 7
Repository
Read live from the GitHub API when this page was built, so it cannot drift away from the repository itself.
- Name
- RoeeSivan/Teaching-a-robot-to-walk
- Primary language
- Python
- Repository size
- 255.6 MB
- Last push
- May 2026
- Stars
- 1