还在手敲 source + ros2 launch/run?我写的VS Code 插件帮你搞定
我开发了一款 VS Code 插件,让 ROS2 启动效率提升了不少
最近在学习开发 ROS2 项目的过程中,一般人都是使用vscode进行编写代码,我越来越觉得一件事情很烦:
启动节点的步骤太多了。
每次想运行一个节点或者一个 Launch 文件,都要重复下面这些操作:
source ~/xxx_ws/install/setup.bash
ros2 launch package_name xxx.launch.py
或者:
source ~/xxx_ws/install/setup.bash
ros2 run package_name node_name
如果项目里有多个工作空间,情况会更麻烦。
比如这里我网上下的项目,每一章里面都有对应的工作空间,难道我在bashrc中把所有东西都先source一下嘛,显然不合适,而且有些你还没有学到,你肯定不会去colcon build。

有时候打开一个新的终端,还得先确认:
- 当前文件属于哪个工作空间,我得先在对应的工作空间目录下
- 对应包名是什么?
- 是否已经编译?
- source 的是不是正确环境?
虽然这些操作并不复杂,但每天重复几十次以后,确实会让人感到机械和低效。
于是我花了一点时间,开发了一个 VS Code 插件:
ROS2 Quick Runner
目标只有一个:
让 ROS2 项目中的 Launch 和 Node 能够像运行普通 Python 程序一样简单。

为什么会有这个插件
ROS2 开发者都有类似习惯:
打开 VS Code,右键一个 Python 文件,然后:
不能直接运行。
因为 ROS2 节点并不是简单执行:
python xxx.py
而是:
ros2 run package_name node_name
Launch 文件也是如此:
ros2 launch package_name launch.py
这就意味着:
VS Code 必须知道:
- 工作空间在哪里
- 当前包叫什么名字
- 节点名称是什么
- 是否已经 source 环境
而这些信息通常分散在工程目录中。
因此我想到:
能不能让 VS Code 自动完成这些工作?
答案是:可以。
于是便有了 ROS2 Quick Runner。
插件能做什么
目前插件主要提供三个功能。
1. 一键启动 Launch 文件
当你右键一个:
bringup.launch.py
选择:
ROS2: Launch
插件会自动:
- 查找当前 ROS2 工作空间
- source install/setup.bash
- 获取包名
- 执行 ros2 launch
最终效果相当于:
source ~/ros2_ws/install/setup.bash
ros2 launch my_robot bringup.launch.py
整个过程无需手动输入命令。

2. 一键运行 ROS2 节点
对于:
talker.py
或者:
controller.cpp
右键后选择:
ROS2: Run
插件自动完成:
- 查找 Workspace
- 解析 package.xml
- 获取包名
- source 环境
- 执行 ros2 run
例如:
ros2 run my_robot talker
无需切换终端。无需记忆包名。无需手动 source。

3. 获取当前工作空间
这个功能最初是我调试插件时写的。
后来发现还挺实用。
右键任意文件:
Get ROS2 Workspace Name
插件会:
- 显示当前工作空间名称
- 自动打开新终端
- source 对应环境
对于多个 Workspace 并行开发的人来说比较方便。
它是如何工作的
实现逻辑其实并不复杂。
核心分为三步。
第一步:查找 Workspace
插件会向上递归查找目录。
当发现同时存在:
src/
install/
目录时,
认为当前目录是一个 ROS2 Workspace。
例如:
ros2_ws/
├── src
├── install
├── build
└── log
第二步:获取包名
找到 Workspace 后,
插件继续查找:
package.xml
解析其中:
<name>my_robot</name>
获取 ROS2 包名。
第三步:生成运行命令
最终自动拼接命令:
source install/setup.bash
ros2 launch ...
或者:
ros2 run ...
并在 VS Code Terminal 中执行。
当前版本存在的限制
目前插件要求install/目录存在。
也就是说,必须先执行:
colcon build
完成编译。
因为插件需要依赖安装后的环境信息来确定包关系。
所以对于纯源码状态的 Workspace:
src/
没有编译的情况,暂时无法正常工作。
后续计划
目前插件已经完成基本功能。没有啥后续计划,对了我ros1的也有这样的vscode扩展,叫做ros-quick-runner,如果你们需要啥支持,可以和我说。
写在最后
这个插件本质上不是一个复杂项目。只是解决了我在开发过程中经常遇到的小问题:
把每天重复几十次的命令执行过程自动化。
如果这些小操作累计起来能节省你每天几分钟时间,那么长期来看也是非常有价值的。
如果你也经常使用 VS Code 开发 ROS2 项目,希望这个插件能够帮到你。
欢迎大家体验并提出建议,一起把它做得更好。
项目地址:
https://github.com/Knighthood2001/vscode-ros2-quick-runner

更多推荐




所有评论(0)