第2章:ROS2环境搭建与Bag工具安装
说实话,每次带新人入门ROS2,我最怕的就是环境搭建这一步。不是技术难,而是坑太多。我自己当年从ROS1迁移到ROS2时,光装系统就重来了三回。嗯,今天咱们就把这事彻底捋清楚。
2.1 为什么选ROS2 Humble?
你可能要问:ROS2版本那么多,为啥偏偏选Humble?
我个人习惯是选LTS版本。Humble Hawksbill是2022年的LTS版本,支持到2027年。说白了,你花时间学的东西,至少三五年内不会过时。我在项目里见过太多人用rolling版本,结果半年后API大变,代码全废——那叫一个酸爽。
另外,Humble对Ubuntu 22.04的支持最成熟。rosbag2工具包在这个版本上也最稳定。你想想看,数据回放要是出问题,整个复盘流程就断了。
2.2 安装ROS2 Humble
先确认你的系统。我假设你用的是Ubuntu 22.04。如果不是,建议装个虚拟机或者双系统。别用WSL2,我在WSL2上折腾过rosbag2的DDS通信,那体验...嗯,不提也罢。
2.2.1 设置软件源
sudo apt update
sudo apt install curl gnupg lsb-release
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null
这里有个坑:国内网络有时候连不上raw.githubusercontent.com。我曾经在客户现场卡了半小时,最后换了中科大的镜像才搞定。如果你也遇到,可以用这个:
sudo curl -sSL https://mirrors.ustc.edu.cn/ros/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg
echo "deb https://mirrors.ustc.edu.cn/ros2/ubuntu $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null
2.2.2 安装ROS2 Humble桌面版
sudo apt update
sudo apt install ros-humble-desktop
这个包大概1.5GB左右,包含RViz、Gazebo等可视化工具。如果你只是要命令行工具,装ros-humble-ros-base就够了。但我建议你装桌面版——做数据回放时,可视化太重要了。
2.2.3 配置环境变量
echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc
source ~/.bashrc
这里我要多说一句:每次打开新终端都要source一下,很烦对吧?所以我习惯直接写进.bashrc。但注意,如果你同时装了ROS1和ROS2,别把两个source写在一起,会冲突。我见过有人两个都source了,结果ros2命令报错,排查了半天。
2.3 安装rosbag2工具包
rosbag2是ROS2的数据录制与回放工具。说白了,它就是你的「行车记录仪」。自动驾驶路测时,所有传感器数据、控制指令、定位信息,全靠它记录下来。
2.3.1 安装核心包
sudo apt install ros-humble-rosbag2
sudo apt install ros-humble-rosbag2-storage-default-plugins
第一个是主程序,第二个是存储插件。没有插件,你录的bag文件打不开。我曾经犯过这个错——录了一整天路测数据,第二天回放时发现格式不对,差点被项目经理骂死。
2.3.2 安装Python接口(可选但推荐)
sudo apt install ros-humble-rosbag2-py
如果你打算用Python写自动化回放脚本,这个必须装。我后面会讲怎么用Python批量处理bag文件,那效率比手动敲命令高太多了。
2.3.3 安装压缩支持(强烈推荐)
sudo apt install ros-humble-rosbag2-compression
sudo apt install ros-humble-rosbag2-compression-zstd
为什么要装压缩?我告诉你一个真实数据:64线激光雷达+6个摄像头,跑一小时大概产生200GB数据。不压缩的话,你的硬盘撑不过三天。Zstd压缩率大概3:1,200GB能压到70GB左右,而且解压速度极快。
2.4 验证环境
装完了,怎么知道对不对?三步走:
2.4.1 检查ROS2环境
ros2 --version
正常输出:ros2 humble。如果报错,八成是环境变量没配好。检查一下~/.bashrc里有没有source那行。
2.4.2 检查rosbag2命令
ros2 bag --help
能看到一堆子命令说明就对了。如果提示找不到命令,可能是rosbag2没装全。用apt list --installed | grep rosbag2看看。
2.4.3 快速录制与回放测试
我习惯用这个命令快速验证:
# 终端1:启动一个发布节点
ros2 run demo_nodes_cpp talker
# 终端2:录制话题
ros2 bag record /chatter
# 按Ctrl+C停止录制,然后回放
ros2 bag play rosbag2_*.db3
如果终端1能看到回放的消息,说明整个链路通了。这个测试我每次搭建新环境都会跑一遍,花不了两分钟,但能排除90%的问题。
核心知识点总结
- ROS2 Humble是LTS版本,推荐用于自动驾驶项目
- rosbag2包含录制、回放、压缩三大功能模块
- 验证环境三步走:版本检查→命令检查→实际录制回放
我的小技巧
装完环境后,我建议你立刻录一段测试数据。哪怕只是几秒钟的/chatter话题。这样以后出问题时,你有一个「已知能用的基线」可以对比。我在项目里靠这个习惯省了无数排查时间。
注意
不要用sudo来运行ros2 bag命令。rosbag2默认把数据写在当前用户目录下,用sudo会导致文件权限问题。我有个同事因此丢了一周的路测数据——血的教训。
2.5 本章知识体系
下面这张图帮你理清整个环境搭建的逻辑:
这张图把整个流程串起来了:从操作系统到ROS2,再到rosbag2的三个核心模块,最后通过三步验证确认环境可用。我建议你装完后对照这张图检查一遍,确保每个环节都没漏。
好了,环境搭好了,工具也装上了。下一章咱们就真刀真枪地开始录数据——我会教你如何用rosbag2录制多传感器数据,包括激光雷达、摄像头、IMU这些自动驾驶必备的传感器。到时候见。
可可精品资料库