第二章:开发环境搭建与调试
从零搭建ROS2 Foxy/Humble开发环境
说实话,搭建开发环境这件事,看着简单,但坑是真不少。我见过太多新手卡在这一步,一卡就是半天。今天我就把我在几个量产项目里积累的经验,一次性倒给你。
2.1 系统选择与基础配置
先说说系统选择。ROS2 Foxy对应Ubuntu 20.04,Humble对应Ubuntu 22.04。我个人习惯用Humble,毕竟新特性多一些。但如果你要对接一些老项目,Foxy反而更稳。
装好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你根本发现不了。
# 在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 知识体系总览
下面这张图,是我对本章知识体系的总结。你把它存下来,搭建环境时对照着看,基本不会漏东西。
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的头文件目录。
嗯,环境搭建这部分就这些了。你按这个流程走一遍,基本不会出大问题。如果卡住了,回头看看那张知识体系图,定位一下是哪个环节出了问题。