Release Notes: Jazzy to Kilted

This list summarizes the changes between Jazzy (previous) and Kilted (current) releases.

controller_interface

  • The new MagneticFieldSensor semantic 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_EFFORT and REGEX. These allow for more flexible controller interface configurations. (#2902)

controller_manager

  • The default strictness of the switch_controllers can now we be chosen using ROS 2 parameters. The default behaviour is still left to BEST_EFFORT (#2168).

  • Parameter shutdown_on_initial_state_failure was added to avoid shutting down on hardware initial state failure (#2230).

  • The controller manager now publishes ~/statistics/names and ~/statistics/values topics 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_asap of the switch_controllers service (#2452).

  • The spawner now supports two new arguments --switch-asap and --no-switch-asap to 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-asap because when activating multiple controllers at same time might affect the realtime loop performance (#2452).

  • New parameters overruns.manage and overruns.print_warnings were added to control the behavior of the controller manager/ros2_control_node when overruns occur (#2546).

  • The bcolors class now respects the RCUTILS_COLORIZED_OUTPUT environment variable to automatically disable colors in non-TTY and CI environments.

  • A new parameter handle_exceptions is 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_controller service to the controller manager to allow cleaning up controllers from external clients. (#2414)

hardware_interface

  • The prepare_command_mode_switch and perform_command_mode_switch methods 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_deactivate is 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_hardware is 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: synchronized and detached and 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, int32 data types in addition to double and bool. (#2879)

ros2controlcli

  • The CLI verbs list_hardware_components and list_hardware_interfaces will now show the data type used by the internal Command and State interfaces (#2204).

  • Added CLI support for invoking controller cleanup. (#2414)

transmission_interface

  • The simple_transmission and differential_transmission now also support the force interface (#2588).