Windows(来源)

本指南介绍如何在 Windows 上设置 ROS 2 的开发环境。

系统要求

仅支持 Windows 10。

语言支持

确保您的语言环境支持“UTF-8”。

例如,对于中文 Windows 10 安装,您可能需要安装“英语语言包<https://support.microsoft.com/en-us/windows/language-packs-for-windows-a5094319-a92d-18de-5b53-1cfc697cfca8>” 。

安装先决条件

安装 Chocolatey

Chocolatey 是 Windows 的软件包管理器,请按照其安装说明进行安装:

https://chocolatey.org/install

您将使用 Chocolatey 安装一些其他开发工具。

安装 Python

打开命令提示符并输入以下内容通过 Chocolatey 安装 Python:

choco install -y python --version 3.8.3

Note

Chocolatey 将在“C:Python38”中安装 Python,其余安装也要求它在那里。 如果您已在其他地方安装了 Python,则必须将其复制或链接到该位置。

安装 Visual C++ 可再发行组件

打开命令提示符并输入以下内容通过 Chocolatey 安装它们:

choco install -y vcredist2013 vcredist140

安装 OpenSSL

打开命令提示符并输入以下内容通过 Chocolatey 安装 OpenSSL:

choco install -y openssl --version 1.1.1.2100

此命令设置一个在会话中持续存在的环境变量:

setx /m OPENSSL_CONF "C:\Program Files\OpenSSL-Win64\bin\openssl.cfg"

您需要将 OpenSSL-Win64 bin 文件夹附加到您的 PATH。 您可以通过单击 Windows 图标、输入“环境变量”,然后单击“编辑系统环境变量”来执行此操作。 在出现的对话框中,单击“环境变量”,然后单击底部窗格上的“路径”,最后单击“编辑”并添加下面的路径。

  • C:\Program Files\OpenSSL-Win64\bin\

安装 Visual Studio

安装 Visual Studio 2019。

如果您已经拥有 Visual Studio 2019(专业版、企业版)的付费版本,请跳过此步骤。

微软提供了Visual Studio 2019的免费版本,名为Community,可用于构建使用ROS 2的应用程序。 You can download the installer directly through this link.

确保已安装 Visual C++ 功能。

确保已安装这些功能的简单方法是在安装过程中选择“使用 C++ 进行桌面开发”工作流程。

../../_images/windows-vs-studio-install.png

通过在要安装的组件列表中取消选择 C++ CMake 工具来确保未安装任何 C++ CMake 工具。

安装 OpenCV

一些示例需要安装 OpenCV。

您可以从 https://github.com/ros2/ros2/releases/download/opencv-archives/opencv-3.4.6-vc16.VS2019.zip 下载 OpenCV 3.4.6 的预编译版本。

假设您将其解压到“C:opencv”,请在命令提示符中键入以下内容(需要管理员权限):

setx /m OpenCV_DIR C:\opencv

由于您使用的是预编译的 ROS 版本,我们必须告诉它在哪里可以找到 OpenCV 库。 您必须将“PATH”变量扩展为“C:opencvx64vc16bin”。

安装依赖项

Chocolatey 软件包数据库中有一些依赖项不可用。 为了简化手动安装过程,我们提供了必要的 Chocolatey 软件包。

由于一些 chocolatey 软件包依赖于它,我们首先安装 CMake

choco install -y cmake

您需要将 CMake bin 文件夹“C:Program FilesCMakebin”附加到您的 PATH。

请从 `这个<https://github.com/ros2/choco-packages/releases/latest>`__ GitHub 存储库下载这些软件包。

  • asio.1.12.1.nupkg

  • bullet.3.17.nupkg

  • cunit.2.1.3.nupkg

  • eigen.3.3.4.nupkg

  • tinyxml-usestl.2.6.2.nupkg

  • tinyxml2.6.0.0.nupkg

下载这些软件包后,打开管理 shell 并执行以下命令:

choco install -y -s <PATH\TO\DOWNLOADS\> asio cunit eigen tinyxml-usestl tinyxml2 bullet

请将“<PATHTODOWNLOADS>”替换为您下载软件包的文件夹。

首先升级 pip 和 setuptools:

python -m pip install -U pip setuptools==59.6.0

现在安装一些额外的 Python 依赖项:

