第3章 安装与配置:ROS2 TF2软件包安装与工作空间配置

好,咱们正式开始动手。前两章聊了TF是什么、能干什么,现在该把轮子装上车了。这一章我带你一步步把ROS2 TF2相关的软件包装好,再把工作空间搭起来。别小看这一步——我见过太多人卡在环境上,代码写好了却跑不起来,最后发现是包没装全。

ROS2 基础环境 Ubuntu + ROS2 Humble TF2 软件包 tf2 / tf2_ros / tf2_tools 工作空间 colcon 构建 & 测试 安装与配置三步走:环境 → 包 → 工作空间 每一步都验证,避免后期返工

3.1 确认你的ROS2版本

在装任何东西之前,先看看你系统里ROS2是什么版本。我个人习惯用 ros2 --version 或者 printenv ROS_DISTRO 来确认。如果你用的是Ubuntu 22.04,大概率装的是Humble Hawksbill。我建议你统一用Humble,因为后面MoveIt2对Humble支持最稳。

# 检查ROS2版本
ros2 --version
# 或者
printenv ROS_DISTRO

如果输出是 humble,那就对了。要是你还在用Foxy或者Galactic,嗯……也不是不行,但有些包名和API有小差异。我踩过这个坑——明明代码逻辑没问题,编译报错说找不到某个头文件,最后发现是版本对应的包名不一样。

3.2 安装TF2核心软件包

ROS2的TF2包拆得比较细,但别慌,核心就三个:tf2、tf2_ros、tf2_tools。用apt一键安装就行。

sudo apt update
sudo apt install ros-humble-tf2 ros-humble-tf2-ros ros-humble-tf2-tools

装完之后,我建议你顺手把 tf2-geometry-msgs 和 tf2-eigen 也装上。虽然不强制,但后面做坐标变换时你会感谢我的。

💡 我的小习惯: 每次装完包,我都会跑一下 ros2 pkg list | grep tf2 看看是不是都注册上了。别笑,有一次我apt install没加sudo,包没装进去,查了半天才发现。

3.3 创建工作空间

工作空间是ROS2项目的家。我习惯用 ros2_ws 这个名字,简单明了。你想想看,以后项目多了,每个工作空间名字都不同,自己都记不住。

mkdir -p ~/ros2_ws/src
cd ~/ros2_ws
colcon build

第一次build可能会有点慢,因为要编译一些基础依赖。build完成后,别忘了source环境:

source ~/ros2_ws/install/setup.bash

为了以后不用每次都手动source,我建议你把它加到 ~/.bashrc 里:

echo "source ~/ros2_ws/install/setup.bash" >> ~/.bashrc
source ~/.bashrc
⚠️ 我曾经踩过的坑: 如果你同时有多个工作空间,source顺序很重要。后source的会覆盖前面的。我曾经把两个工作空间的包搞混了,编译一直报重复定义。后来我统一只source一个主工作空间,其他用 COLCON_PREFIX_PATH 来管理。

3.4 验证安装是否成功

装完别急着写代码,先跑个简单的验证。打开终端,运行:

ros2 run tf2_tools view_frames.py

如果提示找不到命令,说明包没装对。正常情况下,它会生成一个 frames.pdf 文件,虽然现在TF树上啥也没有,但至少证明工具链通了。

你也可以用Python快速测试一下:

python3 -c "import tf2_ros; print('tf2_ros imported successfully')"

如果没报错,恭喜你,环境搭好了。

3.5 安装MoveIt2(可选但推荐)

咱们这门课后面要结合MoveIt,所以提前把MoveIt2也装上。虽然本章不深入,但先装好省得后面手忙脚乱。

sudo apt install ros-humble-moveit

这个包比较大,包含运动学、规划器、碰撞检测等一堆东西。安装时间可能有点长,去泡杯咖啡吧。

📌 重点: MoveIt2依赖TF2,所以先装TF2再装MoveIt2,顺序别搞反。我遇到过有人先装MoveIt2,结果依赖解析失败,最后还得回头补TF2的包。

3.6 常见问题与避坑

问题 原因 解决办法
colcon build 找不到包 没有source ROS2环境 先 source /opt/ros/humble/setup.bash
ros2 run tf2_tools 报错 包没装全或没source 检查 ros2 pkg list | grep tf2
Python import 失败 Python环境不对 确认使用的是系统Python3,不是conda虚拟环境
工作空间build后找不到自己的包 没有source install/setup.bash 重新source,或者检查 COLCON_PREFIX_PATH
🔧 我的调试习惯: 每次build完,我都会用 echo $AMENT_PREFIX_PATH 看看当前环境有没有包含我的工作空间路径。如果没有,八成是source没生效。

好了,到这一步,你的ROS2 TF2环境就彻底准备好了。但别急,先把今天装的东西玩熟,尤其是 view_frames.py 和 colcon build 的流程。基础打牢了,后面写代码才顺手。