You're reading the documentation for a development version. For the latest released version, please have a look at Galactic.

在 Windows 上构建 ROS 2

本指南是关于如何在 Windows 上为 ROS 2 设置一个开发环境。

系统需求

仅支持 Windows 10

语言支持

请确保你有一个支持 UTF-8 的区域设置。例如,对于中文 Windows 10 的安装,你可能需要安装一个 英语语言包

安装的先决条件

安装 Chocolatey

Chocolatey 是一个用于 Windows 的软件包管理器,按照他们的安装说明进行安装:

https://chocolatey.org/

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

安装 Python

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

choco install -y python --version 3.8.3

安装 Visual C++ 的再发布程序

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

choco install -y vcredist2013 vcredist140

安装 OpenSSL

这个页面 下载 Win64 OpenSSL v1.1.1L OpenSSL 安装程序。滚动到页面底部并下载 Win64 OpenSSL v1.1.1L。不要下载 Win32 或 Light 版本。

用默认参数运行安装程序,因为以下命令假定你使用了默认的安装目录。

这条命令设置了一个环境变量,该变量在不同的会话中持续存在:

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

你将需要把 OpenSSL-Win64 bin 文件夹追加到你的 PATH 中。你可以通过点击 Windows 图标,输入 “环境变量”,然后点击 “编辑系统环境变量” 来做到这一点。在出现的对话框中,点击 “环境变量”,然后点击底部窗格中的 “Path”,最后点击 “编辑” 并添加以下路径。

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

安装 Visual Studio

安装 Visual Studio 2019。

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

微软提供了一个免费的 Visual Studio 2019 版本,命名为社区,可用于构建使用 ROS 2 的应用程序。你可以通过这个链接直接下载安装程序。

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

确保它们被安装的一个简单方法是在安装过程中选择 Desktop development with C++ 的工作流程。

https://i.imgur.com/2h0IxCk.png

确保没有安装 C++ CMake 工具,在要安装的组件列表中取消选择它们。

安装额外的 DDS 实现(可选)

如果你想使用除了默认的 Eclipse Cyclone DDS 之外的另一个 DDS 或 RTPS 供应商,你可以在 这里 找到说明。

安装 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:\opencv\x64\vc16\bin

安装依赖

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

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

choco install -y cmake

你将需要把 CMake bin 文件夹 C:\Program Files\CMake\bin 附加到你的 PATH 中。

请从 这个 的 GitHub 仓库下载这些软件包。

  • asio.1.12.1.nupkg

  • bullet.2.89.0.nupkg

  • cunit.2.1.3.nupkg

  • eigen-3.3.4.nupkg

  • tinyxml-usestl.2.6.2.nupkg

  • tinyxml2.6.0.0.nupkg

  • log4cxx.0.10.0.nupkg

一旦这些软件包被下载,打开一个管理 shell,执行以下命令:

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

请将 <PATH\TO\DOWNLOADS> 替换成你下载软件包的文件夹。

你还必须安装一些额外的 python 依赖项。

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

安装 Qt5

只有在你构建 rviz 的时候才需要这一节,但是它带有我们默认的源代码集,所以如果你不知道,那就假设你正在构建它。

首先从 Qt 的网站上获取安装程序。

https://www.qt.io/download

选择开源版本,然后选择 “Qt Online Installer for Windows”。

运行安装程序并安装 Qt5。

我们建议你把它安装到默认位置 C:\Qt,但如果你选择其他地方,请确保更新下面的路径相应的。当选择要安装的组件时,你唯一绝对需要的是 Qt -> Qt 5.15.0 树下的适当的 MSVC 64 位组件。我们在写这篇文档时使用的是 5.15.0,这也是我们推荐的,因为我们在 Windows 上测试的都是这个版本,但以后的 Qt5 版本也可能适用。请确保选择 MSVC 2019 64-bit。之后,默认设置就可以了。

最后,在你打算构建的 cmd.exe 中设置 Qt5_DIR 环境变量,以便 CMake 能够找到它:

set Qt5_DIR=C:\Qt\5.15.0\msvc2019_64
set QT_QPA_PLATFORM_PLUGIN_PATH=C:\Qt\5.15.0\msvc2019_64\plugins\platforms

你可以用 setx -m Qt5_DIR C:\Qt\5.15.0\msvc2019_64setx -m QT_QPA_PLATFORM_PLUGIN_PATH C:\Qt\5.15.0\msvc2019_64\plugins\platforms 来永久设置它,但这需要管理员。

注解

这个路径可能会根据你使用的 MSVC 版本而改变,或者你将其安装到不同的目录。

RQt 依赖

要运行 rqt_graph,你需要 下载 并安装 Graphviz。安装程序将询问是否将 graphviz 添加到 PATH 中,选择将其添加到当前用户或所有用户。

其他先决条件

从源代码构建时,你需要安装一些额外的先决条件。

从 Chocolatey 安装额外的先决条件

choco install -y cppcheck curl git winflexbison3

