第二章:开发环境搭建与调试

从零搭建ROS2 Foxy/Humble开发环境

说实话,搭建开发环境这件事,看着简单,但坑是真不少。我见过太多新手卡在这一步,一卡就是半天。今天我就把我在几个量产项目里积累的经验,一次性倒给你。

2.1 系统选择与基础配置

先说说系统选择。ROS2 Foxy对应Ubuntu 20.04,Humble对应Ubuntu 22.04。我个人习惯用Humble,毕竟新特性多一些。但如果你要对接一些老项目,Foxy反而更稳。

⚠️ 注意: 千万别在Windows上用WSL2跑ROS2的实时控制。我吃过这个亏——延迟抖动大到离谱,底盘控制直接崩了。

装好Ubuntu后,第一件事是换源。别用官方源,慢得你想砸电脑。我用的是清华源,速度稳定。

# 备份原源
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak

# 替换为清华源(Ubuntu 22.04)
sudo sed -i 's/archive.ubuntu.com/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list
sudo sed -i 's/security.ubuntu.com/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list

sudo apt update && sudo apt upgrade -y

2.2 ROS2安装与验证

安装ROS2其实就几条命令。但我要提醒你——locale设置这一步很多人会跳过去,结果后面编译报一堆乱码错误。

# 设置locale
sudo apt update && sudo apt install locales
sudo locale-gen en_US en_US.UTF-8
sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
export LANG=en_US.UTF-8

# 添加ROS2源
sudo apt install software-properties-common
sudo add-apt-repository universe
sudo apt update && sudo apt install curl -y
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

# 安装Humble桌面版(包含Rviz2)
sudo apt update
sudo apt install ros-humble-desktop -y

装完之后,记得配环境变量。我习惯把它写到.bashrc里,省得每次开终端都要source一遍。

echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc
source ~/.bashrc

验证一下是否装好了:

ros2 run demo_nodes_cpp talker

如果能看到"Hello World"在刷屏,恭喜你,环境通了。

2.3 VS Code配置:让开发效率翻倍

VS Code的配置,说白了就是三个核心:插件、任务、调试。我推荐你必装这几个插件:

插件名 作用 我的评价
ROS ROS2语法高亮、智能提示 必装,没有它写代码像瞎子
C/C++ 代码补全、调试支持 微软官方出品,稳
Python Python开发支持 写launch文件必备
CMake Tools CMake编译集成 配合colcon用,真香
GitLens 代码版本管理可视化 团队协作时特别好用

配置好插件后,我建议你建一个.vscode/tasks.json,把编译命令集成进去。这样按Ctrl+Shift+B就能直接编译,不用切终端。

{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "colcon build",
            "type": "shell",
            "command": "cd ${workspaceFolder} && colcon build --symlink-install",
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "problemMatcher": []
        }
    ]
}

2.4 colcon编译工具:从入门到实战

colcon是ROS2的官方编译工具。说白了,它就是把CMake、setuptools这些底层工具包了一层,让你能一键编译整个工作空间。

先创建工作空间:

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

这里有个坑——第一次编译特别慢,因为要编译所有依赖。我建议你第一次用--symlink-install参数,这样后面改Python文件不用重新编译。

💡 小技巧: 如果你只想编译某个包,用 colcon build --packages-select 你的包名。我平时开发时,90%的时间都在用这个命令,省时间。

还有一个我踩过的坑:编译顺序。colcon会自动分析依赖关系,但如果你改了某个包的接口,一定要重新编译所有依赖它的包。用--packages-up-to可以解决这个问题。

# 只编译my_package及其依赖
colcon build --packages-up-to my_package

2.5 Rviz2可视化调试:让数据说话

Rviz2是ROS2的3D可视化工具。我常说,没有Rviz2,调试就像闭着眼睛开车。

启动Rviz2很简单:

ros2 run rviz2 rviz2

但真正用好它,你得懂几个核心概念:

  • Fixed Frame:全局坐标系,一般设为map或odom
  • Displays面板:添加你要看的数据类型,比如LaserScan、PointCloud2、TF
  • TF树:看各个坐标系之间的变换关系,调试定位问题时必看

我记得有一次,客户说激光雷达的数据在Rviz2里显示位置不对。我一看TF树,发现base_link到laser_frame的变换写反了。这种问题,没有Rviz2你根本发现不了。

🔑 核心配置保存: 调好Rviz2的显示配置后,记得保存为.rviz文件。我习惯把它放在包的config目录下,用launch文件自动加载。
# 在launch文件中加载Rviz2配置
from launch import LaunchDescription
from launch_ros.actions import Node

def generate_launch_description():
    return LaunchDescription([
        Node(
            package='rviz2',
            executable='rviz2',
            name='rviz2',
            arguments=['-d', '/path/to/your/config.rviz']
        )
    ])

2.6 知识体系总览

下面这张图,是我对本章知识体系的总结。你把它存下来,搭建环境时对照着看,基本不会漏东西。

ROS2开发环境搭建知识体系 ROS2开发环境 系统选择与配置 ROS2安装与验证 VS Code配置 colcon编译工具 Rviz2可视化调试 调试技巧与避坑 Ubuntu 20.04/22.04 换源与基础配置 Foxy vs Humble 环境变量配置 插件与tasks.json colcon build命令 依赖管理技巧 Displays与TF树 配置保存与加载 常见错误与解决

2.7 避坑指南:我踩过的那些坑

最后,分享几个我实际项目中遇到的坑,你遇到了可以直接抄答案:

  • Python依赖冲突:ROS2自带的Python包和系统pip安装的包可能冲突。我建议用rosdep安装依赖,别自己pip install。
  • Rviz2闪退:通常是显卡驱动问题。检查一下glxinfo | grep "OpenGL",如果显示的是llvmpipe,说明没装独立显卡驱动。
  • colcon编译报错"找不到包":八成是忘了source工作空间。每次开新终端,记得source install/setup.bash。
  • VS Code智能提示不生效:检查.vscode/c_cpp_properties.json里的includePath有没有指向ROS2的头文件目录。

嗯,环境搭建这部分就这些了。你按这个流程走一遍,基本不会出大问题。如果卡住了,回头看看那张知识体系图,定位一下是哪个环节出了问题。

可可精品资料库