Releases: aica-technology/modulo
Version 5.3.0
Version 5.3.0 is a minor release of modulo that includes a fix for checking whether wrench values are finite during controller activation, as well as two extensions to controllers: enabling the control type of a controller to be changed post-construction, and adding lock-free service addition helpers that allow service calls to be used for demanding computations, without blocking the control loop.
Version 5.2.3
Version 5.2.3 is a patch release that correctly handles already existing parameters of the base controller class to enable advanced functionality like running controllers asynchronously or at a lower rate than the controller manager.
- feat(controllers): expose parameters from base class (#214)
Version 5.2.2
Version 5.2.2 is a patch release that makes sure that the joint commands are reset on deactivation in the modulo_controllers::RobotControllerInterface. This ensures that any previous joint command is cleared when a derived controller is activated again.
- fix(controllers): reset previous joint commands (#211)
Version 5.2.1
Starting with version 5.2.1, the Python component interfaces verify the return values of execution and lifecycle
callbacks to avoid unexpected behavior. Additionally, it contains a fix that puts a parameter in the correct controller
base class.
Version 5.2.0
Version 5.2.0 is a minor relase of modulo that includes a simplified version of TF in joint space. With a
JointPositionsBroadcaster and JointPositionsListener from the core package, named static joint configurations can be
sent and looked up from a global /joint_positions topic, equivalent to /tf_static. Additionally, this version
contains a couple of improvements for the custom message publisher and subscriber interfaces and to the component
interface.
- feat: improve devcontainer configuration (#198)
- feat(components): use parent node for tf listener (cpp) (#189)
- fix(core): handle custom message pub/sub that also exist in translators (#199)
- feat(interfaces): add joint positions messages (#193)
- feat(core): add joint positions broadcaster and listener (#197, #201)
Dependencies
Version 5.1.0
December 16th, 2024
Version 5.1.0 is an update to modulo that brings a small feature that removes the need of specifying the clproto message type when adding outputs in Python components. For user friendliness, the clproto message type is inferred from the type of the attribute with a helper function. Additionally, this version contains a few fixes that further improve the behavior of components under the hood.
- fix(components): remove incorrect log line (#166)
- fix(controllers): move predicate publishing rate parameter to BaseControllerInterface (#168)
- feat(components): get clproto message type from attribute (#175)
- fix(components): add missing test case (#181)
- fix(components): clean up lifecycle nodes properly (#178)
- fix(components): try catch subscription callbacks (#167)
Version 5.0.2
November 11th, 2024
Version 5.0.2 fixes an incorrect condition in the controller triggers and changes the parameter type of the predicate
rate parameter in the controller base class from an integer type to a double type. Additionally, the component interface
class for Python was revised to hide private attributes better from derived classes.
- fix(controllers): change predicate rate to double type (#163)
- fix(controllers): trigger check (#164)
- fix(components): make all possible attributes private (#162)
Dependencies
- package-builder: v1.1.1 -> 1.3.0 (#165)
Version 5.0.1
October 21st, 2024
Version 5.0.1 patches a couple of issues around predicates. It prevents Python components from publishing their predicates on every step and ensures that predciates always publish their new value on change, even if the initial value is changed before the first step callback triggers.
Version 5.0.0
October 9th, 2024
Version 5.0.0 is a major update to modulo developed for ROS 2 Jazzy Jalisco and ROS 2 control 4.17.0. If features even
more flexibility and performance in the component and controller base classes in modulo_components and
modulo_controllers and improved divison of responsability across modulo_core, modulo_interfaces (formerly
modulo_component_interfaces) and modulo_utils.
Breaking changes
Due to the size and importance of this version update, the list of breaking changes is quite long.
modulo_component_interfaces
The package modulo_component_interfaces has been removed in favor of the recently added modulo_interfaces. All
common service and message definitions are now to be found in modulo_interfaces.
- refactor!: remove modulo_component_interfaces (#88)
modulo_utils
In order to minimize code duplication between modulo_components and modulo_controllers, which define classes with
very similar interfaces, shared dependencies have been moved to modulo_utils:
- Custom defined exceptions used across all modulo packages (#90, #117)
- Parsing utilities and the
PredicateVariant(#89, #101)
modulo_core
Apart from a minor renaming in #77, modulo_core comes with an important features that breaks the ABI. Using heavy
templating and concepts) introduced in C++20, it was
possible to extend the communication classes (MessagePair, PublisherHandler and SubscriptionHandler) to any ROS
message type.
- refactor(core)!: rename function in modulo translators (#77)
- feat!: add support for custom inputs and outputs (#133)
modulo_controllers
There is a new intermediate base class BaseControllerInterface that adds typical modulo interfaces (add_parameter,
add_input, add_service, etc.) to the controller_interface::ControllerInterface class from ROS 2 control. This
should allow simpler migration of pure ROS 2 control controller implementations to the modulo controller interface.
Additionally, the constructor of the RobotControllerInterface has an additional argument that allows to specify if
collision features should be enabled in the robot model.
- refactor(controllers)!: split up base class (#135)
- feat(controllers)!: add flag for collision features to robot controller interface (#114)
modulo_components
In the component classes, the period parameter has been removed for good and replaced by the rate parameter which
is not an integer type anymore but a floating type number. Manually published lifecycle predicates have been removed
because they can already be inferred from automatically published topics on the ROS network.
- feat(components)!: add mutex around step callback (#67)
- refactor(components)!: remove period parameter and make rate double (#108)
- refactor!: remove lifecycle predicates and add lifecycle state getter (#130)
Features and Fixes
Core
- feat(interfaces): add message definition for encoded state (#132)
- feat(utils): add binary reader and recorder for encoded states (#152)
Components and Controllers
- feat(controllers): add add_interfaces function for derived controllers (#102)
- refactor(controllers): change predicate topic of controllers (#121)
- fix(components): keep parameter values in sync with ros (#111)
- fix(controllers): keep parameter values in sync with ros (#125)
- feat(components): only publish predicates on value change (#123)
- feat(controllers): only publish predicates on value change (#124)
- fix(controllers): remove duplicate function (#140)
- feat: try catch lifecycle transitions in components and controllers (#120)
- feat(components): use component description schema 1-1-1 to mark lifecycle property (#136)
- docs(components): update schema path in component descriptions (#154)
- refactor(components): improve component error handling (#138)
- fix(components): correctly go through shutdown sequence (#157)
Build
- feat: update to jazzy and CL v9.0.0 (#116)
- feat: use v2.0.0-rc1-jazzy image (#126)
- release: use updated base image (#139)
- chore: format repository (#142)
- release: version v5.0.0-rc0009 (#155)
Dependencies
- package-builder: v1.1.1
- ros2-ws: v2.0.0-jazzy
- control-libraries: v9.0.0
Version 4.2.2
Version 4.2.2 is a patch that brings a few fixes and minor improvements to the controller interface. Mainly, it improves
the controller stability by safely handling a potentially failing dynamic pointer cast.