3、ROS2开发环境配置:VS Code + ROS2插件、colcon构建工具、工作空间创建、功能包创建与编译
说实话,配置开发环境这件事,很多新手觉得枯燥。但我得说一句——环境配好了,后面能省下一半的调试时间。我自己带过不少实习生,十有八九的问题都出在环境没搭对。今天咱们就把这事一次性搞定。
3.1 为什么选VS Code?
你可能用过Vim、Eclipse或者CLion。我个人习惯用VS Code,原因很简单:轻量、插件生态好、对ROS2支持到位。你想想看,一个编辑器能直接帮你补全话题名、检查CMakeLists语法、高亮URDF文件——这多省心。
我刚开始从ROS1转到ROS2时,试过好几款IDE。VS Code配合微软官方的C++扩展,再加上几个ROS专用插件,基本就是目前最顺手的组合了。
3.2 VS Code安装与ROS2插件配置
安装VS Code这一步我就不啰嗦了,去官网下载就行。重点说说插件。
打开VS Code,按 Ctrl+Shift+X 进入扩展市场,搜索并安装以下几个:
| 插件名称 | 作用 | 推荐指数 |
|---|---|---|
| ROS | ROS2核心支持,话题补全、节点跳转 | ⭐⭐⭐⭐⭐ |
| C/C++ | 微软官方,代码补全、调试 | ⭐⭐⭐⭐⭐ |
| Python | Python语法支持,写launch文件必备 | ⭐⭐⭐⭐ |
| CMake Tools | CMake语法高亮、构建配置 | ⭐⭐⭐⭐ |
| URDF | 机器人模型文件预览 | ⭐⭐⭐ |
Ctrl+Shift+P 输入 "ROS: Set ROS Distro",选择你装的版本(比如 humble)。这样插件才知道你用的是哪个ROS2版本。
嗯,这里要注意——ROS插件依赖Python环境。如果你用的是Ubuntu 22.04,系统自带的Python3就够了。但我遇到过一个问题:虚拟环境搞乱了,导致插件找不到ros2命令。解决办法很简单,确认终端里能跑 ros2 --version,插件就能正常工作。
3.3 colcon构建工具
ROS1时代我们用catkin_make,ROS2换成了colcon。说白了,colcon就是catkin_make的升级版——支持并行编译、增量编译、多语言混编。
安装colcon就一行命令:
sudo apt install python3-colcon-common-extensions
装完之后,你可以试试:
colcon --help
看到一堆子命令就对了。常用的就这几个:
colcon build—— 编译所有包colcon build --packages-select 包名—— 只编译某个包colcon build --symlink-install—— 符号链接模式,改Python代码不用重新编译
--symlink-install。这样你改Python文件后,直接运行就能看到效果,不用反复编译。C++代码改了还是得重新编译,但Python省事多了。
3.4 创建工作空间
工作空间,说白了就是放ROS2项目的文件夹。我一般叫它 ros2_ws。
创建流程如下:
mkdir -p ~/ros2_ws/src
cd ~/ros2_ws
colcon build
第一次编译会生成三个文件夹:
- build —— 编译中间文件,不用管
- install —— 编译产物,相当于安装目录
- log —— 编译日志,出错了来这里查
编译完成后,记得source一下:
source ~/ros2_ws/install/setup.bash
我建议你把这句话加到 ~/.bashrc 里,省得每次开终端都要手动敲。用 echo 'source ~/ros2_ws/install/setup.bash' >> ~/.bashrc 就行。
ros2_ws 目录下又建了一个 ros2_ws。结果编译时colcon递归查找,把整个系统搞乱了。记住:工作空间不要嵌套。
3.5 创建功能包
功能包是ROS2的基本单元。一个包可以包含节点、消息定义、配置文件等。创建命令如下:
cd ~/ros2_ws/src
ros2 pkg create my_first_pkg \
--build-type ament_cmake \
--dependencies rclcpp std_msgs
参数说明:
--build-type:指定构建类型,C++用ament_cmake,Python用ament_python--dependencies:依赖的包,多个用空格隔开
创建完成后,你会看到这样的目录结构:
my_first_pkg/
├── CMakeLists.txt
├── package.xml
├── include/
│ └── my_first_pkg/
└── src/
如果你创建的是Python包:
ros2 pkg create my_py_pkg \
--build-type ament_python \
--dependencies rclpy std_msgs
Python包的目录结构略有不同:
my_py_pkg/
├── package.xml
├── setup.py
├── setup.cfg
├── resource/
└── my_py_pkg/
└── __init__.py
3.6 编译功能包
包创建好了,得编译一下验证有没有问题。回到工作空间根目录:
cd ~/ros2_ws
colcon build --packages-select my_first_pkg
如果看到 Summary: 1 package finished,说明编译成功。如果有红色报错,别慌——多半是依赖没装全。
举个例子,如果你在 package.xml 里写了依赖 sensor_msgs 但没装,编译就会报错。解决办法:
sudo apt install ros-humble-sensor-msgs
嗯,这里有个小坑——ROS2的包名和apt里的包名不完全一样。比如 rclcpp 在apt里叫 ros-humble-rclcpp。如果你不确定,可以用 apt search ros-humble- 来查。
3.7 知识体系总览
下面这张图帮你理清今天讲的内容:
3.8 验证环境是否配好
最后,咱们快速验证一下。打开VS Code,新建一个终端(Ctrl+`),依次执行:
ros2 pkg list | grep my_first_pkg
colbuild --packages-select my_first_pkg
如果能看到你的包名,编译也通过了——恭喜,环境配好了!
colcon build --symlink-install 设置成一个VS Code任务。按 Ctrl+Shift+B 就能一键编译,省得每次敲命令。具体做法:在 .vscode/tasks.json 里配置一下,网上有现成的模板。
好了,环境配置这块就到这。记住一句话:环境配得越仔细,后面写代码越顺手。别嫌麻烦,磨刀不误砍柴工。