你需要将 Git cmd 文件夹 C:\Program Files\Git\cmd 添加到 PATH 中(你可以通过点击 Windows 图标,输入 “环境变量”,然后点击 “编辑系统环境变量”。在出现的对话框中,点击 “环境变量”,在底部窗格中点击 “Path”,然后点击 “编辑”,添加路径)”

安装 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.761 pep8 pydocstyle pytest pytest-mock vcstool

安装杂项先决条件

接下来安装 xmllint:

获取 ROS 2 代码

现在我们有了开发工具,我们可以得到 ROS 2 的源代码。

First setup a development folder, for example C:\dev\ros2_xin:

md \dev\ros2_xin\src
cd \dev\ros2_xin

获得 ros2.repos 文件,该文件定义了要克隆的仓库:

# CMD
curl -sk https://raw.githubusercontent.com/ros2/ros2/xin/ros2.repos -o ros2.repos

# PowerShell
curl https://raw.githubusercontent.com/ros2/ros2/xin/ros2.repos -o ros2.repos

接下来你可以使用 vcs 来导入 ros2.repos 文件中列出的存储库:

# CMD
vcs import src < ros2.repos

# PowerShell
vcs import --input ros2.repos src

安装额外的 DDS 实现(可选)

如果你想使用除了默认的 Eclipse Cyclone DDS 之外的另一个 DDS 或 RTPS 供应商,你可以在 这里 找到说明。

构建 ROS 2 代码

要构建 ROS 2,你将需要一个以管理员身份运行的 Visual Studio 命令提示符(”x64 Native Tools Command Prompt for VS 2019”)。

Fast RTPS 与 ROS 2 源代码捆绑在一起,除非你在 src\eProsima 文件夹中放一个 AMENT_IGNORE 文件,否则将一直被构建。

To build the \dev\ros2_xin folder tree:

colcon build --merge-install

注解

我们在这里使用 --merge-install 来避免在构建结束时 PATH 变量太长。如果你要修改这些说明来构建一个较小的工作区,那么你也许可以使用默认的行为,即隔离安装,即每个软件包都安装在不同的文件夹中。

注解

如果你正在进行调试构建,使用 python_d path\to\colcon_executable colcon。关于在 Windows 上调试构建中运行 Python 代码的更多信息,请参见 Extra stuff for debug mode

环境设置

启动一个命令 shell,并将 ROS 2 的设置文件作为源文件来设置工作区:

call C:\dev\ros2_xin\install\local_setup.bat

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

正常情况下,如果没有其他问题,前面的命令会准确地输出 “The system cannot find the path specified.” 一次。

测试与运行

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

你可以用这个命令运行测试:

colcon test --merge-install

注解

--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

你应该看到 talker 说它正在 Publishing 信息,listenerI heard 这些信息。这就验证了 C++ 和 Python 的 API 都在正常工作。好耶!

注解

不建议在你激活了 local_setup.bat 的同一个 cmd 提示下构建。

Next steps after installing

Continue with the tutorials and demos to configure your environment, create your own workspace and packages, and learn ROS 2 core concepts.

Using the ROS 1 bridge

The ROS 1 bridge can connect topics from ROS 1 to ROS 2 and vice-versa. See the dedicated documentation on how to build and use the ROS 1 bridge.

Additional RMW implementations (optional)

The default middleware that ROS 2 uses is Cyclone DDS, but the middleware (RMW) can be replaced at runtime. See the guide on how to work with multiple RMWs.

调试模式的额外内容

如果你想能够在调试模式下运行所有的测试,你还需要安装一些东西:

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

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

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

  • Get and extract the Python 3.8.3 source from the tgz:

  • Now, build the Python source in debug mode from a Visual Studio command prompt:

cd C:\dev\Python-3.8.3\PCbuild
get_externals.bat
build.bat -p x64 -d
  • Finally, copy the build products into the Python38 installation directories, next to the Release-mode Python executable and DLL’s:

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
  • Now, from a fresh command prompt, make sure that python_d works:

python_d -c "import _ctypes ; import coverage"
  • Once you have verified the operation of python_d, it is necessary to reinstall a few dependencies with the debug-enabled libraries:

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
  • To verify the installation of these dependencies:

python_d -c "from lxml import etree ; import numpy"
  • When you wish to return to building release binaries, it is necessary to uninstall the debug variants and use the release variants:

python -m pip uninstall numpy lxml
python -m pip install numpy lxml
  • To create executables python scripts(.exe), python_d should be used to invoke colcon

python_d path\to\colcon_executable build
  • Hooray, you’re done!

Stay up to date

See Maintaining a source checkout of ROS 2 Xin to periodically refresh your source installation.

Troubleshooting

Troubleshooting techniques can be found here.

Uninstall

  1. If you installed your workspace with colcon as instructed above, “uninstalling” could be just a matter of opening a new terminal and not sourcing the workspace’s setup file. This way, your environment will behave as though there is no Xin install on your system.

  2. If you’re also trying to free up space, you can delete the entire workspace directory with:

    rmdir /s /q \ros2_xin