python -m pip install -U catkin_pkg cryptography empy importlib-metadata lark==1.1.1 lxml matplotlib netifaces numpy opencv-python PyQt5 pillow psutil pycairo pydot pyparsing==2.4.7 pyyaml rosdistro

安装 Qt5

从 Qt 网站下载 5.12.X 离线安装程序

运行安装程序。

确保在 Qt -> Qt 5.12.12 树下选择 MSVC 2017 64-bit 组件。

最后,在管理员 cmd.exe 窗口中设置这些环境变量。

以下命令假定您将其安装到默认位置 C:\Qt

setx /m Qt5_DIR C:\Qt\Qt5.12.12\5.12.12\msvc2017_64
setx /m QT_QPA_PLATFORM_PLUGIN_PATH C:\Qt\Qt5.12.12\5.12.12\msvc2017_64\plugins\platforms

Note

此路径可能会根据安装的 MSVC 版本、Qt 安装到的目录以及安装的 Qt 版本而改变。

RQt 依赖项

要运行 rqt_graph,您需要“下载 <https://graphviz.gitlab.io/_pages/Download/Download_windows.html>”并安装“Graphviz <https://graphviz.gitlab.io/>”。 安装程序将询问是否将 graphviz 添加到 PATH,选择将其添加到当前用户或所有用户。

附加先决条件

从源代码构建时,您需要安装一些附加先决条件。

从 Chocolatey 安装附加先决条件

choco install -y cppcheck curl git winflexbison3

您需要将 Git cmd 文件夹“C:Program FilesGitcmd”附加到 PATH(您可以通过单击 Windows 图标,输入“环境变量”,然后单击“编辑系统环境变量”来执行此操作。 在出现的对话框中,单击“环境变量”,单击底部窗格上的“路径”,然后单击“编辑”并添加路径)。

安装 Python 先决条件

安装其他 Python 依赖项:

pip install -U colcon-common-extensions coverage flake8 flake8-blind-except flake8-builtins flake8-class-newline flake8-comprehensions flake8-deprecated flake8-docstrings flake8-import-order flake8-quotes mock mypy==0.931 pep8 pydocstyle pytest pytest-mock vcstool

安装其他先决条件

接下来安装 xmllint:

  • https://www.zlatkovic.com/projects/libxml/ 下载 libxml264 位二进制档案 <https://www.zlatkovic.com/pub/libxml/64bit/>`__(及其依赖项 ``iconv`zlib

  • 将所有档案解压到例如 C:\xmllint

  • C:\xmllint\bin 添加到 PATH

获取 ROS 2 代码

现在我们有了开发工具,我们可以获取 ROS 2 源代码。

首先设置一个开发文件夹,例如 C:\rolling

Note

由于 Windows 默认路径限制较短(260 个字符),因此所选路径必须短。 若要允许较长的路径,请参阅 https://learn.microsoft.com/en-us/windows/win32/fileio/maximum-file-path-limitation?tabs=registry

md \rolling\src
cd \rolling

获取定义要从中克隆的存储库的“ros2.repos”文件:

vcs import --input https://raw.githubusercontent.com/ros2/ros2/rolling/ros2.repos src

安装其他 DDS 实现(可选)

Fast DDS 与 ROS 2 源代码捆绑在一起,除非您将“COLCON_IGNORE”文件放入“srceProsima”文件夹中,否则将始终构建。

如果您想使用除默认供应商之外的其他 DDS 或 RTPS 供应商,您可以在 此处 找到说明。

构建 ROS 2 代码

要构建 ROS 2,您需要以管理员身份运行 Visual Studio 命令提示符(“VS 2019 的 x64 本机工具命令提示符”)。

要构建 \rolling 文件夹树:

colcon build --merge-install

Note

我们在这里使用 --merge-install 来避免在构建结束时出现过长的 PATH 变量。 如果您根据这些说明构建较小的工作区,那么您可能能够使用默认行为,即独立安装,即每个包都安装到不同的文件夹中。

Note

如果您正在进行调试构建,请使用“python_d pathtocolcon_executable”和“colcon”。 有关在 Windows 上的调试构建中运行 Python 代码的更多信息,请参阅“调试模式的额外内容”。

环境设置

启动命令 shell 并获取 ROS 2 设置文件以设置工作区:

call C:\rolling\install\local_setup.bat

