Releases: upkie/vulp
v2.5.1
This is the final release of this project: rather than being developed as a standalone library, Vulp has now been merged in the Upkie wheeled biped software where development continues. See you there!
Note to future travelers: if you are looking for similar features for your own robot, we recommend you start from the latest moteus C++ bindings.
Added
- Spine: log when dictionary logger is full
Changed
- Archive the project
- Update development status to classifier to inactive
Fixed
- Fix duplicate
data_
attribute in pi3hat actuation interface
v2.5.0
This release extends the Bullet interface to report ground-truth quantities from the simulation and apply optional external forces.
Added
- Bullet utility function to compute the center of mass of a robot
- Bullet utility function to compute the total robot mass
- Bullet utility function to compute the world position of a robot link
- BulletInterface: Add extra action to apply external forces
- BulletInterface: Add floating-base orientation and position getters
- BulletInterface: Monitor IMU velocity
- BulletInterface: Report the base state that can be used for training RL agents.
- BulletInterface: Unit test for IMU monitoring
- Interface: Introduce
process_action
function for additional behaviors - docs: Start a dedicated page for observers
Changed
- Interface: Remove the redundant
data
argument to allcycle
functions
v2.4.0
This release adds the HistoryObserver
, a generic observer that reports high-frequency history vectors to lower-frequency agents. It also fixes a compilation issue on macOS.
Added
- BulletInterface: Unit test for contact monitoring
- Python: Expose
SpineInterface
from top-level module - observers: History observer
Changed
- Update palimpsest to v2.1.0
Fixed
- Spine: Cast
logger_.last_size()
explicitly touint32_t
, thanks to @ubgk 👍
v2.3.0
This release introduces reporting of groundtruth simulation quantities from Bullet as extra observations to agents. For example, to monitor the number of contact points on designated robot bodies:
spine_config["bullet"]["monitor"] = {
"contacts": {"left_wheel_tire": True, "right_wheel_tire": True}
}
with gym.make("UpkieGroundVelocity-v3", spine_config=spine_config) as env:
your_agent(env)
It also fixes https://github.com/upkie/vulp/issues/92 for macOS users thanks to @ubgk 👍
Added
- Build test for the pi3hat interface
- BulletInterface: internal
get_link_index
memoization - BulletInterface: introduce "monitor" configuration dictionary
- BulletInterface: report contacts to bodies specified in configuration
- CICD: Add a workflow for the pi3hat build test
- Introduce
observe
method in actuation interfaces
Changed
- CICD: Rename bazel.yml to ci.yml for consistency with other repos
- Pi3HatInterface: make
get_angular_velocity
private - Pi3HatInterface: make
get_attitude
private - Pi3HatInterface: make
get_linear_acceleration
private - Pi3HatInterface: make
imu_data
private
Fixed
- CICD: Clean up redundant Python build jobs
- SpineInterface: Remove leading slashes from shared memory object names
Removed
- Clean up unused
MockInterface::get_angular_velocity
- Clean up unused
MockInterface::get_attitude
- Clean up unused
MockInterface::get_linear_acceleration
- Remove
imu_data
getter from actuation interfaces - Remove
observe_imu
function from observations
v2.2.2
This patch release sets default servo temperature and voltage in simulation spines.
Added
- BulletInterface: Set a default servo temperature of 20 °C
- BulletInterface: Set a default servo voltage of 18 V
v2.2.1
This patch release fixes an issue with shared-memory management when an agent closes.
Added
- BulletInterface: Add a switch the load the floor plane URDF.
Fixed
- Unregister shared-memory management in Python spine interface
v2.2.0
This release cleans up dependencies, moving away from rules_python
ones in Bazel, paving the way for a future Conda package. It also brings minor API changes to the Bullet and spine interfaces.
Added
- BulletInterface: Add a new parameter
env_urdf_paths
to allow environment URDFs.
Changed
- BulletInterface: Rename
urdf_path
torobot_urdf_path
. - CICD: Match Python versions with project description
- Move exceptions to a dedicated namespace
- Raise a
SpineError
when the spine does not reply in time - Replace posix-ipc by the shared-memory class from Python standard library
Removed
- Bazel: dependencies based on
pip_parse
fromrules_python
- BulletInterface: Removed hardcoded ground plane URDF
v2.1.0
This update adds support for feedforward torque commands in all actuation interfaces (simulation and mjbots).
Added
- Base class
VulpException
for all exceptions - Check that msgpack is not running the pure-Python implementation
- Optional performance check parameter in SpineInterface constructor
- Take feedforward torque commands into account in all actuation interfaces
v2.0.0
This release adds joint kinetic friction modeling to the Bullet simulation, covered by unit tests. It also introduces logging of the configuration dictionary every time a spine is reset, and two breaking changes cleaning up unused parts of the API.
Added
- BulletInterface: Model joint kinetic friction
- BulletInterface: Unit tests for joint torque computations
- Log configuration dictionary every time the spine is reset
Removed
- Breaking: Narrow down Bullet interface to a single control mode (torque)
- Breaking: Remove
pi32_config
as 64-bit is the new default
v1.5.0
This release brings two features:
- We can now specify a full floating-base initial state to simulations (position, orientation, linear and angular velocities).
⚠️ There is a corresponding breaking change in the Bullet configuration dictionary, see below. - Spines now log all the data they receive from agents, making them the main source of robot logs. This simplifies logging and monitoring, with no noticeable performance regression.
Added
- BulletInterface: Extend initial state to include the floating base velocity
- SpineInterface: Mention name of the spine we are waiting for at startup
Changed
- Breaking: Add "reset" sub-dictionary to Bullet interface config
- Action dictionaries read by the spine are now fully logged
- BulletInterface: Refactor internal reset functions
- Update mpacklog.cpp to v3.1.0
- Update palimpsest to v2.0.0
Fixed
- Clear configuration dictionary when resetting the spine