Lyrical Luth has been marked as stable/released in ros2_control, ros2_controllers, control_toolbox and realtime_tools. Here are the main changes since Kilted Kaiju. A few of them change default behaviour, so read the
Breaking / behaviour changes subsections before you upgrade.
For what the stable label means for API and ABI stability from here on, see Releases, versioning and public API claim of ros-controls.
= backported to Jazzy. The number after the icon is the first Jazzy release of that package to include the change. If you’re still on Jazzy, you can already use these.
Full details:
- Release notes
- Migration guides
CHANGELOG.rstof each package
ros2_control
Breaking / behaviour changes
- The handle and export APIs deprecated since Jazzy have been removed (#3610). See the announcement and the migration guide for step-by-step instructions.
- Hardware components:
export_state_interfaces()/export_command_interfaces()are gone. The framework now creates the interfaces from the<ros2_control>tag; useset_state/get_stateandset_command/get_commandto access the values. StateInterface/CommandInterfacecan no longer be built from adouble*. Handles now own their value.- Chainable controllers:
on_export_state_interfaces()/on_export_reference_interfaces()are replaced byon_export_*_interfaces_list(), which return shared pointers.
- Hardware components:
switch_controlleris nowstrictby default (#2742).configure_controlleronly acceptsunconfiguredcontrollers. Thespawnernow skips controllers that are already configured; pass--reconfigureto clean up and configure them again (#3196).- The controller manager’s ROS arguments are no longer forwarded to controllers (#3016).
- A failing controller now deactivates its whole chain (#2681).
4.39.0 - Controller update rates are rounded to the nearest achievable rate when the requested rate does not divide evenly into the controller manager’s rate (#2828).
4.41.0
New features
- More data types in handles: besides
doubleandbool, handles now also supportfloat32,int8/16/32anduint8/16/32(#2879).
4.42.0 - New interface configuration types
INDIVIDUAL_BEST_EFFORTandREGEXfor more flexible interface claiming (#2902).
4.42.0 - New
MagneticFieldSensorsemantic component (#2627).
4.39.0 - New
cleanup_controllerservice and CLI verb (#2414), andros2 control unload_controller --all-inactive(#3466).
4.42.0 / 4.48.0 - New
handle_exceptionsparameter: choose whether exceptions thrown in a controller’supdate()are caught by the controller manager or propagated (#2807).
4.40.0 - spawner: separate arguments for each controller when using
--controller(#2895)
4.44.0. Parameter files are matched the same way rclcppdoes it, including namespaces and wildcards (#3719). simple_transmissionanddifferential_transmissionsupport theforceinterface (#2588).
4.39.0
ros2_controllers
Breaking / behaviour changes
- joint_trajectory_controller:
constraints.goal_timenow defaults to10.0s, and its meaning has changed. A negative value now waits indefinitely;0.0now means no grace period.action_execution_timeouthas been removed (#2592). - joint_state_broadcaster no longer publishes
dynamic_joint_states. Usestate_interfaces_broadcasterorgpio_controllersinstead (#2187). JointGroupPositionController,JointGroupVelocityControllerandJointGroupEffortControllerare deprecated. Useforward_command_controllerwith theinterface_nameparameter instead (#1913).- diff_drive / mecanum_drive / omni_wheel_drive controllers:
tf_frame_prefix_enableis deprecated. Settf_frame_prefix: ""instead, or"~"to use the node namespace (#1997). diff_drive_controller’spublish_rateparameter has been removed (#2259).
New controllers
- battery_state_broadcaster (#2086).
4.42.0 - state_interfaces_broadcaster (#2006).
4.36.0 - magnetometer_broadcaster (#2214).
4.41.0
New features
- joint_trajectory_controller:
- Trajectory replacement from ROS 1 is back (
allow_trajectory_replacement): a new goal is spliced into the running trajectory instead of replacing it (#2419). - Decelerate to stop on cancel/preempt with
max_deceleration_on_cancel(#2163).
4.39.0 - Upsampling of positions-only action chunks into a smooth spline, useful for learned policies that run at a low rate (
positions_upsampling.enable) (#2491).
- Trajectory replacement from ROS 1 is back (
- Mobile robot controllers: new service to set the odometry at runtime (#2096, #2110, #2148, #2244).
- force_torque_sensor_broadcaster: can publish the wrench transformed into a list of target frames (#2021).
4.35.0 - pid_controller:
set_current_state_as_first_setpointavoids jumps on activation (#2205)
4.39.0; reset_commands_at_deactivation(#2602)
4.43.0.
control_toolbox
- New templated
ExponentialFilterclass (#493). LowPassFilter::configure()can set the filter’s initial state (#657).
realtime_tools
- New
LockFreePooledSPSCQueuefor large or move-only types (#606).
3.14.1
Thank you to everyone who contributed code, reviews, issues and testing this cycle! ![]()
Please report problems on the ros-controls GitHub.