这将自动为任何为其构建支持的 DDS 供应商设置环境。

如果没有其他错误,上一个命令会输出“系统找不到指定的路径。”一次,这是正常的。

测试并运行

请注意,第一次运行任何可执行文件时,您必须允许通过 Windows 防火墙弹出窗口访问网络。

您可以使用以下命令运行测试:

colcon test --merge-install

Note

仅当在构建步骤中使用“–merge-install”时才应使用它。

之后,您可以使用以下命令获取测试摘要:

colcon test-result

要运行示例,首先打开一个干净的新“cmd.exe”,并通过获取“local_setup.bat”文件来设置工作区。 然后,运行 C++“talker”:

call install\local_setup.bat
ros2 run demo_nodes_cpp talker

在单独的 shell 中你可以做同样的事情,但是要运行 Python listener

call install\local_setup.bat
ros2 run demo_nodes_py listener

您应该看到“谈话者”说它正在“发布”消息,而“听众”说“我听到了”这些消息。 这验证了 C++ 和 Python API 都正常工作。 好极了!

Note

不建议在获取“local_setup.bat”的同一个 cmd 提示符中进行构建。

安装后的后续步骤

继续阅读 教程和演示 来配置您的环境,创建您自己的工作区和包,并学习 ROS 2 核心概念。

其他 RMW 实现(可选)

ROS 2 使用的默认中间件是 Fast DDS,但中间件 (RMW) 可以在运行时替换。 有关如何使用多个 RMW,请参阅 指南

调试模式的额外内容

如果您希望能够在调试模式下运行所有​​测试,则需要安装其他一些东西:

  • 为了能够提取 Python 源代码 tarball,您可以使用 PeaZip:

choco install -y peazip
  • 您还需要 SVN,因为一些 Python 源构建依赖项是通过 SVN 检出的:

choco install -y svn hg
  • 安装上述内容后,您需要退出并重新启动命令提示符。

  • 从“tgz”获取并提取 Python 3.8.3 源代码:

  • 现在,从 Visual Studio 命令提示符以调试模式构建 Python 源:

cd C:\dev\Python-3.8.3\PCbuild
get_externals.bat
build.bat -p x64 -d
  • 最后,将构建产品复制到 Python38 安装目录中,位于发布模式 Python 可执行文件和 DLL 旁边:

cd C:\dev\Python-3.8.3\PCbuild\amd64
copy python_d.exe C:\Python38 /Y
copy python38_d.dll C:\Python38 /Y
copy python3_d.dll C:\Python38 /Y
copy python38_d.lib C:\Python38\libs /Y
copy python3_d.lib C:\Python38\libs /Y
copy sqlite3_d.dll C:\Python38\DLLs /Y
for %I in (*_d.pyd) do copy %I C:\Python38\DLLs /Y
  • 现在,从新的命令提示符下,确保“python_d”正常工作:

python_d -c "import _ctypes ; import coverage"
  • 一旦您验证了“python_d”的操作,就需要重新安装一些与调试启用库相关的依赖项:

python_d -m pip install --force-reinstall https://github.com/ros2/ros2/releases/download/numpy-archives/numpy-1.18.4-cp38-cp38d-win_amd64.whl
python_d -m pip install --force-reinstall https://github.com/ros2/ros2/releases/download/lxml-archives/lxml-4.5.1-cp38-cp38d-win_amd64.whl
  • 要验证这些依赖项的安装:

python_d -c "from lxml import etree ; import numpy"
  • 当您希望返回构建发布二进制文件时,需要卸载调试版本并使用发布版本:

python -m pip uninstall numpy lxml
python -m pip install numpy lxml
  • 要创建可执行 python 脚本(.exe),应使用 python_d 来调用 colcon

python_d path\to\colcon_executable build
  • 哇,您完成了!

保持最新状态

See 维护源签出 to periodically refresh your source installation.

故障排除

故障排除技术可在 此处 找到。

卸载

1. 如果您按照上述说明使用 colcon 安装了工作区,则“卸载”可能只是打开一个新终端而不是获取工作区的 setup 文件。 这样,您的环境将表现得好像系统上没有安装 Rolling。

  1. 如果您还想释放空间,可以使用以下命令删除整个工作区目录:

    rmdir /s /q \ros2_rolling