CHANGELOG

Changelog for package controller_manager

4.11.0 (2024-05-14)

  • Add find_package for ament_cmake_gen_version_h (#1534)

  • Contributors: Christoph Fröhlich

4.10.0 (2024-05-08)

  • allow extra spawner arguments to not declare every argument in launch utils (#1505)

  • Working async controllers and components [not synchronized] (#1041)

  • Add fallback controllers list to the ControllerInfo (#1503)

  • Add a functionality to look for the controller type in the params file when not parsed (#1502)

  • Add controller exception handling in controller manager (#1507)

  • Contributors: Márk Szitanics, Sai Kishor Kothakota

4.9.0 (2024-04-30)

  • Deactivate the controllers when they return error similar to hardware (#1499)

  • Component parser: Get mimic information from URDF (#1256)

  • Contributors: Christoph Fröhlich, Sai Kishor Kothakota

4.8.0 (2024-03-27)

  • generate version.h file per package using the ament_generate_version_header (#1449)

  • Use ament_cmake generated rclcpp version header (#1448)

  • Replace random_shuffle with shuffle. (#1446)

  • Contributors: Chris Lalancette, Sai Kishor Kothakota

4.7.0 (2024-03-22)

  • add missing compiler definitions of RCLCPP_VERSION_MAJOR (#1440)

  • Codeformat from new pre-commit config (#1433)

  • add conditioning to get_parameter_value method import (#1428)

  • Change the controller sorting with an approach similar to directed acyclic graphs (#1384)

  • Contributors: Christoph Fröhlich, Sai Kishor Kothakota

4.6.0 (2024-03-02)

  • Add -Werror=missing-braces to compile options (#1423)

  • added conditioning to have rolling tags compilable in older versions (#1422)

  • [CM] Remove deprecated parameters for initial component states. (#1357)

  • [BREAKING CHANGE] Use robot_description topic instead of ~/robot_description and update docs regarding this (#1410)

  • [CI] Code coverage + pre-commit (#1413)

  • Fix multiple chainable controller activation bug (#1401)

  • Contributors: Christoph Fröhlich, Dr. Denis, Felix Exner (fexner), Sai Kishor Kothakota

4.5.0 (2024-02-12)

  • check for state of the controller node before cleanup (#1363)

  • [CM] Use explicit constants in controller tests. (#1356)

  • [CM] Optimized debug output about interfaces when switching controllers. (#1355)

  • A method to get node options to setup the controller node #api-breaking (#1169)

  • Contributors: Dr. Denis, Sai Kishor Kothakota

4.4.0 (2024-01-31)

  • Move test_components to own package (#1325)

  • Fix controller parameter loading issue in different cases (#1293)

  • Contributors: Christoph Fröhlich, Sai Kishor Kothakota

4.3.0 (2024-01-20)

  • [CM] Better readability and maintainability: rename variables, move code to more logical places 🔧 (#1227)

  • Initialize the controller manager services after initializing resource manager (#1271)

  • Issue 695: Changing ‘namespace_’ variables to ‘node_namespace’ to make it more explicit (#1239)

  • Fix rqt controller manager crash on ros2_control restart (#1273)

  • [docs] Remove joint_state_controller (#1263)

  • controller_manager: Add space to string literal concatenation (#1245)

  • Try using SCHED_FIFO on any kernel (#1142)

  • [CM] Set chained controller interfaces ‘available’ for activated controllers (#1098)

  • [CM] Increase tests timeout (#1224)

  • Contributors: Christoph Fröhlich, Dr. Denis, Felix Exner (fexner), Sai Kishor Kothakota, Yasushi SHOJI, bailaC

4.2.0 (2023-12-12)

  • [CM] Linting if/else statements (#1193)

  • Reformat with braces added (#1209)

  • Report inactive controllers as a diagnostics ok instead of an error (#1184)

  • Fix controller sorting issue while loading large number of controllers (#1180)

  • Contributors: Bence Magyar, Dr. Denis, Lennart Nachtigall, Sai Kishor Kothakota

4.1.0 (2023-11-30)

  • Add few warning compiler options to error (#1181)

  • [ControllerManager] Fix all warnings from the latets features. (#1174)

  • Compute the actual update period for each controller (#1140)

  • Contributors: Dr. Denis, Sai Kishor Kothakota

4.0.0 (2023-11-21)

  • Pass controller manager update rate on the init of the controller interface (#1141)

  • Fix the controller sorting bug when the interfaces are not configured (fixes #1164) (#1165)

  • Pass URDF to controllers on init (#1088)

  • Remove deprecation warning (#1101)

  • Contributors: Bence Magyar, Christoph Fröhlich, Sai Kishor Kothakota

3.21.0 (2023-11-06)

  • Sort controllers while configuring instead of while activating (#1107)

  • Contributors: Sai Kishor Kothakota

3.20.0 (2023-10-31)

  • Update spawner to accept controllers list and start them in sequence (#1139)

  • [ResourceManager] deactivate hardware from read/write return value (#884)

  • Export of the get_cm_node_options() from robostack (#1129)

  • Contributors: Felix Exner (fexner), Olivier Stasse, Sai Kishor Kothakota

3.19.1 (2023-10-04)

  • Fix next controller update cycle time clock (#1127)

  • Contributors: Sai Kishor Kothakota

3.19.0 (2023-10-03)

  • Proper controller update rate (#1105)

  • Fix multiple calls to export reference interfaces (#1108)

  • [Docs] Fix information about activation and deactivation of chainable controllers (#1104)

  • Contributors: Dr. Denis, Sai Kishor Kothakota

3.18.0 (2023-08-17)

  • Controller sorting and proper execution in a chain (Fixes #853) (#1063)

  • Contributors: Sai Kishor Kothakota, Christoph Fröhlich, Dr Denis, Bence Magyar

3.17.0 (2023-08-07)

  • [CM] Fixes the issue with individual controller’s update rate (#1082)

  • Fix deprecation warning (#1093)

  • Contributors: Christoph Fröhlich, Sai Kishor Kothakota

3.16.0 (2023-07-09)

  • added controller manager runner to have update cycles (#1075)

  • [CM] Make error message after trying to active controller more informative. (#1066)

  • Fix equal and higher controller update rate (#1070)

  • Create doc file for chained controllers (#985)

  • Contributors: Dr. Denis, Sai Kishor Kothakota

3.15.0 (2023-06-23)

  • Enable setting of initial state in HW compoments (#1046)

  • [CM] Improve output when using robot description topic and give output about correct topic even remapped. (#1059)

  • Contributors: Dr. Denis

3.14.0 (2023-06-14)

  • Add -Wconversion flag to protect future developments (#1053)

  • [CM] Use robot_description topic instead of parameter and don’t crash on empty URDF 🦿 (#940)

  • enable ReflowComments to also use ColumnLimit on comments (#1037)

  • Docs: Use branch name substitution for all links (#1031)

  • Add text to assertions references (#1023)

  • Contributors: Christoph Fröhlich, Felix Exner (fexner), Manuel Muth, Sai Kishor Kothakota, gwalck

3.13.0 (2023-05-18)

  • Add class for thread management of async hw interfaces (#981)

  • Fix GitHub link on control.ros.org (#1022)

  • Remove log-level argument from spawner script (#1013)

  • Contributors: Christoph Fröhlich, Márk Szitanics, Bijou Abraham

3.12.2 (2023-04-29)

3.12.1 (2023-04-14)

3.12.0 (2023-04-02)

  • [Controller Interface] Add time and period paramters to update_reference_from_subscribers() (#846) #API-break

  • Contributors: Robotgir

3.11.0 (2023-03-22)

  • [ControllerManager] Add Class for Async Controllers and Lifecycle Management (#932)

  • Consistent use of colors for warning and error msgs in spawner (#974)

  • Fix wrong warning messages (#973)

  • Add log level support to spawner node (#972)

  • Contributors: Dr. Denis, Márk Szitanics, Bijou Abraham

3.10.0 (2023-03-16)

  • add spawner for hardware (#941)

  • Contributors: Manuel Muth

3.9.1 (2023-03-09)

3.9.0 (2023-02-28)

  • fix AttributeError: Parameter object attribute name is read-only (#957)

  • Remove deprecations from CLI and controller_manager (#948)

  • Expose node options to controller manager (#942)

  • Contributors: Christoph Fröhlich, Noel Jiménez García, methylDragon

3.8.0 (2023-02-10)

3.7.0 (2023-01-24)

  • Do not use CLI calls but direct API for setting parameters. (#910)

  • Optimize output of controller spawner (#909)

  • ControllerManager: catch exception by reference (#906)

  • Test fix: don’t keep reference to the controller in the test when it should be destroyed in the controller manager (#883)

  • Merge branch ‘fix-update-rate’ into humble (#874)

  • Contributors: Christopher Wecht, Dr. Denis, Tony Najjar, sgmurray

3.6.0 (2023-01-12)

  • Fix QoS deprecation warnings (#879)

  • Add backward_ros to controller_manager (#886)

  • Contributors: Andy McEvoy, Bence Magyar

3.5.1 (2023-01-06)

  • Prevent controller manager from crashing when controller’s plugin has error during loading. (#881)

  • Contributors: Denis Štogl

3.5.0 (2022-12-06)

  • Rename class type to plugin name #api-breaking #abi-breaking (#780)

  • Namespace Loaded Controllers (#852)

  • Contributors: Bence Magyar, sp-sophia-labs

3.4.0 (2022-11-27)

  • Use a thread priority library from realtime_tools (#794)

  • [Doc] Correct type of update_rate parameter (#858)

  • Contributors: Andy Zelenak, Denis Štogl, Bence Magyar

3.3.0 (2022-11-15)

  • Adding activation/deactivation tests for chain controllers (#809)

  • Fix const-ness in std::chrono::time_point construction and explicitly use std::chrono::nanoseconds as std::chrono::time_point template parameter to help compilation on macOS as its std::chrono::system_clock::time_point defaults to std::chrono::milliseconds for duration type (#848)

  • [ControllerManager] Fix wrong initialization order and avoid compiler warnings (#836)

  • Contributors: Adrian Zwiener, Bilal Gill, Felix Exner, light-tech

3.2.0 (2022-10-15)

3.1.0 (2022-10-05)

  • Don’t ask to export reference interface if controller not ‘inactive’ or ‘active’ (#824)

  • Add diagnostics for controllers activity (#820)

  • Search for controller manager in the same namespace as spawner (#810)

  • Handle HW errors on read and write in CM by stopping controllers (#742) Add code for deactivating controller when hardware gets an error on read and write. Fix misleading variable name in the tests. Remove all interface from available list for hardware when an error happens. Do some more variable renaming to the new nomenclature.

  • Contributors: Denis Štogl, Tony Najjar

3.0.0 (2022-09-19)

2.15.0 (2022-09-19)

2.14.0 (2022-09-04)

  • Add doxygen comments (#777)

  • Contributors: Bence Magyar, Denis Štogl

2.13.0 (2022-08-03)

  • Clang tidy: delete a redundant return (#790)

  • Add chained controllers information in list controllers service #abi-braking (#758) * add chained controllers in ros2controlcli * remove controller_group from service * added comments to ControllerState message * added comments to ChainedConnection message

  • spawner.py: Fix python logging on deprecation warning (#787)

  • Add documentation for realtime permission (#781)

  • Fix bug in spawner with getter for node’s logger (#776)

  • Contributors: Andy Zelenak, Felix Exner, Paul Gesel, Bijou Abraham

2.12.1 (2022-07-14)

  • Rename CM members from start/stop to activate/deactivate nomenclature. (#756)

  • Fix spelling in comment (#769)

  • Contributors: Denis Štogl, Tyler Weaver

2.12.0 (2022-07-09)

  • Deprecate and rename start and stop nomenclature toward user to activate and deactivate #ABI-breaking (#755) * Rename fields and deprecate old nomenclature. * Add new defines to SwitchController.srv * Deprecated start/stop nomenclature in all CLI commands. * Deprecate ‘start_asap’ too as other fields.

  • [ros2_control_node] Automatically detect if RT kernel is used and opportunistically enable SCHED_FIFO (#748)

  • Contributors: Denis Štogl, Tyler Weaver

2.11.0 (2022-07-03)

  • Remove hybrid services in controller manager. (#761)

  • [Interfaces] Improved `get_name()` method of hardware interfaces #api-breaking (#737)

  • Update maintainers of packages (#753)

  • Fix test dependency for chainable test (#751)

  • Remove ament autolint (#749)

  • Full functionality of chainable controllers in controller manager (#667) * auto-switching of chained mode in controllers * interface-matching approach for managing chaining controllers

  • Fixup spanwer and unspawner tests. It changes spawner a bit to handle interupts internally. (#745)

  • Add missing field to initializer lists in tests (#746)

  • Small but useful output update on controller manager. (#741)

  • Fixed period passed to hardware components always 0 (#738)

  • Contributors: Bence Magyar, Denis Štogl, Maciej Bednarczyk, Lucas Schulze

2.10.0 (2022-06-18)

  • Make RHEL CI happy! (#730)

  • CMakeLists cleanup (#733)

  • Update to clang format 12 (#731)

  • Contributors: Andy Zelenak, Bence Magyar, Márk Szitanics

2.9.0 (2022-05-19)

  • Adding base class for chained controllers: ChainedControllersInterface (#663) * Extending ControllerInterface with methods for chainable controllers. * Switching to chained_mode is only forbidden if controller is active. * Default implementation for ‘on_set_chained_mode’ method. * Use two internal methods instead of ‘update’ directly on chained controllers.

  • Add ControllerInterfaceBase class with methods for chainable controller (#717)

  • Contributors: Denis Štogl

2.8.0 (2022-05-13)

  • Pass time and period to read() and write() (#715)

  • Contributors: Bence Magyar

2.7.0 (2022-04-29)

  • Update ControllerManager documenation describing some concepts (#677)

  • Make node private in ControllerInterface (#699)

  • Contributors: Chen Bainian, Denis Štogl, Jack Center, Bence Magyar

2.6.0 (2022-04-20)

  • Add controller_manager_msgs dependency to test_hardware_management_srvs (#702)

  • Remove unused variable from the test (#700)

  • Enable namespaces for controllers. (#693)

  • Spawner waits for services (#683)

  • Contributors: Denis Štogl, Rufus Wong, Tyler Weaver

2.5.0 (2022-03-25)

  • Make ControllerManager tests more flexible and reusable for different scenarios. Use more parameterized tests regarding strictness. (#661)

  • Use lifecycle nodes in controllers again (#538) * Add lifecycle nodes * Add custom ‘configure’ to controller interface to get ‘update_rate’ parameter. * Disable external interfaces of LifecycleNode.

  • Small fixes in controller manager tests. (#660)

  • Enable controller manager services to control hardware lifecycle #abi-breaking (#637) * Implement CM services for hardware lifecycle management. * Added default behavior to activate all controller and added description of CM parameters.

  • Contributors: Denis Štogl, Vatan Aksoy Tezer, Bence Magyar

2.4.0 (2022-02-23)

  • Fixes of issue with seg-fault when checking interfaces on unconfigured controllers. (#580)

  • Update CM service QoS so that we don’t lose service calls when using many controllers. (#643)

  • Contributors: Denis Štogl, Bence Magyar

2.3.0 (2022-02-18)

  • added a fixed control period to loop (#647)

  • install spawner/unspawner using console_script entrypoint (#607)

  • Add BEST_EFFORT in the controller switch tests. (#582)

  • Resolve unused parameter warnings (#636)

  • Contributors: Bence Magyar, Denis Štogl, Jack Center, Melvin Wang, Xi-Huang

2.2.0 (2022-01-24)

  • Resource Manager API changes for hardware lifecycle #api-breaking #abi-breaking (#589) * Towards selective starting and stoping of hardware components. Cleaning and renaming. * Move Lifecycle of hardware component to the bottom for better overview. * Use the same nomenclature as for controllers. ‘start’ -> ‘activate’; ‘stop’ -> ‘deactivate’ * Add selective starting and stopping of hardware resources. Add HardwareComponentInfo structure in resource manager. Use constants for HW parameters in tests of resource_manager. Add list hardware components in CM to get details about them and check their status. Use clear name for ‘guard’ and move release cmd itfs for better readability. RM: Add lock for accesing maps with stored interfaces. Separate hardware components-related services after controllers-related services. Add service for activate/deactive hardware components. Add activation and deactivation through ResourceStorage. This helps to manage available command interfaces. * Use lifecycle_msgs/State in ListHardwareCompoents for state representation. * Simplify repeatable code in methods. * Add HW shutdown structure into ResouceManager. * Fill out service callback in CM and add parameter for auto-configure. * Move claimed_command_itf_map to ResourceStorage from ResourceManager. * Do not automatically configure hardware in RM. * Lifecycle and claiming in Resource Manager is working. * Extend controller manager to support HW lifecycle. * Add also available and claimed status into list components service output. * Add SetHardwareComponentState service. * Make all output in services debug-output. * Remove specific services for hardware lifecycle management and leave only ‘set_hardware_component_state’ service. * Make init_resource_manager less stateful. * Keep old api to start/activate all components per default. * Remove ‘moving’/’non-moving’ interface-handling. * Remove obsolete ‘import_components’ methods without hardware info and fix post_initialization test. Co-authored-by: Bence Magyar <bence.magyar.robotics@gmail.com>

  • Contributors: Denis Štogl

2.1.0 (2022-01-11)

2.0.0 (2021-12-29)

  • Add service-skeletons for controlling hardware lifecycle. (#585)

  • fix get_update_rate visibility in windows (#586)

  • Make output of not available controller nicer and make it informational. (#577)

  • Contributors: Denis Štogl, Melvin Wang

1.2.0 (2021-11-05)

1.1.0 (2021-10-25)

  • feat: add colored output into spawner.py (#560)

  • Added timeout argument for service_caller timeout (#552)

  • controller_manager: Use command_interface_configuration for the claimed interfaces when calling list_controllers (#544)

  • Clean up test_load_controller (#532)

  • Contributors: Jack Center, Jafar Abdi, Michael, Nour Saeed

1.0.0 (2021-09-29)

  • Use ControllerManager node clock for control loop timepoints (#542)

  • Per controller update rate(#513)

  • added dt to controller interface and controller manager #438 (#520)

  • Update nomenclature in CM for better code and output understanding (#517)

  • Methods controlling the lifecycle of controllers all have on_ prefix

  • Controller Manager should not crash when trying to start finalized or unconfigured controller (#461)

  • Fix deprecation warning from rclcpp::Duration (#511)

  • Remove BOOST compiler definitions for pluginlib from CMakeLists (#514)

  • Do not manually set C++ version to 14 (#516)

  • Refactor INSTANTIATE_TEST_CASE_P -> INSTANTIATE_TEST_SUITE_P (#515) Also removed the duplicated format & compiler fixes as on Galactic this shouldn’t be an issue

  • rename get_current_state() to get_state() (#512)

  • Fix spawner tests (#509)

  • Removed deprecated CLI verbs (#420)

  • Remove extensions from executable nodes (#453)

  • Contributors: Bence Magyar, Denis Štogl, Dmitri Ignakov, Joseph Schornak, Márk Szitanics, Tim Clephas, bailaC, Mathias Aarbo

0.8.0 (2021-08-28)

  • Use clang format as code formatter (#491)

  • Use example urdf from the test_assests package. (#495)

  • Separate controller manager test cases (#476)

  • Add Controller Manager docs (#467)

  • sort interfaces in resource manager (#483)

  • Add pre-commit setup. (#473)

  • Make controller_manager set controller’s use_sim_time param when use_sim_time=True (#468) * potential solution to controller_manager use_sim_time sharing issue * removed debug print statements * added INFO message to warn user that use_sim_time is being set automatically

  • Add load-only option into controller spawner (#427)

  • Fixes for windows (#443) * Fix building on windows * Fix MSVC linker error when building tests * Fix hang when loading controller on windows * Use better log for configuring controller * Be consistent with visibility control * Use try_lock throw exception on failure

  • Add an argument to define controller manager timeout (#444)

  • Contributors: Akash, Bence Magyar, Darko Lukić, Denis Štogl, Karsten Knese, Simon Honigmann

0.7.1 (2021-06-15)

  • Use namespace in controller_manager (#435)

  • Contributors: Jonatan Olofsson

0.7.0 (2021-06-06)

0.6.1 (2021-05-31)

  • Add missing dependency on controller_manager_msgs (#426)

  • Contributors: Denis Štogl

0.6.0 (2021-05-23)

  • List controller claimed interfaces (#407) * List controllers now also shows the claimed interfaces * Fixed tests that perform switches Successfull controller switches require more than one call to update() in order to update the controller list * Can now set the command interface configuration * Added checks for the claimed interfaces

  • Contributors: Jordan Palacios

0.5.0 (2021-05-03)

  • Make controller manager update rate optional (#404)

  • Bump wait_for_service timeout to 10 seconds (#403)

  • introduce –stopped for spawner (#402)

  • hardware_interface mode switching using prepareSwitch doSwitch approach (#348)

  • Avoid std::stringstream (#391)

  • avoid deprecations (#393)

  • Use RCLCPP_DEBUG_STREAM for char * (#389)

  • Check controller_interface::init return value when loading (#386)

  • Do not throw when controller type is not found, return nullptr instead (#387)

  • Contributors: Auguste Bourgois, Karsten Knese, Matt Reynolds, Tyler Weaver, Mathias Hauan Arbo, Bence Magyar

0.4.0 (2021-04-07)

  • Fix deprecation warnings: SUCCESS -> OK (#375)

  • Don’t use FileType for param-file (#351)

  • Remodel ros2controlcli, refactor spawner/unspawner and fix test (#349)

  • Add spawner and unspawner scripts (#310)

  • Contributors: Bence Magyar, Jordan Palacios, Karsten Knese, Victor Lopez

0.3.0 (2021-03-21)

  • release_interfaces when stopping controller (#343) * release_interfaces when stopping controller * Moved release_interfaces after deactivate * First attempt at test_release_interfaces * Switched to std::async with cm_->update

  • Capatalized error message and put the controllers name and resource name inside quote (#338)

  • Contributors: mahaarbo, suab321321

0.2.1 (2021-03-02)

0.2.0 (2021-02-26)

  • Add “Fake” components for simple integration of framework (#323)

  • Contributors: Denis Štogl

0.1.6 (2021-02-05)

0.1.5 (2021-02-04)

0.1.4 (2021-02-03)

  • fix float conversion warning (#312)

  • update doxygen style according to ros2 core standard (#300)

  • Capitalized messages in controller_manager.cpp upto line669 (#285)

  • Sleep accurate duration on ros2_control_node (#302)

  • Contributors: Achinta-Choudhury, João Victor Torres Borges, Karsten Knese, Yutaka Kondo

0.1.3 (2021-01-21)

  • Fix building on macOS with clang (#292)

ail.com> * Contributors: Karsten Knese

0.1.2 (2021-01-06)

  • Fix update rate issues by working around MutliThreadedExecutor (#275) * Fix update rate issues by working around MutliThreadedExecutor Currently the MutliThreadedExecutor performance is very bad. This leads to controllers not meeting their update rate. This PR is a temporary workaround for these issues. The current approach uses a rclcpp timer to execute the control loop. When used in combination with the MutliThreadedExecutor, the timers are not execute at their target frequency. I’ve converted the control loop to a while loop on a separate thread that uses nanosleep to execute the correct update rate. This means that rclcpp is not involved in the execution and leads to much better performance. * Address review comments by rewriting several comments

  • Contributors: Ramon Wijnands

0.1.1 (2020-12-23)

0.1.0 (2020-12-22)

  • Add configure controller service (#272)

  • Remove lifecycle node (#261)

  • Added starting of resources into CM and RM (#240)

  • Use resource manager (#236)

  • Remove pluginlib warnings on reload test (#237)

  • resource loaning (#224)

  • Allocate memory for components and handles (#207)

  • Add controller manager services (#139)

  • Change Hardware return type to enum class (#114)

  • Use rclcpp::Executor instead of rclcpp::executor::Executor(deprecated) (#82)

  • Replace RCUTILS_ with RCLCPP_ for logging (#62)

  • dont include pluginlib header in controller manager header (#63)

  • export controller_interface (#58)

  • Use pluginlib instead of class_loader for loading controllers (#41)

  • import controller_manager

  • Contributors: Bence Magyar, Denis Štogl, Jafar Abdi, Jordan Palacios, Karsten Knese, Parth Chopra, Victor Lopez