Release Notes: Jazzy to Kilted
This list summarizes the changes between Jazzy (previous) and Kilted (current) releases.
controller_interface
The new
MagneticFieldSensorsemantic component provides an interface for reading data from magnetometers. (#2627)The controller_manager will now deactivate the entire controller chain if a controller in the chain fails during the update cycle. (#2681)
The update rate of the controller will now be approximated to a closer achievable frequency, when its frequency is not achievable with the current controller manager update rate. (#2828)
The lifecycle ID is cached internally in the controller to avoid calls to get_lifecycle_state() in the real-time control loop. (#2884)
Added 2 new interface_configuration_types:
INDIVIDUAL_BEST_EFFORTandREGEX. These allow for more flexible controller interface configurations. (#2902)
controller_manager
The default strictness of the
switch_controllerscan now we be chosen using ROS 2 parameters. The default behaviour is still left toBEST_EFFORT(#2168).Parameter
shutdown_on_initial_state_failurewas added to avoid shutting down on hardware initial state failure (#2230).The controller manager now publishes
~/statistics/namesand~/statistics/valuestopics to introspect the execution time and periodicity of the different entities running in the realtime loop (#2449).The controller manager now supports switching (activating and deactivating) controllers in both realtime and non-realtime modes. This is controlled by the parameter
activate_asapof theswitch_controllersservice (#2452).The spawner now supports two new arguments
--switch-asapand--no-switch-asapto control the behaviour of the spawner when switching controllers to be in realtime loop (or) non-realtime loop. By default, it is set to--no-switch-asapbecause when activating multiple controllers at same time might affect the realtime loop performance (#2452).New parameters
overruns.manageandoverruns.print_warningswere added to control the behavior of the controller manager/ros2_control_node when overruns occur (#2546).The
bcolorsclass now respects theRCUTILS_COLORIZED_OUTPUTenvironment variable to automatically disable colors in non-TTY and CI environments.A new parameter
handle_exceptionsis added to the controller manager to control whether exceptions thrown by controllers during update are caught and handled internally or propagated. (#2807)Added new
cleanup_controllerservice to the controller manager to allow cleaning up controllers from external clients. (#2414)
hardware_interface
The
prepare_command_mode_switchandperform_command_mode_switchmethods will now only receive the start/stop interfaces that belong to the hardware component instead of everything (#2120)The hardware interface is now treated similarly as ERROR, when a hardware component returns ERROR on the read cycle (#2334).
The controllers are now deactivated when a hardware component returns DEACTIVATE on the write cycle. The parameter
deactivate_controllers_on_hardware_self_deactivateis added to control this behavior temporarily. It is recommended to set this parameter to true in order to avoid controllers to use inactive hardware components and to avoid any unexpected behavior. This feature parameter will be removed in future releases and will be defaulted to true (#2334 & #2501).The controllers are not allowed to be activated when the hardware component is in INACTIVE state. The parameter
allow_controller_activation_with_inactive_hardwareis added to control this behavior temporarily. It is recommended to set this parameter to false in order to avoid controllers to use inactive hardware components and to avoid any unexpected behavior. This feature parameter will be removed in future releases and will be defaulted to false (#2347).The asynchronous components now support two scheduling policies:
synchronizedanddetachedand other properties to configure them (#2477).The lifecycle ID is cached internally in the controller to avoid calls to get_lifecycle_state() in the real-time control loop. (#2884)
Handles now also support
float32,uint8,int8,uint16,int16,uint32,int32data types in addition to double and bool. (#2879)
ros2controlcli
transmission_interface
The
simple_transmissionanddifferential_transmissionnow also support theforceinterface (#2588).