Skip to content

Releases: pantor/ruckig

v0.14.0

29 Aug 10:05
Compare
Choose a tag to compare

⚡ Features

  • Reduces the minimum required version of the optional Eigen dependency to 3.3.7 (from 3.4.0).

🔬 Misc

  • Adds pre-built packages for Python 3.13.

v0.12.2

09 Jan 06:13
Compare
Choose a tag to compare

This release brings various new features and improvements, most notably support for infinite jerk and acceleration limits.

⚡ Features

  • Support for both infinite and zero kinematic limits.
  • Detailed error message on failed input validation.
  • Expose the current jerk value in the output.
  • Performance improvements for the velocity interface.
  • Enable the Cloud API for intermediate waypoints by default.

🐛 Fixes

  • Reworked the Python wheel build pipeline, fixes macOS wheels for Python 3.11+ and brings support for a wider range of architectures and distributions.

🔬 Misc

  • Added Python linting to the CI.
  • Easily create Debian packages with CPack.
  • Renamed the PositionExtrema class to Bound.

v0.9.2

13 Jan 06:58
Compare
Choose a tag to compare

This patch release improves the general performance of Ruckig.

⚡️ Features

  • Improvement of the calculation performance by up to 10%.
  • Added support for Python 3.11, including pre-built packages for PyPI.

🐛 Fixes

  • Fixed several minor issues with C++11 support via the patch.
  • Fixed several MSVC Warnings in the OnlineCalculator class.

v0.8.4

13 Sep 11:41
Compare
Choose a tag to compare

This release includes two exciting new features: First, it extends phase synchronization for straight-line trajectories to the velocity control interface. Second, this release allows to use custom vector types (with support for Eigen types out of the box) for an easier interface to your code without any wrappers.

⚡ Features

  • Extends phase synchronization to the velocity control mode.
  • Introduces custom vector types that can be specified as a template template argument. More information can be found in the Readme section.
  • Built-in support for nlohmann/json based serialization of the trajectory class.
  • Adds a pyproject.toml file for easier setup of the Python module.

🐛 Fixes

  • Fixes trajectory calculations when the current acceleration is on its limit due to an issue with the braking trajectory.
  • Removes -Werror as a default flag to let Ruckig build in case of compiler warnings.

🥇 Sponsors

Thanks to Fuzzy Logic Robotics for sponsoring this release!

v0.7.1

10 Jul 13:02
Compare
Choose a tag to compare

With this release, Ruckig allows using a variable control rate!

⚡ Features

  • Makes delta_time non-constant.
  • Allows to reset Ruckig and therefore force a new trajectory computation (#132).

🐛 Fixes

  • Improves the stability of the velocity control as well as the discrete duration mode (e.g. #116).
  • Fixes independent_min_duration in case of a brake trajectory (#128).
  • Fixes a rare issue where the first update does not calculate a trajectory (#115).
  • Fixes warnings for MSVC (e.g. #127, #133).

v0.6.5

07 Mar 07:27
Compare
Choose a tag to compare

🐛 Fixes

  • Fixes a numerical instability in velocity control, in particular when calculating trajectories to a zero target state.
  • Fixes pip install for non-prebuild architectures.
  • Fixes an error when building the Online API flag (BUILD_ONLINE_CLIENT) with some C++17 compilers due to the nlohmann/json dependency.

v0.6.3

22 Jan 01:08
Compare
Choose a tag to compare

⚡ Features

  • Improves the computational performance by around 10%.
  • Adds continuous deployment of ROS packages via GitHub Actions.

v0.6.0

07 Dec 02:06
Compare
Choose a tag to compare

This release brings trajectories with intermediate waypoints to the Community Version! Calculation is done on remote servers via this API, so this is only applicable for offline trajectory generation. Furthermore, this release...

⚡ Features

  • Adds a method for filtering intermediate waypoints based on a threshold distance for each DoF. In general, Ruckig prefers as few waypoints as possible, so we recommend to filter the input with a threshold as high as possible.
  • Improves input validation. In particular, Ruckig is now able to guarantee the kinematic state to be below the constraints throughout the trajectory.

🐛 Fixes

  • Fixes trajectories with zero duration.
  • Adds a stability improvement to Step 2 of the algorithm.

v0.5.0

14 Nov 16:16
Compare
Choose a tag to compare

This release introduces the pass_to_input method of the OutputParameter class: We recommend to change the following usage in your code from

while (ruckig.update(input, output) == Result::Working) {
  // Make use of the new state here!

  input.current_position = output.new_position;
  input.current_velocity = output.new_velocity;
  input.current_acceleration = output.new_acceleration;
}

to

while (ruckig.update(input, output) == Result::Working) {
  // Make use of the new state here!

  output.pass_to_input(input);
}

While the old style works fine for now, it is now depreciated to support additional features coming in future releases. Moreover, this release includes:

⚡ Features

  • Introduces the option to set the synchronization and control interface for each degree of freedom separately.
  • An overall performance improvement of around 15%.
  • Reduced the memory footprint of the Trajectory class by an order of magnitude.

🐛 Fixes

  • Fixed a jump in the position output after a finished trajectory for disabled degrees of freedom.

🔬 Misc

  • Added a to_string method for printing the OutputParameter class (#77).

v0.4.0

23 Aug 07:58
Compare
Choose a tag to compare

⚡ Features

  • Ruckig now allows a dynamic number of DoFs with ruckig::DynamicDOFs. In particular, this allows the Python wrapper to be used with any number of DoF (#47).
  • Improved the performance for trajectory calculation by around 30%.
  • Added offline trajectory calculation without the need of a control cycle time.
  • Added the get_first_time_at_position method to calculate when a specific position is reached.

🐛 Bug Fixes

  • Improved numeric stability, in particular for very long trajectories and very high limits.
  • Fixed min_velocity in phase synchronization.
  • Fixed several smaller bugs and compiler warnings.

🤖 Tests

  • Added tests for secondary features like input validation, inverse position calculation, etc...