diff --git a/CHANGELOG.md b/CHANGELOG.md index c8c9b648..6f778238 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ Release Versions: +- [5.4.2](#542) - [5.4.1](#541) - [5.4.0](#540) - [5.3.0](#530) @@ -38,6 +39,13 @@ Release Versions: - chore: harmonize parameter validation messages (#251) - feat: add assignments in c++ (#221) +## 5.4.2 + +### May 28th, 2026 + +Version 5.4.2 is a patch release that fixes a bug in the controller base class where the joint commands would not be +written back to the hardware after deactivation. + ## 5.4.1 ### April 8th, 2026 diff --git a/aica-package.toml b/aica-package.toml index 788bdc93..0baae5b9 100644 --- a/aica-package.toml +++ b/aica-package.toml @@ -1,7 +1,7 @@ #syntax=ghcr.io/aica-technology/package-builder:v1.4.0 [metadata] -version = "5.4.1" +version = "5.4.2" description = "Modular ROS 2 extension library for dynamic composition of components and controllers with the AICA robotics framework" [metadata.collection] diff --git a/source/modulo_components/package.xml b/source/modulo_components/package.xml index 49515b1f..09edeec9 100644 --- a/source/modulo_components/package.xml +++ b/source/modulo_components/package.xml @@ -2,7 +2,7 @@ modulo_components - 5.4.1 + 5.4.2 Modulo base classes that wrap ROS 2 Nodes as modular components for the AICA application framework Baptiste Busch Enrico Eberhard diff --git a/source/modulo_controllers/package.xml b/source/modulo_controllers/package.xml index fc77d99c..75b191b0 100644 --- a/source/modulo_controllers/package.xml +++ b/source/modulo_controllers/package.xml @@ -1,7 +1,7 @@ modulo_controllers - 5.4.1 + 5.4.2 Interface class for modulo controllers Enrico Eberhard Dominic Reber diff --git a/source/modulo_controllers/src/ControllerInterface.cpp b/source/modulo_controllers/src/ControllerInterface.cpp index af5dcffe..deedaa72 100644 --- a/source/modulo_controllers/src/ControllerInterface.cpp +++ b/source/modulo_controllers/src/ControllerInterface.cpp @@ -191,7 +191,14 @@ rclcpp_lifecycle::node_interfaces::LifecycleNodeInterface::CallbackReturn Contro rclcpp_lifecycle::node_interfaces::LifecycleNodeInterface::CallbackReturn ControllerInterface::on_deactivate(const rclcpp_lifecycle::State&) { try { - return on_deactivate(); + if (auto ret = on_deactivate(); ret != CallbackReturn::SUCCESS) { + return ret; + } + if (write_command_interfaces(rclcpp::Duration(0s)) != controller_interface::return_type::OK) { + RCLCPP_ERROR(get_node()->get_logger(), "Failed to write command interfaces on deactivation."); + return CallbackReturn::ERROR; + } + return CallbackReturn::SUCCESS; } catch (const std::exception& ex) { RCLCPP_ERROR_STREAM(get_node()->get_logger(), ex.what()); } diff --git a/source/modulo_core/package.xml b/source/modulo_core/package.xml index 9ea4af09..9b8f7a3c 100644 --- a/source/modulo_core/package.xml +++ b/source/modulo_core/package.xml @@ -2,7 +2,7 @@ modulo_core - 5.4.1 + 5.4.2 Modulo Core communication and translation utilities for interoperability with AICA Control Libraries Baptiste Busch Enrico Eberhard diff --git a/source/modulo_utils/package.xml b/source/modulo_utils/package.xml index 015a7cb4..c5d552be 100644 --- a/source/modulo_utils/package.xml +++ b/source/modulo_utils/package.xml @@ -2,7 +2,7 @@ modulo_utils - 5.4.1 + 5.4.2 Modulo utils package for shared test fixtures Dominic Reber GPLv3