From faabc7dc84ae75475fa5a9d761fea886f38aba65 Mon Sep 17 00:00:00 2001 From: Shane Loretz Date: Sat, 16 May 2026 11:50:18 -0700 Subject: [PATCH] Address Kat's feedback on https://github.com/ros2/ros2_documentation/pull/6765 (#6796) Signed-off-by: Shane Loretz (cherry picked from commit d53a218b7caa69c4fdca733492577a7ea0031823) --- source/Releases/Release-Lyrical-Luth.rst | 31 +++++++++--------- .../images/ros2_param_get_use_sim_time.gif | Bin 0 -> 11880 bytes 2 files changed, 15 insertions(+), 16 deletions(-) create mode 100644 source/Releases/images/ros2_param_get_use_sim_time.gif diff --git a/source/Releases/Release-Lyrical-Luth.rst b/source/Releases/Release-Lyrical-Luth.rst index f54aac7070..fc6bf72cfe 100644 --- a/source/Releases/Release-Lyrical-Luth.rst +++ b/source/Releases/Release-Lyrical-Luth.rst @@ -242,11 +242,11 @@ Note that only publishers and subscribers using ``rmw_fastrtps_cpp`` may use thi Using a custom hardware accelerator or machine learning library? You can benefit from this too. -Use YAML tags in parameter files -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +Annotate types in YAML Parameter Files +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Tired of ``rcl`` interpreting ambiguous YAML parameter values as the wrong type? -Prevent that by specifying the type using YAML tags. +In ROS Lyrical, use YAML tags to specify the correct type. .. code-block:: yaml @@ -261,10 +261,12 @@ Prevent that by specifying the type using YAML tags. See `ros2/rcl#1275 `_ for more info. -More logging options in launch files -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +Per-message log severity in launch files +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +ROS Lyrical now supports per-message log severity levels in launch files. +This makes it easier to find important messages or ignore unimportant ones in log files when debugging! -Have different kinds of messages in your log files that you want to log with different severity? Specify the log level using the new ``level`` argument on the ``log`` action. Alternatively, use the new ``log_debug``, ``log_info``, ``log_warning``, or ``log_error`` actions. @@ -415,8 +417,8 @@ Playback example: See `ros2/rosbag2#2047 `_, `ros2/rosbag2#2062 `_, `ros2/rosbag2#2061 `_, and `ros2/rosbag2#2095 `_ for more details. -Circular recording by bag split -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +Circular bag recording with limit on number of bags +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Recording data on your robot with limited disk space? Try the new ``--max-bag-files`` option. @@ -446,8 +448,8 @@ Do you have trouble identifying which bag is which? See `ros2/rosbag2#2265 `_ for more details. -``rosbag2`` message-loss observability -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +Catch data loss early with ``rosbag2`` message-loss observability +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Say you've built a robust system for recording data on your robot, but there is a problem. How do you *know* there's a problem? @@ -489,10 +491,7 @@ Are you using simulated time? How do you know if all of your nodes are using simulated time? Use ``ros2 param get `` to get a parameter value from all nodes. -.. code-block:: shell - - ros2 param get use_sim_time - +.. image:: images/ros2_param_get_use_sim_time.gif See `ros2/ros2cli#1174 `_ for more info. @@ -524,8 +523,8 @@ Use ``ros2 param set ...`` to se See `ros2/ros2cli#1203 `_ and `ros2/ros2cli#1204 `_ for more details. -Actions, Services, and Environment variables in ``ros2 doctor --report`` -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +``ros2 doctor --report`` now reports Actions, Services, and Environment variables +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ``ros2 doctor --report`` now includes information about Actions, Services, and ROS-related environment variables. Include this report in your GitHub issues or AI prompts to debug problems faster. diff --git a/source/Releases/images/ros2_param_get_use_sim_time.gif b/source/Releases/images/ros2_param_get_use_sim_time.gif new file mode 100644 index 0000000000000000000000000000000000000000..76b2b798b1beb317f5cead52cdf441924158cd07 GIT binary patch literal 11880 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