Skip to content
This repository has been archived by the owner on Aug 9, 2024. It is now read-only.

Releases: upkie/vulp

v2.5.1

09 Aug 11:46
e9870cb
Compare
Choose a tag to compare

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

12 Jun 07:14
Compare
Choose a tag to compare

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 all cycle functions

v2.4.0

27 May 13:51
Compare
Choose a tag to compare

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 to uint32_t, thanks to @ubgk 👍

v2.3.0

02 May 16:42
Compare
Choose a tag to compare

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

28 Mar 14:14
8e1fc42
Compare
Choose a tag to compare

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

20 Feb 11:17
ba54f71
Compare
Choose a tag to compare

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

09 Feb 11:13
b783d69
Compare
Choose a tag to compare

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 to robot_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 from rules_python
  • BulletInterface: Removed hardcoded ground plane URDF

v2.1.0

03 Jan 17:23
6b547a5
Compare
Choose a tag to compare

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

15 Nov 10:00
Compare
Choose a tag to compare

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

16 Oct 17:49
84942f1
Compare
Choose a tag to compare

This release brings two features:

  1. 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.
  2. 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