欢迎光临
我们一直在努力

ROS 2 Lyrical Luth启程-Ubuntu26.04-


本文提供了ROS2 Lyrical Luth版本的完整安装指南和功能说明。安装部分详细介绍了Ubuntu 26.04系统下的二进制包安装流程,包括系统环境配置、ROS2本体安装、环境变量设置和验证步骤。功能详解部分全面介绍了该版本的新特性,包括执行器优化、参数校验、Python异步节点、零拷贝消息发布、Launch文件增强、rosbag2改进等核心功能更新。作为长期支持版本(LTS),Lyrical Luth版本提供了多项性能优化和功能扩展,支持周期至2031年5月,适合机器人开发长期项目使用。


ROS2 Lyrical正式版替换测试版记录


ROS 2 Lyrical Luth Ubuntu 二进制包(Deb)安装指南

一、版本与平台说明

ROS 2 Lyrical Luth 目前仅提供 Ubuntu 26.04 (Resolute Raccoon) 系统的 Deb 安装包,支持架构:amd64(桌面/服务器)、arm64(嵌入式设备)。 本文区分必装步骤和可选步骤,完整翻译并补充操作说明、注意事项。


二、目录

  • 前期准备(系统环境配置)
  • 配置系统字符集(必选)
  • 启用系统软件源(必选)
  • 安装开发工具(可选)
  • 安装 ROS 2 本体(必选)
  • 更新系统与软件源缓存
  • 桌面完整版安装(推荐)
  • 基础精简版安装
  • 安装额外中间件 RMW(可选)
  • 配置运行环境(必选)
  • 运行示例验证安装(推荐)
  • 后续学习指引
  • 问题排查
  • 卸载 ROS 2(可选操作)

  • 三、详细安装步骤

    3.1 系统环境配置

    3.1.1 配置 UTF-8 字符集(必选)

    ROS 2 要求系统使用 UTF-8 编码,Docker 等极简环境默认可能为 POSIX,会导致乱码、功能异常,必须配置。

  • 查看当前字符集
  • bash

    运行

    locale

    若输出中无 UTF-8 相关字段,执行以下命令配置:

  • 安装字符集工具、生成英文 UTF-8 字符集
  • bash

    运行

    sudo apt update && sudo apt install locales -y
    sudo locale-gen en_US en_US.UTF-8

  • 全局设置系统编码
  • bash

    运行

    sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
    export LANG=en_US.UTF-8

  • 再次校验配置结果
  • bash

    运行

    locale

    看到 LANG=en_US.UTF-8、LC_ALL=en_US.UTF-8 即配置成功。


    3.1.2 启用系统 Universe 软件源 + ROS 官方源(必选)

    Ubuntu 默认部分版本未开启 universe 仓库,且需要手动添加 ROS 专属 APT 源,所有安装依赖都依赖此步骤。

  • 安装软件源管理工具,并启用 Universe 仓库
  • bash

    运行

    sudo apt install software-properties-common -y
    sudo add-apt-repository universe

  • 安装 curl(用于在线拉取源配置包)
  • bash

    运行

    sudo apt update && sudo apt install curl -y

  • 自动获取最新源配置包版本,并下载安装 该脚本会自动匹配当前 Ubuntu 系统代号,下载对应版本的 ros2-apt-source(作用:导入 ROS 软件源密钥、配置 APT 源地址)
  • bash

    运行

    # 获取最新版本号
    export ROS_APT_SOURCE_VERSION=$(curl -s https://api.github.com/repos/ros-infrastructure/ros-apt-source/releases/latest | grep -F "tag_name" | awk -F'"' '{print $4}')

    # 下载 Deb 包到 /tmp 目录
    curl -L -o /tmp/ros2-apt-source.deb "https://github.com/ros-infrastructure/ros-apt-source/releases/download/${ROS_APT_SOURCE_VERSION}/ros2-apt-source_${ROS_APT_SOURCE_VERSION}.$(. /etc/os-release && echo ${UBUNTU_CODENAME:-${VERSION_CODENAME}})_all.deb"

    # 安装源配置包
    sudo dpkg -i /tmp/ros2-apt-source.deb

    说明:后续 ROS 源地址、密钥更新会随该包自动升级,无需手动维护。


    3.1.3 安装开发工具(可选)

    如果后续需要编译源码、开发自定义功能包、使用编译工具链,建议安装;仅运行现成程序可跳过。

    bash

    运行

    sudo apt update && sudo apt install ros-dev-tools -y


    3.2 安装 ROS 2 本体(必选)

    3.2.1 更新软件源并升级系统

    安装前强烈建议更新系统所有软件包,避免版本依赖冲突:

    bash

    运行

    # 更新APT缓存
    sudo apt update
    # 升级系统全部已安装包
    sudo apt upgrade -y

    3.2.2 两种安装版本(二选一)
    方式 1:桌面完整版(推荐,新手 / 开发首选)

    包含 ROS 核心、RViz 可视化工具、仿真、示例程序、教程、GUI 工具,功能最全。

    bash

    运行

    sudo apt install ros-lyrical-desktop -y

    方式 2:基础精简版(纯服务端 / 嵌入式使用)

    仅保留通信库、消息定义、命令行工具,无任何图形界面工具,体积更小,适合机器人下位机、服务器。

    bash

    运行

    sudo apt install ros-lyrical-ros-base -y


    3.3 安装额外 RMW 中间件(可选)

    ROS 2 支持多种通信中间件(RMW),默认使用 Fast DDS。 如需切换为 Zenoh、Cyclone DDS 等其他中间件,可额外安装对应包,安装方法参考官方多中间件使用文档; 仅使用默认 Fast DDS 可直接跳过此步骤。


    3.4 配置环境变量(必选,每次终端生效)

    ROS 2 不会自动配置环境变量,打开新终端都需要执行以下命令,否则无法识别 ros2 命令。

    3.4.1 临时生效(当前终端)

    根据你使用的 Shell 选择对应命令:

  • Bash(Ubuntu 默认终端)
  • bash

    运行

    source /opt/ros/lyrical/setup.bash

  • Zsh
  • bash

    运行

    source /opt/ros/lyrical/setup.zsh

  • 通用兼容格式(sh)
  • bash

    运行

    source /opt/ros/lyrical/setup.sh

    3.4.2 永久生效(推荐,所有终端自动加载)

    以默认 Bash 为例,将环境配置写入用户配置文件:

    bash

    运行

    echo "source /opt/ros/lyrical/setup.bash" >> ~/.bashrc
    # 立即生效
    source ~/.bashrc

    Zsh 用户对应写入 ~/.zshrc 即可。


    3.5 运行示例,验证安装(推荐)

    安装完成后通过官方 talker/listener 示例测试 C++、Python 接口通信是否正常。

    操作步骤
  • 终端 1(运行 C++ 发布节点 talker)
  • bash

    运行

    # 已配置永久环境变量可省略 source
    ros2 run demo_nodes_cpp talker

    正常输出:Publishing: "Hello World: 序号"

  • 新建终端 2(运行 Python 订阅节点 listener)
  • bash

    运行

    ros2 run demo_nodes_py listener

    正常输出:I heard: "Hello World: 序号"

    两端正常收发消息 = ROS 2 安装、通信功能全部正常。

    补充:若使用了其他 RMW 中间件,可参考官方文档切换中间件后重新测试。


    四、后续步骤

    安装验证完成后,可继续学习官方教程:

    • 搭建个人工作空间
    • 创建自定义功能包、消息、节点
    • 学习 ROS 2 核心概念、Launch 启动、参数、服务、动作等功能。

    五、问题排查

    遇到安装报错、命令无法识别、通信异常等问题,可查阅 ROS 2 官方故障排查文档。


    六、卸载 ROS 2(可选操作)

    如需卸载当前二进制版本、切换为源码编译版本,按以下步骤执行:

    6.1 卸载所有 ROS 2 Lyrical 相关包

    bash

    运行

    sudo apt remove '~nros-lyrical-*' -y
    # 清理无用依赖包
    sudo apt autoremove -y

    6.2 卸载 ROS 源配置包(彻底移除 ROS 软件源)

    bash

    运行

    sudo apt remove ros2-apt-source -y
    # 再次更新、清理、升级系统
    sudo apt update
    sudo apt autoremove -y
    sudo apt upgrade -y

    6.3 额外清理(可选)

  • 手动删除临时安装包:
  • bash

    运行

    rm /tmp/ros2-apt-source.deb

  • 编辑 Shell 配置文件,删除手动添加的 source /opt/ros/lyrical/setup.* 行,避免终端报错。

  • ROS 2 Lyrical Luth(代号 Lyrical,2026 年 5 月)完整中文详解

    一、版本概述

    Lyrical Luth 是 ROS 2 的第 12 个正式版本,属于长期支持(LTS)版本,官方维护支持周期至 2031 年 5 月。 本文全面翻译、梳理该版本新增功能、使用示例、命令行、代码用法及底层接口更新。


    二、目录

  • 核心执行器优化(rclcpp)
  • 参数数组范围校验(rclcpp)
  • Python 异步节点 AsyncNode(rclpy)
  • 零拷贝消息发布 rosidl::Buffer
  • YAML 参数文件类型显式标注
  • Launch 文件逐消息日志级别控制
  • Launch 文件新增变量拼接替换器
  • 运行时切换 ROS 日志后端
  • rosbag2 录包远程服务控制
  • Python 程序化控制录包 / 播包
  • 循环录包(限制最大包文件数)
  • 录包拆分文件命名优化
  • rosbag2 消息丢失监控
  • Fish Shell 环境支持
  • 增强 ros2 param 参数命令
  • ros2 doctor 诊断报告升级
  • 服务详情增强 ros2 service info –verbose
  • 多主题带宽统计 ros2 topic bw
  • URDF 机器人描述格式升级
  • 机器人状态发布器功能扩展
  • 通用资源获取服务
  • CMake 构建系统优化
  • 线程名称工具与底层接口更新
  • 插件构造函数传参(class_loader)
  • 运行时追踪(Tracing)功能优化

  • 三、分模块功能详解

    1. 回调组事件执行器(Callback Group Events executor,rclcpp)

    针对执行器性能优化,新增 EventsCBGExecutor 回调组事件执行器,继承原有事件执行器能力,支持多 ROS 时间源 + 多线程。 相比单线程 / 多线程执行器,CPU 占用降低 10%~15%。

    C++ 代码使用示例

    cpp

    运行

    #include <rclcpp/rclcpp.hpp>

    // 自定义节点类
    class MyNode : public rclcpp::Node
    {
    public:
    MyNode() : Node("my_node") {}
    };

    int main(int argc, char ** argv)
    {
    rclcpp::init(argc, argv);
    auto node = std::make_shared<MyNode>();
    // 实例化新的事件回调组执行器
    rclcpp::executors::EventsCBGExecutor executor;
    executor.add_node(node);
    executor.spin();
    rclcpp::shutdown();
    return 0;
    }

    组件节点(Composable Node)使用
  • 命令行启动容器
  • bash

    运行

    ros2 run rclcpp_components component_container –executor-type events-cbg

  • XML Launch 文件配置
  • xml

    <?xml version="1.0" encoding="UTF-8"?>
    <launch>
    <node_container pkg="rclcpp_components" exec="component_container"
    name="my_node_container" namespace="" args="–executor-type events-cbg">
    <!– 在此添加你的组件节点 –>
    </node_container>
    </launch>


    2. 整型 / 浮点数组参数范围校验(rclcpp)

    现在支持对整数数组、浮点数组配置参数范围描述符,自动校验参数上下限、步长,非法参数会直接拦截。

    代码示例(限制整型数组:2~10、步长 2,仅允许偶数)

    cpp

    运行

    rcl_interfaces::msg::ParameterDescriptor descriptor;
    descriptor.integer_range.resize(1);
    auto & integer_range = descriptor.integer_range.at(0);

    integer_range.from_value = 2; // 最小值
    integer_range.to_value = 10; // 最大值
    integer_range.step = 2; // 步长

    // 声明数组参数,并绑定范围校验规则
    node->declare_parameter(
    "my_integer_array",
    std::vector<int64_t>{2, 4, 6, 8, 10},
    descriptor
    );


    3. Python 异步节点 AsyncNode(rclpy)

    新增 AsyncNode 类,原生支持 Python asyncio 异步事件循环,订阅、服务、定时器回调均可使用 await,CPU 开销远低于默认单线程执行器。

    完整代码示例

    python

    运行

    import asyncio
    import rclpy
    from rclpy.experimental import AsyncNode

    class HelloWorldNode(AsyncNode):
    def __init__(self):
    super().__init__('hello_world_node')
    # 创建5秒触发一次的定时器
    self._timer = self.create_timer(5.0, self._cb)

    async def _cb(self):
    self.get_logger().info('Hello')
    # 支持仿真时间的异步休眠
    await self.get_clock().sleep(1.0)
    self.get_logger().info('World!')

    async def _main():
    with rclpy.init():
    await HelloWorldNode().run()

    if __name__ == '__main__':
    asyncio.run(_main())

    支持异步调用服务、异步等待时钟,完美适配高并发异步场景。


    4. 基于 rosidl::Buffer 的零拷贝消息发布

    传统 uint8[] 数组会频繁内存拷贝,新版本将 C++ 中 uint8[] 字段类型替换为 rosidl::Buffer<uint8_t>,实现数据零拷贝收发。

    适用场景
    • 数据存在 GPU / 硬件加速器中,无需反复拷贝内存;
    • 大数据流、图像、点云等高频传输场景。
    说明
  • 当前仅兼容 rmw_fastrtps_cpp 中间件,Zenoh 中间件后续会适配;
  • 可自定义 rosidl::BufferBackend 后端,对接自研硬件 / AI 库。

  • 5. YAML 参数文件显式类型标注

    解决 YAML 自动类型推断错误问题,通过 YAML 标签 强制指定参数类型。

    示例配置

    yaml

    my_node:
    ros__parameters:
    string_param: !!str true # 强制字符串类型
    bool_param: !!bool yes # 强制布尔类型
    int_param: !!int 0 # 强制整型
    float_param: !!float 10 # 强制浮点型
    seq_param: !!seq [10, 0, -10]# 数组类型
    map_param: !!map {str: string, bool: true, int: 10, float: 1.1} # 字典类型


    6. Launch 文件:单条日志独立级别控制

    Launch 脚本支持为单条日志单独设置日志等级,方便调试时过滤日志。

    XML Launch 示例

    xml

    <?xml version="1.0" encoding="UTF-8"?>
    <launch>
    <!– 通用写法:指定级别 –>
    <log level="INFO" message="Hello world! (普通信息日志)" />
    <!– 快捷标签 –>
    <log_debug message="调试日志" />
    <log_info message="普通信息日志" />
    <log_warning message="警告日志" />
    <log_error message="错误日志" />
    </launch>


    7. Launch 文件新增拼接替换器

    XML/YAML Launch 新增两个变量替换器,用于动态拼接字符串、文件路径:

    • $(string-join):字符串拼接
    • $(path-join):路径拼接
    使用示例

    xml

    <?xml version="1.0" encoding="UTF-8"?>
    <launch>
    <!– 字符串拼接 –>
    <log_info message="网址:$(string-join . https://docs ros org)"/>
    <!– 路径拼接 –>
    <log_info message="环境脚本:/$(path-join opt ros lyrical $(string-join . setup bash))"/>
    </launch>


    8. 运行时切换 ROS 日志后端

    以往切换日志库需要重新编译 rcl,现在通过环境变量即可在运行时切换:

    bash

    运行

    # 设置环境变量,指定日志后端
    export RCL_LOGGING_IMPLEMENTATION=rcl_logging_spdlog

    可选值:

  • rcl_logging_spdlog:默认日志后端
  • rcl_logging_noop:空日志(关闭所有日志输出)
  • 自定义日志实现名称

  • 9. rosbag2 录包:远程服务控制

    新增一组 ROS 服务,支持远程启停录包、主题发现、状态查询,无需操作终端。

    常用操作示例

    bash

    运行

    # 1. 正常开始录包
    ros2 bag record –all -o /tmp/my_bag

    # 2. 另一个终端:远程停止录包
    ros2 service call /rosbag2_recorder/stop rosbag2_interfaces/srv/Stop "{}"

    # 3. 远程重新启动录包(新存储路径)
    ros2 service call /rosbag2_recorder/record rosbag2_interfaces/srv/Record "{uri: 'file:///tmp/my_bag_2'}"

    配套服务:启动 / 停止主题发现、查询发现状态。


    10. Python 程序化控制录包 & 播包

    提供 rosbag2_py 原生 Python API,支持代码层面暂停、继续、跳转、步进、等待结束,替代传统阻塞式命令行调用。

    示例 1:Python 控制录包

    python

    运行

    import rclpy
    import rosbag2_py

    with rclpy.init():
    # 存储配置 + 录包配置
    storage_opts = rosbag2_py.StorageOptions(uri='/tmp/my_bag', storage_id='mcap')
    record_opts = rosbag2_py.RecordOptions()
    record_opts.all_topics = True

    recorder = rosbag2_py.Recorder(storage_opts, record_opts)
    recorder.start_spin()
    recorder.record()

    recorder.pause() # 暂停录包
    print(recorder.is_paused())
    recorder.stop() # 停止录包
    recorder.stop_spin()

    示例 2:Python 控制播包

    python

    运行

    import rclpy
    import rosbag2_py

    with rclpy.init():
    storage_opts = rosbag2_py.StorageOptions(uri='/tmp/my_bag', storage_id='mcap')
    play_opts = rosbag2_py.PlayOptions()
    play_opts.start_paused = True # 启动后先暂停

    player = rosbag2_py.Player(storage_opts, play_opts)
    player.start_spin()
    player.play()

    print(player.play_next()) # 单步播放一条消息
    player.resume() # 继续播放
    player.pause()
    player.seek(0) # 跳转到包起始位置
    player.stop()
    player.stop_spin()


    11. 循环录包(限制最大文件数)

    针对磁盘空间有限的机器人场景,新增 –max-bag-files 参数,自动删除最旧的分包文件,实现循环覆盖。

    命令示例

    bash

    运行

    # 单个分包最大 100MB,最多保留 5 个包文件,超出自动删旧文件
    ros2 bag record –all –max-bag-size 100000000 –max-bag-files 5


    12. 录包拆分文件命名规则优化

    分包文件采用自描述、可溯源命名格式: {序号}_{包前缀}_{时间戳}.后缀

    • 序号:分包编号(从 0 开始)
    • 前缀:录包目录名
    • 时间戳:年_月_日-时_分_秒 本地时间
    • 后缀:.mcap/.db3

    便于批量区分、归档历史数据包。


    13. rosbag2 消息丢失监控

    新增消息丢失观测能力,底层统计传输层、录包内部的丢包数据,并通过话题 /events/rosbag2_messages_lost 发布统计信息,提前发现链路异常。

    使用命令

    bash

    运行

    # 录包,并设置统计消息发布频率最大10Hz
    ros2 bag record –all –stats_max_publishing_rate 10 -o /tmp/my_bag

    # 监听丢包事件,无输出则代表无丢包
    ros2 topic echo /events/rosbag2_messages_lost


    14. Fish Shell 环境支持

    正式提供 setup.fish 环境脚本,原生支持 Fish Shell:

    bash

    运行

    source /opt/ros/lyrical/setup.fish

    搭配 colcon-fish 插件可完整支持编译工具链。


    15. 增强 ros2 param 命令

    (1)查询所有节点的同一个参数

    bash

    运行

    # 查看所有节点的 use_sim_time 参数
    ros2 param get use_sim_time

    (2)单节点批量查参数

    bash

    运行

    ros2 param get /robot_state_publisher frame_prefix ignore_timestamp publish_frequency

    (3)单节点批量设参数

    bash

    运行

    ros2 param set /robot_state_publisher frame_prefix foo ignore_timestamp True publish_frequency 10.0


    16. ros2 doctor –report 诊断报告升级

    诊断报告新增三类信息:动作(Action)、服务(Service)、ROS 环境变量,排障、提交问题时可直接使用。

    bash

    运行

    ros2 doctor –report

    输出包含:动作服务数量、服务列表、全量 ROS/rmw/rcutils 环境变量。


    17. 服务详情增强:ros2 service info –verbose

    新增 –verbose 详细模式,输出服务端点、GID、完整 QoS 配置,专门用于排查客户端 / 服务端 QoS 不匹配问题。

    bash

    运行

    ros2 service info –verbose /robot_state_publisher/list_parameters

    同时开放 C++/Python 接口,代码中可获取服务 / 客户端信息:

    python

    运行

    # Python
    node.get_servers_info_by_service('some/service/name')
    node.get_clients_info_by_service('some/service/name')

    cpp

    运行

    // C++
    node->get_servers_info_by_service("some/service/name");
    node->get_clients_info_by_service("some/service/name");


    18. 多主题带宽统计 ros2 topic bw

    支持同时统计多个主题带宽,或全局统计所有主题:

    bash

    运行

    # 统计指定多个主题
    ros2 topic bw /tf /joint_states

    # 统计系统所有主题带宽
    ros2 topic bw –all


    19. URDF 机器人描述格式 1.2 版本升级

    URDF 升级至 version="1.2",新增特性:

  • 原生 ** 四元数(quaternion)** 姿态描述
  • ** 胶囊体(capsule)** 碰撞 / 可视化几何体
  • 关节新增 ** 加速度、减速度、加加速度(jerk)** 限位
  • 示例代码

    xml

    <?xml version="1.0" ?>
    <robot name="capsule_arm" version="1.2">
    <link name="link1">
    <visual>
    <origin xyz="0 0 0.25" quat_xyzw="0 0 0 1"/>
    <geometry>
    <capsule radius="0.1" length="0.5"/>
    </geometry>
    </visual>
    </link>

    <joint name="joint1" type="revolute">
    <origin xyz="0 0 0.5" quat_xyzw="0 0.7071068 0 0.7071068"/>
    <!– 新增加速度、减速度、加加速度限制 –>
    <limit lower="-1.57" upper="1.57" velocity="2.0" acceleration="10.0" deceleration="5.0" jerk="50.0"/>
    </joint>
    </robot>

    备注:RViz 的 Robot Model 插件暂不支持胶囊体显示。


    20. robot_state_publisher 功能扩展

    新增参数 use_robot_description_topic,开启后不再发布 robot_description 话题,而是订阅该话题。 适用场景:机器人模型由外部框架维护,仅让该节点解析 TF 变换,实现模块解耦。


    21. 通用资源获取服务

    原有 RViz 仅能通过网络加载网格模型,新版本推出通用资源检索服务,任意节点都可通过网络远程加载模型、资源文件。 提供 C++ 插件接口,可集成到自定义功能包中。


    22. CMake 构建系统优化

    1. 多次调用 ament_python_install_package

    允许同一个 Python 包多次执行 ament_python_install_package,可将消息接口 + 业务代码放入同一个 Python 包。

    最佳实践:建议消息接口单独分包,降低依赖复杂度。

    2. 新增默认编译目标

    ament_cmake_ros_core::ament_ros_defaults 自动统一 C/C++ 编译标准,无需手动指定版本:

    cmake

    find_package(ament_cmake_ros REQUIRED)
    target_link_libraries(my_library PUBLIC ament_cmake_ros_core::ament_ros_defaults)


    23. 线程工具 & 底层基础库 API

    (1)线程名称工具(rcpputils)

    支持读写线程名,方便 GDB 等调试器定位线程:

    cpp

    运行

    #include <rcpputils/thread_name.hpp>
    #include <iostream>

    int main() {
    rcpputils::set_thread_name("map_thread"); // 设置线程名
    std::cout << rcpputils::get_thread_name() << "\\n"; // 获取线程名
    return 0;
    }

    (2)rcutils 新增接口
  • rcutils_strnlen:跨平台安全字符串长度计算(替代平台特有 strnlen)
  • Base64 编解码:rcutils_encode_base64 / rcutils_decode_base64
  • (3)rcl 核心库新增 API

    面向客户端库开发者,提供底层接口:

    • 生命周期状态转换名称查询
    • 主题内容过滤(CFT)能力检测
    • 动作客户端 / 服务端数量统计
    • 定时器回调数据动态替换
    • 动作目标超时自定义回调

    24. 插件构造函数传参(class_loader)

    支持在加载插件时直接向构造函数传参,不再需要单独的初始化接口。通过模板特化声明构造参数列表:

    cpp

    运行

    #include <class_loader/class_loader.hpp>

    class MyPluginWithConstructor
    {
    public:
    explicit MyPluginWithConstructor(std::string) {}
    virtual ~MyPluginWithConstructor() = default;
    virtual int some_api() = 0;
    };

    // 声明插件构造函数参数类型
    template<>
    struct class_loader::InterfaceTraits<MyPluginWithConstructor>
    {
    using constructor_parameters = class_loader::ConstructorParameters<std::string, std::unique_ptr<int>>;
    };


    25. 运行时追踪(Tracing)优化

    1. 运行时关闭追踪

    无需重新编译,通过环境变量全局禁用追踪工具:

    bash

    运行

    export TRACETOOLS_RUNTIME_DISABLE=1
    ros2 run tracetools status
    # 输出:Tracing disabled

    2. 快照模式追踪(飞行记录仪)

    追踪数据先存入内存缓冲区,仅手动触发快照时才写入磁盘,缓冲区满则丢弃最旧数据。 优势:降低磁盘 IO 开销,仅在故障发生时抓取现场数据。

    3. 双会话追踪

    解决程序启动阶段追踪数据丢失问题:

    • 会话 1:快照模式,常驻内存,记录初始化过程
    • 会话 2:常规模式,记录运行时数据 可随时对初始化会话做快照,完整保留启动日志。
    赞(0)
    未经允许不得转载:171主机测评 » ROS 2 Lyrical Luth启程-Ubuntu26.04-
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址