我开发了一款 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

更多推荐