Metadata-Version: 2.1
Name: vulp
Version: 2.5.1
Summary: Robot/simulation switch for the mjbots stack.
Keywords: motion control,real time,robotics
Author-email: Stéphane Caron <stephane.caron@normalesup.org>
Maintainer-email: Stéphane Caron <stephane.caron@normalesup.org>
Requires-Python: >=3.7
Description-Content-Type: text/markdown
Classifier: Development Status :: 7 - Inactive
Classifier: Framework :: Robot Framework :: Library
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Topic :: Scientific/Engineering
Requires-Dist: msgpack >=1.0.2
Project-URL: Changelog, https://github.com/upkie/vulp/blob/main/CHANGELOG.md
Project-URL: Documentation, https://upkie.github.io/vulp/
Project-URL: Source, https://github.com/upkie/vulp

# Vulp – Robot/simulation switch

> [!IMPORTANT]\
> Vulp has been merged into the [Upkie wheeled biped software](https://github.com/upkie/upkie) and is not developed as a standalone library any more. If you need similar features for your own robot, we recommend you rather start from the latest [moteus](https://pypi.org/project/moteus/) C++ bindings.

Vulp provides an action-observation loop to control robots from a standalone "agent" process, like this:

<p align="center">
<img src="https://raw.githubusercontent.com/upkie/vulp/main/docs/figures/action-observation-loop-full.svg" alt="Action-observation loop with Vulp" class="center"/>
</p>

Vulp is designed for robots built with the mjbots stack ([moteus](https://github.com/mjbots/moteus/) servo controllers and [pi3hat](https://github.com/mjbots/pi3hat/) communication board). It provides a robot/simulation switch to train or test agents in [Bullet](https://github.com/bulletphysics/bullet3) before running them on the real system. Vulp supports Linux and macOS for development, and Raspberry Pi OS for robot deployment.

## See also

* [moteus](https://pypi.org/project/moteus/): bindings for moteus brushless controllers.
* [odri_control_interface](https://github.com/open-dynamic-robot-initiative/odri_control_interface): interface to control robots built with the [ODRI](https://github.com/open-dynamic-robot-initiative) Master Board.
* [kodlab_mjbots_sdk](https://github.com/KodlabPenn/kodlab_mjbots_sdk): C++-only framework integrated with [LCM](https://lcm-proj.github.io/lcm/) for logging and remote I/O.
* [mc\_rtc](https://github.com/jrl-umi3218/mc_rtc/): C++ real-time control framework with QP-based whole-body control.
* [robot\_interfaces](https://github.com/open-dynamic-robot-initiative/robot_interfaces): IPC between non-realtime Python and real-time C++ processes with Python bindings.
* [ros2_control](https://github.com/ros-controls/ros2_control): C++ framework for real-time control using ROS2 (still a work in progress).

## Why the name "Vulp"?

[Vulp](https://en.wiktionary.org/wiki/vulp#Noun_2) means "fox" in Romansh, a language spoken in the Swiss canton of the Grisons. Foxes are arguably quite reliable in their reaction times 🦊

