您正在阅读的是开发版本的文档。有关最新发布的版本,请访问 Jazzy.
集成开发环境和调试 [社区贡献]
ROS 2 并非围绕特定的开发环境而设计,其主要重点是通过命令行构建/运行。集成开发环境(IDE)可用于开发、运行和/或调试 ROS 2 节点。
下面列出了一些集成开发环境以及如何在 ROS 2 中使用它们的说明。
一般情况
已安装的 Python 代码
默认情况下,当使用
胶管 构建
Python 代码将被复制到 构建
/安装
目录。因此,当将调试器附加到 玫瑰2 运行
在集成开发环境中运行的代码(从 构建
/安装
与 IDE 项目中打开的文件不同。
有两种方法可以解决这个问题:
打开源文件
构建
/安装
目录,并在其中设置断点。使用 -symlink-install安装 标志,它将把源文件链接到
构建
/安装
目录。
Visual Studio 代码
VSCode 是一个多功能的免费开发环境。
VSCode 在 ROS 2 中的使用相对简单,只需在命令行中激活环境,然后在同一终端启动 VSCode 应用程序并正常使用即可。那么
像平常一样创建 ROS 工作区。
在终端中,同时为 ROS 2 和你的安装(如果已经构建)提供源代码。
从同一命令行启动 VSCode。终端将被封锁,直到应用程序再次关闭。
消息来源 /opt/ros/rolling/setup.bash
CD ~/dev_ws
消息来源 ./install/setup.bash /usr/bin/code ./src/my_node/
.~/ros2_install/ros2-osx/setup.bash
cd ~/dev_ws
../install/setup.bash
/Applications/Visual Studio Code.app/Contents/Resources/app/bin/code ./src/my_node/
# 对于 CMD:
调用 C:\dev\ros2\local_setup.bat
cd C:\dev_ws
调用 .\install\local_setup.bat
C:/Program Files\Microsoft VS Code\Code.exe" .\src\my_node\
# 对于 PowerShell
C:\dev\ros2\local_setup.ps1
cd C:\dev_ws
.install\local_setup.ps1
&"C:/Program Files\Microsoft VS Code\Code.exe" .\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 似乎没有任何效果。相反,一些设置需要调整。
像平常一样创建 ROS 工作区。
正常启动 PyCharm。
打开一个项目。这应该是您正在开发的 ROS 节点的根目录,例如
C:/dev_ws\src\my_node
.点击 "添加新解释器"> "添加本地解释器..."。选择一个系统解释器(或虚拟环境,如果正在使用),然后选择 ROS Python 版本的可执行文件(通常为
C:\Python38\python.exe
).如果现在打开其中一个代码文件,就会看到关于导入缺失的警告。尝试运行文件将确认这些问题。
在 "Python 解释器 "窗口下,找到并选择 ROS 解释器。编辑名称,使其易于辨认。更重要的是,现在点击 "显示解释器路径 "按钮。
在新窗口中,你会看到已经与该解释器关联的路径。点击 "+"按钮,再添加两个路径(根据 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"(全小写)才有效。