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
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)Added new methods
on_export_state_interfaces_listandon_export_reference_interfaces_listare added exporting the interface pointers for chainable controller. (#2988)
controller_manager
The
bcolorsclass now respects theRCUTILS_COLORIZED_OUTPUTenvironment variable to automatically disable colors in non-TTY and CI environments.The default strictness for
switch_controlleris changed tostrict. (#2742)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)The
spawnernow supports per controller arguments, while parsing the arguments for multiple controllers using--controlleroption. (#2895)Added new
cleanup_controllerservice 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
spawnernow forwards all the parameter files parsed to the spawner node to the spawned controllers. This would supportallow_substsapproach. (#3136)configure_controllerno longer implicitly cleans up aninactivecontroller before configuring; it now strictly requires theunconfiguredstate and returns an error otherwise. (#3196)The
spawnerskips configuring an already configured controller. Use the new--reconfigureargument to cleanup and configure it again. (#3196)The
spawnerandros2 control load_controllernow 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 asrclcpp. (#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_interfacesandlist_hardware_componentsservices 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,int32data types in addition to double and bool. (#2879)CommandInterface::is_limited()now returnsboolby value instead ofconst bool &, as the limited flag is now atomic to avoid a data race with the introspection sampler. (#3618)The dependency on
libstatistics_collectoris removed, as it is no longer available from ROS 2 Rolling onwards. TheStatisticDatastruct is now provided asros2_control::StatisticDatainhardware_interface/types/statistic_data.hpp. (#3772)
ros2controlcli
transmission_interface
The
simple_transmissionanddifferential_transmissionnow also support theforceinterface (#2588).