集成开发环境和调试 [社区贡献]

ROS 2 并非围绕特定的开发环境而设计,其主要重点是通过命令行构建/运行。集成开发环境(IDE)可用于开发、运行和/或调试 ROS 2 节点。

下面列出了一些集成开发环境以及如何在 ROS 2 中使用它们的说明。

一般情况

已安装的 Python 代码

默认情况下,当使用

胶管 构建

Python 代码将被复制到 构建/安装 目录。因此,当将调试器附加到 玫瑰2 运行 在集成开发环境中运行的代码(从 构建/安装与 IDE 项目中打开的文件不同。

有两种方法可以解决这个问题:

  • 打开源文件 构建/安装 目录,并在其中设置断点。

  • 使用 -symlink-install安装 标志,它将把源文件链接到 构建/安装 目录。

Visual Studio 代码

VSCode 是一个多功能的免费开发环境。

VSCode 在 ROS 2 中的使用相对简单,只需在命令行中激活环境,然后在同一终端启动 VSCode 应用程序并正常使用即可。那么

  1. 像平常一样创建 ROS 工作区。

  2. 在终端中,同时为 ROS 2 和你的安装(如果已经构建)提供源代码。

  3. 从同一命令行启动 VSCode。终端将被封锁,直到应用程序再次关闭。

消息来源 /opt/ros/jazzy/setup.bash
CD ~/dev_ws
消息来源 ./install/setup.bash /usr/bin/code ./src/my_node/

VSCode 和在 VSCode 内创建的任何终端都将正确继承父环境,并应具有 ROS 和已安装的可用软件包。

备注

在添加软件包或进行重大修改后,您可能需要重新获取安装源代码。最简单的方法是关闭 VSCode,然后按上述方法重新启动。

Python

在工作区中,确认使用的解释器是否正确。通过查找基本命令 蟒蛇 应该是正确的,但 VSCode 喜欢使用 Python 的绝对路径。点击右下角的 "Selected Python Interpreter(所选 Python 解释器)"即可更改。

如果你的 ROS 2 Python 版本来自虚拟环境,VSCode 会在每次运行命令时尝试将其源化。但我们已经从源代码环境启动了 VSCode,所以这个额外的步骤就没有必要了。你可以找到 "Settings(设置)"> "Extensions(扩展)"> "Python"> "Activate Environment(激活环境)"并禁用该检查,从而在当前工作区禁用该功能。

现在只需运行文件或在 launch.json.调试节点最简单的方法是创建一个类似于 蟒蛇 ... 命令,而不是 玫瑰2 运行/启动 ....举例说明 launch.json 可以是

{
    版本";: "0.2.0";,
    "配置";: [
        {
            "名称";: "Python:文件";,
            "类型";: python";,
            请求";: "launch";,
            "程序";: "my_node.py";
        },
    ]
}

您也可以在 "使用进程 ID 附加 "下创建一个配置,用于附加到运行中的进程。

参见 使用 VSCode 和 Docker 设置 ROS 2 了解如何结合 Docker 使用 VSCode 的完整说明。

PyCharm

PyCharm 是一个专门用于 Python 的集成开发环境。

当然,它只能用于用 Python 制作的节点。

使用 PyCharm,您可以附加到现有进程(可能是由您通过 玫瑰2 运行 ...玫瑰2 启动 ...) 或直接从 Python 运行节点(相当于 蟒蛇 [file.py].

集成代码检查

您可以对 PyCharm 项目进行设置,使其完全了解 ROS 2 代码,允许完成代码并提出建议。

利纳克斯

打开终端、ROS 源代码并启动 PyCharm:

消息来源 /opt/ros/humble/setup.bash
CD path/to/dev_ws /opt/pycharm/bin/pycharm.sh

选择正确的解释器后,一切都应该可以正常工作。

备注

这是未经测试的。

视窗

在 Windows 系统上,首先将 ROS 源化,然后从命令行启动 PyCharm 似乎没有任何效果。相反,一些设置需要调整。

  1. 像平常一样创建 ROS 工作区。

  2. 正常启动 PyCharm。

  3. 打开一个项目。这应该是您正在开发的 ROS 节点的根目录,例如 C:/dev_ws\src\my_node.

  4. 点击 "添加新解释器"> "添加本地解释器..."。选择一个系统解释器(或虚拟环境,如果正在使用),然后选择 ROS Python 版本的可执行文件(通常为 C:\Python38\python.exe).

    • 如果现在打开其中一个代码文件,就会看到关于导入缺失的警告。尝试运行文件将确认这些问题。

  5. 在 "Python 解释器 "窗口下,找到并选择 ROS 解释器。编辑名称,使其易于辨认。更重要的是,现在点击 "显示解释器路径 "按钮。

  6. 在新窗口中,你会看到已经与该解释器关联的路径。点击 "+"按钮,再添加两个路径(根据 ROS 安装情况):

    • C:\dev\ros2_humble\bin

    • C:\dev\ros2_humble\Lib\site-packages

PyCharm 将重新索引,完成后它将正确解释你的项目,并识别 ROS 2 系统包。您可以浏览代码、获取完成信息并阅读文档简介。

如果有依赖项与软件包一起构建,它们很可能尚未被识别,并导致无效的 IDE 警告和运行时错误。

解决的办法是

  • 确保 路径 运行/调试配置中的覆盖包括 ROS 2 安装和您的工作区,例如

    C:\dev\ros2_humble\local_setup.ps1 C.\dev_ws\i安装\local_setup.ps1
    回响 $ENV:路径
    
  • 安装/ 目录下的项目源代码。

    转到 "设置...",在 "项目:"项目结构 "下点击 "添加内容根目录"。添加所有相关 网站包 下的文件夹 install/Lib/*.

    最后,确保运行/调试配置中启用了 "include content roots in PYTHONPATH "选项。

提示

使用 -合并安装 选项将限制依赖目录的数量,从而更容易配置 PyCharm。

附加到流程

即使不对 PyCharm 进行任何配置,你也可以随时附加到一个正在运行的 Python 节点上。打开项目源代码,像往常一样运行节点即可:

玫瑰2 运行 我的节点 主要

然后在 PyCharm 中选择 "Run(运行)"> "Attach to Process...(连接到进程)"。可能会花上一秒钟,但会有一个小窗口列出当前运行的 Python 实例,包括你的节点。可能会有多个 Python 进程,因此可能需要反复试验才能找到正确的进程。

选择实例后,即可使用常用的调试工具。你可以暂停调试,或在代码中创建断点并逐步完成调试。

备注

项目中的代码可能不是被执行的文件,请参阅 .

运行/调试

首先按照集成步骤进行操作。

从 PyCharm 运行您的 Python 文件可能会导致导入错误。这是因为 PyCharm 扩展了 飞龙之路 环境变量,但会使 路径 未动。必要的库文件在 ros/bin 未找到。

编辑文件的运行/调试配置,在 "环境变量:"下添加一个新变量。目前不支持扩展现有的 路径因此我们需要覆盖它。从 ROS 源终端导出 路径 用: 回响 $Env:PATH.复制结果。

返回 PyCharm,将其粘贴为 路径,应用更改并运行或调试节点。它现在应该可以像任何 Python 项目一样工作,可以轻松添加断点和其他调试方法。

备注

在 Windows 系统中,似乎 路径 环境变量:"下的变量必须是 "path"(全小写)才有效。