explaingit

suz-tsinghua/smp

Analysis updated 2026-05-18

133PythonAudience · researcherComplexity · 5/5Setup · hard

TLDR

A course-project reproduction of SMP (Score-Matching Motion Priors), training a Unitree G1 humanoid robot to move naturally using a human-motion-guided reinforcement learning reward.

Mindmap

mindmap
  root((SMP repro))
    What it does
      Trains humanoid motion
      Uses motion priors
      Reproduces SMP paper
    Tech stack
      Python
      mjlab
      uv
    Tasks
      Walk and run
      Steer and face
      Reach location
      Stand up
    Design choice
      Multiplied rewards

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

What do people build with it?

USE CASE 1

Train a Unitree G1 humanoid robot controller to walk, run, or turn while moving in a human-like way.

USE CASE 2

Use included pretrained motion prior checkpoints to skip the pretraining step and start policy training right away.

USE CASE 3

Study how multiplying task reward and motion-quality reward, instead of adding them, changes training behavior.

What is it built with?

Pythonmjlabuv

How does it compare?

suz-tsinghua/smpviitor-ai/viitor-voice-narlynote-ai/ai-detector-skill
Stars133133134
LanguagePythonPythonPython
Setup difficultyhardmoderateeasy
Complexity5/54/52/5
Audienceresearcherdevelopergeneral

Figures from each repo's GitHub metadata at analysis time.

How do you get it running?

Difficulty · hard Time to first run · 1h+

Requires a physics simulation setup with mjlab and GPU-based reinforcement learning training.

The README does not state a license.

In plain English

This repository contains a reproduction of a research technique for training humanoid robots to move in a natural, human-like way. It was built as a course project at Tsinghua University. The specific robot is the Unitree G1, a two-legged humanoid robot. The method being reproduced comes from a 2025 academic paper called SMP (Score-Matching Motion Priors). The core idea is to teach a robot controller two things at once: complete a task, and move the way a human would. The "motion prior" part is a small generative model trained on recorded human movement data. Once trained, this model is frozen and used as a guide during the reinforcement learning phase, where the robot's control policy is trained through trial and error in a physics simulation. The guide provides a score at each step indicating how human-like the current motion looks, and the policy is rewarded for keeping that score high while also completing its assigned task. Four tasks are included: walking or running forward at a commanded speed, steering toward a commanded direction and facing angle, walking to a specific location in the world, and standing up from a fallen position. Pretrained motion prior checkpoints for all four tasks are included in the repository, so you can start training the downstream policy immediately without running the pretraining step yourself. One notable design choice in this reproduction is how the task reward and the motion quality reward are combined. The original paper adds them together with separate weights, which can make tuning difficult. This version multiplies them instead, meaning the policy only earns a high reward when both the task progress and the motion quality are simultaneously high. Either factor collapsing to near zero collapses the total reward, which the README argues removes a tricky balancing knob and prevents the policy from succeeding at one objective while ignoring the other. The project uses a Python reinforcement learning framework called mjlab and the uv package manager for dependency management.

Copy-paste prompts

Prompt 1
Explain how the motion prior model guides the reinforcement learning policy in this SMP reproduction.
Prompt 2
Walk me through training the walk-forward task using the included pretrained motion prior checkpoint.
Prompt 3
How does multiplying the task and motion rewards instead of adding them change what the policy learns?
Prompt 4
Help me set up mjlab and uv to run this project's simulation environment.

Frequently asked questions

What is smp?

A course-project reproduction of SMP (Score-Matching Motion Priors), training a Unitree G1 humanoid robot to move naturally using a human-motion-guided reinforcement learning reward.

What language is smp written in?

Mainly Python. The stack also includes Python, mjlab, uv.

What license does smp use?

The README does not state a license.

How hard is smp to set up?

Setup difficulty is rated hard, with roughly 1h+ to a first successful run.

Who is smp for?

Mainly researcher.

Open on GitHub → Explain another repo

This repo across BitVibe Labs

Verify against the repo before relying on details.