Skip to main content

Upkie wheeled biped robots

CI Documentation Coverage Conda version PyPI version

Upkies are open-source wheeled biped robots featuring wheels for balance and legs to negotiate uneven terrains. They are designed to be buildable with off-the-shelf tools and components, such as mjbots actuators. You can develop in Python or C++, then deploy your behaviors directly to the robot's Raspberry Pi. There are videos showing the robots in action on the Upkies' YouTube channel.

This repository contains all the materials needed to build and control an Upkie. Questions are welcome in the discussions forum or in the chat room.

Building your own

Upkies come with step by step build instructions.

Getting started

Upkies come out-of-the-box with balancing and locomotion capabilities. You can try them out in simulation using pixi:

pixi run example-follow-joystick

Or using uv:

uv run examples/follow_joystick.py

Once the agent is running, you can direct your Upkie using a gamepad 🎮

  • Left joystick ⬆️ ⬇️: go forward or backward
  • Left joystick ⬅️ ➡️: turn left or right
  • Right button: (B on an Xbox controller, red circle on a PS4 controller) emergency stop 🚨

Click on the robot in the simulator window to apply external forces and see how the robot reacts.

Creating your own behaviors

Software for Upkies comes as an upkie Python library that you can install e.g. from PyPI:

pip install upkie

This library provides Gymnasium environments to control real and simulation robots with the same code. For instance, the following example balances the robot like a wheeled inverted pendulum in PyBullet:

import gymnasium as gym
import numpy as np
import upkie.envs

upkie.envs.register()

with gym.make("Upkie-PyBullet-Pendulum", frequency=200.0) as env:
    observation, _ = env.reset()
    gain = np.array([10.0, 1.0, 0.0, 0.1])
    for step in range(1_000_000):
        action = gain.dot(observation).reshape((1,))
        observation, reward, terminated, truncated, _ = env.step(action)
        if terminated or truncated:
            observation, _ = env.reset()

To switch to the real robot, replace "PyBullet" by "Spine" in the environment name.

Examples

There are smaller standalone examples in the examples directory. For instance:

  • Lying genuflection: genuflect while lying on a horizontal floor.
  • Model predictive control: a self-contained MPC balancer
  • PD balancer: balance by proportional-derivative feedback to wheel velocities.

Contributing

Contributions are welcome to both the hardware and software of Upkies! Check out the contribution guidelines.

Citation

If you built an Upkie or use parts of this project in your work, please cite the project and its contributors:

@software{upkie,
  title = {{Upkie open source wheeled biped robot}},
  author = {Caron, St\'{e}phane and Perrin-Gilbert, Nicolas and Ledoux, Viviane and G\"{o}kbakan, \"{U}mit Bora and Raverdy, Pierre-Guillaume and Raffin, Antonin and Tordjman{-}{-}Levavasseur, Valentin and Arlaud, Etienne and Duclusaud, Marc},
  url = {https://github.com/upkie/upkie},
  license = {Apache-2.0},
  version = {13.0.0},
  year = {2026}
}

Don't forget to add yourself to the BibTeX above and to CITATION.cff if you contribute to the project.

See also

Reinforcement learning playgrounds for Upkies

  • MjLab Upkie: GPU-accelerated playground based on MjLab and MuJoCo Warp (requires an Nvidia GPU). Can train whole-body policies such as the one depicted to the right.
  • RL Baselines3 Zoo balancer: CPU playground to train policies for Upkie-Pendulum environments via RL Baselines3 Zoo
  • PPO balancer: legacy CPU playground to train balancing policies using Stable-Baselines3 (video)

Open-source robotics

  • Awesome Open Source Robots: Upkies are one among many open-source open-hardware robot initiative: check out the others!
  • mjbots: The company that manufactures the brushless servos used in Upkies, that are open source in firmware, hardware and software.
  • Open Dynamic Robot Initiative: An open torque-controlled modular robot architecture for legged locomotion research.

Metadata

Release files for upkie 13.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for upkie 13.0.0
File Size Uploaded
upkie-13.0.0.tar.gz 70.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for upkie 13.0.0
File Interpreter ABI Platform
upkie-13.0.0-py3-none-any.whl Python 3 none any Details

Total release size: 143.5 kB

Release files / upkie-13.0.0.tar.gz

Download URL upkie-13.0.0.tar.gz
Size 70.8 kB
Tags Source
SHA-256 checksum
How to use checksums
4b9d9f18262213714e5111a3535bb41d86a14a4f65fe2aae1dd87a12c864bc04
BLAKE2b-256 checksum
How to use checksums
92c5a08452f891d54e01193cb2ed220f032be30e254ad499ada1db81a96e9c9d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via python-requests/2.32.4

Release files / upkie-13.0.0-py3-none-any.whl

Download URL upkie-13.0.0-py3-none-any.whl
Size 72.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
47b715e26da6ef54df03a9a0a58e9905f06ed1ab1d65ec3d7db8cbff4b16f73c
BLAKE2b-256 checksum
How to use checksums
e5fdba5f03a0cd961815908c533139fb329b495ca168d4a0dfba0b7a083d835a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via python-requests/2.32.4

Release history Release notifications | RSS feed

This release

13.0.0 This release

2 release files

12.0.0

2 release files

10.1.0

2 release files

10.0.0

2 release files

9.0.1

2 release files

9.0.0

2 release files

8.1.1

2 release files

8.1.0

2 release files

8.0.0

2 release files

7.0.0

2 release files

6.1.0

2 release files

6.0.0

2 release files

5.2.0

2 release files

5.1.0

2 release files

5.0.1

2 release files

5.0.0

2 release files

4.0.0

2 release files

3.4.0

2 release files

3.3.0

2 release files

3.2.0

2 release files

3.1.0

2 release files

3.0.0

2 release files

2.0.0

2 release files

1.5.0

2 release files

1.4.0

2 release files

1.3.4

2 release files

1.3.3

2 release files

1.3.2

2 release files

1.3.1

2 release files

1.3.0

2 release files

1.2.1

2 release files

1.2.0

2 release files

1.1.0

2 release files

1.0.0

2 release files

0.5.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page