You're reading the documentation for a development version. For the latest released version, please have a look at Lyrical.

Release Notes: Kilted Kaiju to Lyrical Luth

This list summarizes important changes between Kilted Kaiju (previous) and Lyrical Luth (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)

  • Added new methods on_export_state_interfaces_list and on_export_reference_interfaces_list are added exporting the interface pointers for chainable controller. (#2988)

controller_manager

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

  • The default strictness for switch_controller is changed to strict. (#2742)

  • 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)

  • The spawner now supports per controller arguments, while parsing the arguments for multiple controllers using --controller option. (#2895)

  • Added new cleanup_controller service to the controller manager to allow cleaning up controllers from external clients. (#2414)

  • Removed forwarding of the controller manager’s ros arguments to the controllers via NodeOptions. (#3016)

  • The spawner now forwards all the parameter files parsed to the spawner node to the spawned controllers. This would support allow_substs approach. (#3136)

  • configure_controller no longer implicitly cleans up an inactive controller before configuring; it now strictly requires the unconfigured state and returns an error otherwise. (#3196)

  • The spawner skips configuring an already configured controller. Use the new --reconfigure argument to cleanup and configure it again. (#3196)

  • The spawner and ros2 control load_controller now accept parameter files with the controller namespace split across nested keys (e.g. /ns: {controller: {ros__parameters: ...}}), with or without the leading slash, and match entries (including /* and /** wildcards anywhere in the name) and their precedence the same way as rclcpp. (#3719)

  • The controller manager now resolves its clocks once per cycle instead of once per controller in the real-time update loop, reducing the per-controller overhead. (#3754)

  • The list_hardware_interfaces and list_hardware_components services now scale linearly with the number of interfaces, making them significantly faster on robots with many interfaces. (#3755)

  • The real-time fallback path no longer re-queries every controller’s command interface configuration once per fallback interface when a controller fails. (#3756)

hardware_interface

  • 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)

  • CommandInterface::is_limited() now returns bool by value instead of const bool &, as the limited flag is now atomic to avoid a data race with the introspection sampler. (#3618)

  • The dependency on libstatistics_collector is removed, as it is no longer available from ROS 2 Rolling onwards. The StatisticData struct is now provided as ros2_control::StatisticData in hardware_interface/types/statistic_data.hpp. (#3772)

ros2controlcli

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

  • Add option --all-inactive to unload_controller verb. (#3466)

transmission_interface

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