第二章:环境搭建与工具链

说实话,做感知融合调试,最怕的不是算法难,而是环境配不好。

我见过太多同事,花了两周搭环境,最后发现版本对不上,心态直接崩了。所以这一章,咱们先把地基打牢。

2.1 ROS2 基础:从“通信”说起

ROS2 说白了,就是一个让传感器、算法模块、执行器之间“说话”的框架。

我个人习惯用 Humble 版本,稳定,坑少。你想想看,如果每个节点都自己写一套通信协议,那项目根本没法维护。

2.1.1 核心概念

  • 节点(Node):每个功能模块就是一个节点。比如激光雷达驱动是一个节点,点云处理是另一个。
  • 话题(Topic):节点之间发布/订阅的数据通道。比如 /lidar_points 就是点云话题。
  • 服务(Service):一问一答的模式,适合请求配置参数。
  • 动作(Action):带反馈的长时间任务,比如规划路径。

避坑指南:我曾经在项目里把话题名写错了一个字母,结果调试了整整一下午。建议你从一开始就用规范的命名空间,比如 /sensor/lidar/points。

2.1.2 常用命令

这些命令我几乎每天都要敲,你最好记在脑子里:

# 查看所有话题
ros2 topic list

# 查看话题频率
ros2 topic hz /感知话题

# 查看话题内容
ros2 topic echo /感知话题

# 运行一个节点
ros2 run 包名 节点名

2.2 Docker 环境配置:再也不用“在我电脑上能跑”

Docker 这东西,说白了就是给你的代码一个“标准宿舍”。不管换到哪台机器,环境都一样。

我记得刚入行时,最怕听到“在我电脑上能跑啊”。后来用了 Docker,这种扯皮的事少了一大半。

2.2.1 我的 Dockerfile 模板

这是我个人习惯用的基础配置,适合感知融合开发:

FROM ros:humble-ros-base-focal

# 安装依赖
RUN apt-get update && apt-get install -y \
    python3-pip \
    ros-humble-rviz2 \
    ros-humble-rosbag2 \
    && rm -rf /var/lib/apt/lists/*

# 设置工作空间
WORKDIR /workspace
COPY . .

# 编译
RUN colcon build

小技巧:我建议你在 Dockerfile 里把 apt 源换成国内镜像,不然下载能等到你怀疑人生。

2.2.2 常用 Docker 命令

命令 作用
docker build -t 镜像名 . 构建镜像
docker run -it 镜像名 启动容器
docker ps -a 查看所有容器
docker exec -it 容器ID bash 进入运行中的容器

2.3 Rviz 可视化:让数据“看得见”

做感知融合,如果只盯着终端看数字,那效率太低了。Rviz 就是你的“眼睛”。

我调试时,一定会同时打开 Rviz。看到点云和检测框叠在一起,心里才踏实。

2.3.1 基本配置

  • 添加 PointCloud2 显示激光雷达点云
  • 添加 MarkerArray 显示检测框
  • 添加 Image 显示相机画面
  • 设置 Fixed Frame 为 base_link 或 map

注意:我曾经因为 Fixed Frame 设错了,点云和图像怎么都对不上。后来发现是坐标系没统一。记住,所有数据必须在同一个坐标系下才能融合。

2.3.2 保存配置

每次调好 Rviz 界面,记得保存配置:

# 保存当前配置
File -> Save Config As -> 感知调试.rviz

# 下次直接加载
ros2 run rviz2 rviz2 -d 感知调试.rviz

2.4 Bag 包录制与回放:把路测数据“带回家”

路测一次不容易,数据必须录下来。Bag 包就是 ROS2 的“录像机”。

我习惯在路测时同时录三个 Bag:原始数据、预处理后数据、融合结果。这样回去可以反复对比。

2.4.1 录制 Bag

# 录制所有话题
ros2 bag record -a -o 路测_2024_01_15

# 只录制感知相关话题
ros2 bag record /lidar/points /camera/image /感知/融合结果 -o 感知数据

2.4.2 回放 Bag

# 回放数据
ros2 bag play 路测_2024_01_15

# 指定回放速度(0.5倍速调试)
ros2 bag play 路测_2024_01_15 --rate 0.5

我的经验:调试时用 0.5 倍速回放,能看清每个检测框的生成过程。我曾经用这个方法找到了一个漏检的 bug——原来是某个帧的 timestamp 跳变了。

2.5 本章知识体系

下面这张图,是我自己总结的环境搭建流程。你照着走,基本不会出错:

感知融合调试环境搭建流程 ROS2 基础 Docker 环境 依赖安装 Rviz 可视化 Bag 录制 Bag 回放 感知融合调试与排障

嗯,这套流程我用了三年,基本没出过岔子。你按这个顺序来,环境搭建这一步就算稳了。

最后提醒一句:别急着跑算法,先把工具链玩熟。工具顺手了,调试才能快。

可可精品资料库