10000 Releases · upkie/upkie · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

Releases: upkie/upkie

v7.0.0

10 Mar 17:05
Compare
Choose a tag to compare

This release adds collision observations to simulation environments, pixi-pack integration and additional unit tests. It is a major release as get_reward functions have been removed from all Gymnasium environments. Otherwise comes a regular batch of fixes and additions to the documentation.

Thanks to @Tordjx for contributing to this release 👍

Added

  • Add pixi-pack integration
  • actuation: Add collision-with-environment observation (thanks to @Tordjx)
  • docs: Start Kinematics page
  • utils: Add clear_shared_memory utility function

Changed

  • Bazel: Treat warnings as errors (except the one we can't avoid)
  • Minimum Python version is now 3.9
  • envs: Observation-based reward wrapper
  • envs: Unit test for the base step function
  • examples: Group simulation-related examples in a sub-directory

Fixed

  • Bazel: Ignore .pixi directory as it can contain unrelated Bazel files
  • Fix unused variable warning in Bullet interface

Removed

  • Breaking: Remove get_reward functions from all environments
  • Makefile: Remove conda packing rules, now deprecated in favor of pixi

v6.1.0

12 Dec 19:50
Compare
Choose a tag to compare

This release adds link inertia randomization to the Bullet interface contributed by @Tordjx 👍 as well as non-major API updates and a regular batch of fixes.

Added

  • Configure pixi in pyproject.toml
  • Handle GLIBC version incompatibility in start_simulation.sh
  • Spine: Throw an exception when a servo reply has invalid torque
  • Update downloaded simulation spine in cache if outdated
  • actuation: Added link inertia randomization to the Bullet interface (thanks to @Tordjx)
  • actuation: Check maximum torques before sending commands
  • cpp: Add ServoError exception
  • model: Static model for joints with position, velocity and torque limits
  • pixi: Task to generate the documentation by pixi -e docs make

Changed

  • CICD: Build release spines with Ubuntu 20.04 rather than 22.04
  • CICD: Switch to pixi for documentation workflow
  • CICD: Update upload-artifact action to v4
  • Remove layout argument to actuation interfaces
  • actuation: Rename Interface::initialize_action to Interface::reset_action
  • actuation: Rename Interface::servo_joint_map to Interface::servo_name_map
  • deps: Upate to palimpsest 2.2.1

Fixed

  • examples: Lying genuflection example (thanks to @one-for-all)
  • examples: Unwrap environments to get their neutral actions
  • Update start_simulation.sh for systems where -v is not defined

Removed

  • env: Remove unused leg_return_period and hard-code it to one second
  • env: Replace contingent parse_first_observation by a reset override
  • model: Remove C++ upkie::model namespace
  • observers: Remove upper-leg and wheel joints from configurable parameters

v6.0.0

01 Nov 12:03
0ecbee8
Compare
Choose a tag to compare
8000

This release gives one more careful 👀 to spine cycles, with the main two updates:

  • Combine action and observation steps in the spine-agent IPC protocol, halving the number of waiting intervals between the two.
  • Fix observation consistency between the run and simulate spine functions: thanks to @Tordjx for pointing this out 👍

This iteration also produced some more design documentation in the following discussions:

Added

  • Makefile: Conda environment packing and unpacking rules
  • Support Python 3.12
  • tools: Add ps_thread command

Changed

  • Breaking: Spine and spine interface revisions:
    • Observations are now returned upon reset and step
    • Spine: Remove separate observation state and observation request
    • SpineInterface: Setting an action now returns an observation
    • SpineInterface: Starting the spine now returns an observation
    • StateMachine: Rename spine FSM state from "act" to "step"
    • docs: Update spine FSM specification in the documentation
  • Breaking: actuation: Move resolution to static configuration
  • Breaking: actuation: Move servo layout to static configuration
  • Breaking: envs: Rename LowPassFilterAction to AddLagToAction
  • CICD: Pin Ubuntu workflows to 22.04
  • Default kd gain for wheel servos is now 0.3
  • Move Python spine exceptions to upkie.exceptions
  • docs: Turn environment page into an index
  • tools: Make output directory an argument in dump_servo_configs
  • tools: Simplify servo configuration script

Fixed

  • BulletInterface: Fix typo in a comment
  • CICD: Install Doxygen with specific version from conda-forge
  • Spine: Fix observation consistency between run and simulate
  • envs: Clamp ground velocity action in UpkieGroundVelocity

Removed

  • Bazel: Remove legacy rules for PyPI dependencies
  • Move PID balancer to its own repository
  • deps: Remove dependency on PyYAML
  • examples: Remove Bazel BUILD file
  • model: Remove duplicate maximum torque constant

v5.2.0

30 Sep 19:18
f99df32
Compare
Choose a tag to compare

This release adds several features to the Bullet simulation spine (custom initial configuration, uncertainty on measurements) as well as a random-push wrapper contributed by @Tordjx, thanks 👍

Added

  • BulletInterface: Apply custom initial joint configuration, if provided
  • BulletInterface: Report velocity of the base link in groundtruth
  • BulletInterface: Torque control noise to joint-property configuration
  • BulletInterface: Torque measurement noise to joint-property configuration
  • BulletInterface: Uncertainty on IMU accelerometer and gyroscope measurements
  • Forward command-line arguments to the spine in start_simulation.sh
  • ImuData: Add linear velocity field
  • envs: Add a random-push wrapper (thanks to @Tordjx)
  • examples: Apply an external force to lift an Upkie in sim
  • examples: Custom initial state with a non-zero joint configuration
  • examples: Simulation with joint friction
  • examples: Simulation with sensor noise
  • spines: Add variant argument to BulletSpine

Changed

  • BulletInterface: Move simulation body poses to sim.bodies
  • BulletInterface: Rename internal unit-test getters
  • actuation: Log simulation groundtruth to sim

Fixed

  • BulletInterface: Fix application of external forces
  • CICD: Enable stable-baselines3 environment-check unit tests
  • docs: Add missing documentation pages
  • docs: Document Gym environment wrappers
  • envs: Handle spine errors raised in base env constructor
  • envs: Register UpkieServoPositions and UpkieServoTorques environments

Removed

  • CICD: Remove pycodestyle as we now use ruff for Python linting
  • BulletInterface: Remove unused orientation/position unit-test getters

v5.1.0

14 Aug 14:11
29a8138
Compare
Choose a tag to compare

This release adds logging of raw IMU measurements, two new UpkieServoPositions and UpkieServoTorques environments contributed by @Tordjx (thanks! 👍), and a sizable batch of fixes and safety checks.

Added

  • actuation: Additional check on maximum torques for each command
  • actuation: Extend ImuData with raw measurements
  • actuation: Log raw IMU measurements from pi3hat interface
  • envs: Add UpkieServoPositions child environment (thanks to @Tordjx)
  • envs: Add UpkieServoTorques child environment (thanks to @Tordjx)
  • envs: Add a model attribute to all Upkie environments
  • envs: Start reward submodule with a wheeled inverted pendulum reward
  • envs: Use wheel torque limits from model in UpkieGroundVelocity
  • envs: Wheeled inverted pendulum environment for reduced-model testing
  • exceptions: Add PositionCommandError exception
  • model: Add rotation_ars_to_world and rotation_base_to_imu
  • model: Add upper_leg_joints list
  • tools: Add update command to upkie_tool
  • utils: Add unit tests for Raspberry Pi utility functions
  • utils: Raise an exception when trying to configure agent from an interpreter

Changed

  • Avoid using numpy.typing for compatibility with older versions of NumPy
  • PID balancer: Fix dependencies for running on systems without conda
  • PID balancer: Update filenames of the two main scripts
  • actuation: Throw PositionCommandError rather than stopping a servo on error
  • deps: Update to palimpsest 2.2.0
  • envs: Refactor internal reward of UpkieGroundVelocity environment
  • envs: Use torque limits from model in UpkieGroundVelocity environment
  • examples: Make wheeled balancing example a bit more complex and more stable
  • examples: wheeled inverted pendulum model example
  • exceptions: Move to the top-level Python module

Fixed

  • actuation: Correct inline of two Bullet utility functions
  • actuation: Fix IMU acceleration in Bullet upon resets
  • envs: Make sure action values are floating-point numbers (thanks to @Tordjx)
  • exceptions: Make all exceptions derive from UpkieError
  • model: Fix type of upper-leg and wheel joint lists
  • spine: Handle deserialization exceptions when beginning a cycle

Removed

  • actuation: Remove unused IMU data from mock interface

v5.0.1

01 Aug 13:56
51d8c56
Compare
Choose a tag to compare

This patch release fixes a bug of the contact detection function, which wasn't (gasp!) and is now covered by a unit test.

Fixed

  • envs: Fix missing return value in fall detection function

v5.0.0

01 Aug 11:40
Compare
Choose a tag to compare

This major release merges all C++ code (previously: vulp) into upkie, which simplifies Python–C++ development. It also exposes body coordinates from simulation, refactors upkie.model, improves tooling, and brings a healthy supply of fixes.

Thanks to @ubgk and @Tordjx for contributing to this release 👍

NB: the IPC shared-memory file is now named /upkie. If you encounter an error that /vulp is not found, you will need to update either your spine or your upkie Python package.

Added

  • CICD: Build jobs for x86 and ARM64 macOS spines
  • CICD: Packaging job for conda-forge
  • Import and adapt C++ code from Vulp (vulp namespace is now upkie:cpp)
  • Log received actuation replies in spine cycles
  • PID balancer: Conda environment file
  • bazelisk: Add support for ARM64 CPUs
  • envs: Add left_wheeled parameter to the UpkieGroundVelocity environment
  • examples: Tuning the gains of a standard two-task PI balancer
  • model: Add joints submodule
  • setup: Add micromamba installation script
  • setup: Automate process of building new system images
  • spine: Print out configuration dictionary upon reset
  • spines: Expose environment body poses in Bullet spine (thanks to @Tordjx)
  • tools: Configure servo gains during setup

Changed

  • Breaking: rename the default shared-memory file to /upkie
  • CICD: Switch to Micromamba for unit testing
  • Makefile: Separate rule to set the raspi date
  • PID balancer: default to hostname for the agent configuration
  • Put hostname before spine name in log file names
  • bazelisk: Update bazelisk version to 1.20.0
  • deps: Update Upkie description to 2.1.0
  • deps: Update pi3hat dependency to latest commit
  • docs: Sort documentation pages by expected discovery steps
  • envs: Warn when a fall is detected
  • examples: Rename direct servo control example

Fixed

  • CICD: Release jobs for x86 and ARM64 macOS spines
  • CICD: Update macOS x86 runner images (thanks to @ubgk)
  • actuation: Fix duplicate data_ attribute in pi3hat actuation interface
  • observers: Read configuration matrix in base orientation observer
  • raspunzel: argv0 when executing the target is now the same as bazel run
  • setup: Fix configuration-write order in servo config script

Removed

  • utils: Pinocchio utility functions
  • deps: Dependency on separate Vulp project
  • docs: Remove PID balancer from the documentation

v4.0.0

12 Jun 17:42
Compare
Choose a tag to compare

This release adds the env.bullet_extra() to exert additional actions like external forces in simulation. It adds developer notes to the documentation, and makes the following API-breaking changes:

  • The Python upkie.observers submodule has been removed and its content moved to C++
  • The API for env logging is now env.log("field_name", values)
  • The Gym observation space of the UpkieServos environment is now restricted to servo sensors

Below is the complete changelog.

Added

  • PID balancer: Monitor both tire contacts in simulation examples
  • docs: Developer notes
  • envs: Add the env.bullet_extra function for magic actions in sim
  • envs: Parameter to disable frequency checks during frequency regulation
  • observers: Base orientation observer
  • utils: Factor get_log_path function

Changed

  • dependencies: Update Vulp to 2.5.0
  • envs: Bump UpkieServos version number to 4
  • envs: Change API of logging function to env.log(name, entry)
  • envs: Restrict observation space of UpkieServos to servos

Fixed

  • PID balancer: Fix shared-memory opening in standalone Bullet script
  • dist: Exclude unnecessary files from Python packages
  • envs: Stop the spine when deleting an environment instance

Removed

  • Optional dependencies for balancers that now have their own repositories
  • observers: Python version of the base orientation observer

v3.4.0

21 Mar 15:03
Compare
Choose a tag to compare

This release switches the right leg from bus 2 to bus 3, along with a batch of fixes to the Bullet spine and Gymnasium environments. It also moves agents (aside from the demo PID balancer) to their own repositories:

  • MPC balancer: balance in place using model predictive control.
  • Pink balancer: an extended PID balancer than can crouch and lift its legs.
  • PPO balancer: balance in place with a policy trained by reinforcement learning.

Added

  • Add --build argument to the simulation script
  • CICD: Run ShellCheck on scripts
  • Clear shared-memory when starting the Bullet spine
  • Script to dump all servo motor-driver configurations

Changed

  • dependencies: Update Upkie description to 1.5.0
  • dependencies: Update Vulp to 2.2.1
  • Don't build simulation spine if execution fails
  • Move agents' requirements.txt files to optional project dependencies
  • palinode: Rename run_pid_balancer.sh to try_pid_balancer.sh 😊
  • Rename top-level run script to run_pid_balancer.sh

Fixed

  • Fix Gymnasium API in the readme example (thanks to @araffin)
  • Handle closing of GUI window in simulation script
  • Make sure all UpkieServos box observations are proper arrays

Removed

  • Move MPC balancer to its own repository
  • Move PPO balancer to its own repository

v3.3.0

20 Feb 11:19
ce73158
Compare
Choose a tag to compare

This release brings a script to guide new users in running standard agents, and adds an option to the Bullet spine to load extra URDFs. Under the hood, it switches from posix-ipc to the standard library for shared-memory management.

Added

  • Script to run any of the standard agents
  • spines: bullet_spine accepts extra URDFs as arguments (thanks to @ubgk 👍)

Changed

  • dependencies: Bump loop-rate-limiters to 1.0.0
  • dependencies: Replace posix-ipc by shared-memory from the standard library
  • envs: Redirect logging to /env prefix
  • envs: Rename default action in UpkieServos to neutral, its position is NaN
  • Minimum Python version is now 3.8

Removed

  • Script to compile and run the PID balancer
  • utils: ActionError exception
0