upkie 9.0.0
Open-source wheeled biped robots
|
Upkies are open-source wheeled biped robots. They have wheels for balancing and legs to negotiate uneven terrains. Upkies are designed to be buildable with off-the-shelf tools and components, like mjbots actuators. You can develop in Python or C++, on Linux or macOS, then deploy your behaviors to the robot's Raspberry Pi. Here are some instances of Upkies in action.
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.
Step by step instructions to build a new Upkie from scratch are available in the Wiki.
Upkies come with a model predictive controller that can balance and roam around. You can try it out in simulation by:
Once the agent is running, you can direct your Upkie using a gamepad 🎮
Click on the robot in the simulator window to apply external forces and see how the robot reacts.
Software for Upkies comes is packaged in an upkie
Python library. You can install it:
conda install -c conda-forge upkie
pip install upkie
When running on the real robot, your code will command the robot's actuators via another process called the spine. There are also simulation spines for testing before deploying to a robot. Let's start a Bullet simulation spine:
Now that we have a spine is running, we can control the robot in Python. For example:
Other Gymnasium environments provide various levels of absraction to control the robot. They are listed in the Gym environments page of the documentation.
There are smaller standalone examples in the examples directory. For instance:
Some examples have optional dependencies, like those for the Genesis and PyBullet simulators. You can activate a virtual environment and install them as optional dependencies, or use Pixi:
Upkies come with a set of default behaviors that you can executed as Pixi tasks. To get started, make sure you have installed pixi
.
Name | Task |
---|---|
rlb3-enjoy-genesis | Evaluate the last policy trained in Genesis |
rlb3-enjoy-pybullet | Evaluate the last policy trained in PyBullet |
rlb3-train-genesis | Train a new policy by reinforcement learning in Genesis |
rlb3-train-pybullet | Train a new policy by reinforcement learning in PyBullet |
try-genesis | Run a balancing example in Genesis |
try-pybullet | Run a balancing example in PyBullet |
upkie-mpc-balancer | Run the MPC balancer |
You can execute a task by pixi run <task-name>
, for instance:
Tasks are available both on your machine and on your Upkie's Raspberry Pi (Pixi comes pre-installed on the SD card image). They are implemented by agents. You can make your own agents by forking this repository or using the new_agent template to get started.
Contributions are welcome to both the hardware and software of Upkies! Check out the contribution guidelines.
If you built an Upkie or use parts of this project in your works, please cite the project and its contributors:
Don't forget to add yourself to the BibTeX above and to CITATION.cff
if you contribute to the project.