CHANGELOG
Changelog for package controller_manager
4.20.0 (2024-11-08)
change from thread_priority.hpp to realtime_helpers.hpp (#1829)
Use Clock instead of Rate for backward compatibility of rolling (#1864)
[ros2_control_node] Handle simulation environment clocks (#1810)
[CM] Fix controller missing update cycles in a real setup (#1774)
[ros2_control_node] Add option to set the CPU affinity (#1852)
[ros2_control_node] Add the realtime_tools lock_memory method to prevent page faults (#1822)
Fix CMP0115 (#1830)
fix: typo use thread_priority (#1844)
Fix Hardware spawner and add tests for it (#1759)
add thread_priority option to the ros2_control_node (#1820)
Contributors: Baris Yazici, Christoph Fröhlich, Felix Exner (fexner), Sai Kishor Kothakota
4.19.0 (2024-10-26)
Fix timeout value in std output (#1807)
[CM] Async Function Handler for Controllers (#1489)
[Spawner] Add support for wildcard entries in the controller param files (#1724)
[Feature] Fallback controllers (#1789)
Check the update_rate set to the controllers to be a valid one (#1788)
[PR-1689] Follow-up PR of the controller interface variants integration (#1779)
Improve diagnostics of Controllers, Hardware Components and Controller Manager (#1764)
Improve launch utils to support the multiple controller names (#1782)
[RM/HW] Constify the exported state interfaces using ConstSharedPtr (#1767)
[CM] Throw an exception when the components initially fail to be in the required state (#1729)
Contributors: Felix Exner (fexner), Sai Kishor Kothakota
4.18.0 (2024-10-07)
Adapt controller Reference/StateInterfaces to New Way of Exporting (variant support) (#1689)
Add test coverage for params_file parameter in spawner/unspawner tests (#1754)
[ros2controlcli] add params file parsing to load_controller verb and add namespacing support (#1703)
Contributors: Manuel Muth, Sai Kishor Kothakota, Santosh Govindaraj
4.17.0 (2024-09-11)
Log exception type when catching the exception (#1749)
[CM] Handle other exceptions while loading the controller plugin (#1731)
remove unnecessary log of the CM args (#1720)
Fix unload of controllers when spawned with –unload-on-kill (#1717)
Rename get_state and set_state Functions to get/set_lifecylce_state (variant support) (#1683)
Contributors: Manuel Muth, Sai Kishor Kothakota
4.16.1 (2024-08-24)
propage a portion of global args to the controller nodes (#1712)
Contributors: Sai Kishor Kothakota
4.16.0 (2024-08-22)
inform user what reason is for not setting rt policy, inform is policy (#1705)
Fix params_file typo in spawner and update release notes for use_global_arguments (#1701)
Fix spawner tests timeout (#1692)
Refactor spawner to be able to reuse code for ros2controlcli (#1661)
Robustify controller spawner and add integration test with many controllers (#1501)
Handle waiting in Spawner and align Hardware Spawner functionality (#1562)
Make list controller and list hardware components immediately visualize the state. (#1606)
[CI] Add coveragepy and remove ignore: test (#1668)
Fix spawner unload on kill test (#1675)
[CM] Add more logging for easier debugging (#1645)
refactor SwitchParams to fix the incosistencies in the spawner tests (#1638)
Contributors: Bence Magyar, Christoph Fröhlich, Dr. Denis, Felix Exner (fexner), Manuel Muth, Sai Kishor Kothakota
4.15.0 (2024-08-05)
Add missing include for executors (#1653)
Fix the namespaced controller_manager spawner + added tests (#1640)
CM: Add missing includes (#1641)
Fix rst markup (#1642)
Add a pytest launch file to test ros2_control_node (#1636)
[CM] Remove deprecated spawner args (#1639)
Contributors: Christoph Fröhlich, Sai Kishor Kothakota
4.14.0 (2024-07-23)
4.13.0 (2024-07-08)
4.12.0 (2024-07-01)
[rqt_controller_manager] Add hardware components (#1455)
[RM] Rename load_urdf method to load_and_initialize_components and add error handling there to avoid stack crashing when error happens. (#1354)
Fix update period for the first update after activation (#1551)
Bump version of pre-commit hooks (#1556)
Contributors: Christoph Fröhlich, Dr. Denis, github-actions[bot]
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)
4.8.0 (2024-03-27)
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)
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)
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)
3.19.1 (2023-10-04)
Fix next controller update cycle time clock (#1127)
Contributors: Sai Kishor Kothakota
3.19.0 (2023-10-03)
3.18.0 (2023-08-17)
3.17.0 (2023-08-07)
3.16.0 (2023-07-09)
3.15.0 (2023-06-23)
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)
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)
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)
3.8.0 (2023-02-10)
Fix CMake install so overriding works (#926)
🖤 Add Black formatter for Python files. (#936)
Add list_hardware_components CLI <https://github.com/ros-controls/ros2_control/issues/796>`_ - Adds list_hardware_components to CLI (#891)
Contributors: Andy McEvoy, Dr. Denis, Tyler Weaver
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)
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)
3.4.0 (2022-11-27)
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)
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)
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)
2.6.0 (2022-04-20)
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)
2.3.0 (2022-02-18)
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)
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)
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