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 机器人模型文件预览 ⭐⭐⭐
小技巧:安装完ROS插件后,按 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 知识体系总览

下面这张图帮你理清今天讲的内容:

ROS2开发环境配置全流程 VS Code + ROS2插件 colcon构建工具 工作空间(ros2_ws) 安装插件 + 配置ROS2 colcon build / --symlink mkdir src → colcon build 代码补全 / 话题提示 build / install / log 功能包目录结构 ✅ 开发环境就绪,可以写代码了

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 里配置一下,网上有现成的模板。

好了,环境配置这块就到这。记住一句话:环境配得越仔细,后面写代码越顺手。别嫌麻烦,磨刀不误砍柴工。

可可精品资料库