在Windows上构建ROS 2
目录
本指南介绍了如何在Windows上为ROS 2设置一个开发环境。 [Alyssa@5562]
先决条件
首先按照二进制安装页面上的 Installing Prerequisites 步骤操作。
当你进行 "Downloading ROS 2" 部分时,停下来并返回这里执行以下步骤。 [Alyssa@5564]
语言支持
确保你有一个支持 UTF-8
的语言区域。例如,对于汉语Windows 10的设备,您可能需要安装 English language pack 。 [Alyssa@5566]
附加先决条件
从源文件构建时,您需要先安装一些额外的先决条件。 [Alyssa@5568]
从Chocolatey安装额外的先决条件
首先安装git:
choco install -y git
您需要将Git cmd文件夹 “c: Program Files Git cmd'” 添加到路径中 (您可以通过单击Windows图标,键入 "Environment Variables" ,然后点击 "Edit the system environment variables" 。在生成的对话框中,单击 "Environment Variables" ,在底部窗格中单击 "Path" ,然后单击 "Edit" 并添加路径)。 [Alyssa@5571]
安装开发人员工具
现在,我们准备安装一些用于帮助开发ROS 2的工具。
让我们从 vcstool
开始:
pip install -U vcstool
你可以通过运行 vcs
来测试它 (你应该可以在同一个cmd命令行终端中这样做)。 [Alyssa@5575]
接下来,安装 colcon
: [待校准@5576]
pip install -U colcon-common-extensions
你可以通过运行 colcon
来测试它 (你应该可以在同一个cmd提示中这样做)。 [待校准@5577]
另外,你应该安装 curl
:
choco install -y curl
安装依赖项
接下来安装最新版本的 setuptools
和 pip
:
python -m pip install -U setuptools pip
然后,您可以继续安装其他Python依赖项:
pip install -U catkin_pkg cryptography EmPy ifcfg lark-parser lxml numpy pyparsing pyyaml
接下来安装测试工具,如 pytest
等:
pip install -U pytest pytest-mock coverage mock
接下来安装代码审查工具,像 flake8
等: [Alyssa@5583]
pip install -U flake8 flake8-blind-except flake8-builtins flake8-class-newline flake8-comprehensions flake8-deprecated flake8-docstrings flake8-import-order flake8-quotes mypy==0.761 pep8 pydocstyle
接下来安装cppcheck:
choco install -y cppcheck
接下来安装xmllint:
从https://www.zlatkovic.com/projects/libxml/ 下载
libxml2
的 64 bit binary archives (及其依赖的iconv
和zlib
) [Alyssa@5586]解压所有archives到例如
C:\xmllint
文件夹 [Alyssa@5587]将
C:\xmllint\bin
添加到PATH
路径库中。 [Alyssa@5588]
安装Qt5
仅当您正在安装rviz时才需要此部分,但它是我们的默认安装源自带的,因此如果您不知道(这是安装rviz才需要的),那么假设您正在安装它,需要进行如下操作。 [Alyssa@5590]
首先从Qt的网站获取安装包: [Alyssa@5591]
选择开源版本,然后选择 Qt Online Installer for Windows
。
运行安装程序并安装qt5。
我们建议您将其安装到默认位置 “c: qt”,但是如果您选择其他位置,请确保相应地更新以下路径。当选择要安装的组件时,对于Foxy和更高版本你唯一需要确定的东西是 Qt
-> Qt 5.15.0
目录树下有合适的MSVC 64位组件。在撰写本文档时,我们正在使用 5.15.0
,这也是我们推荐的版本,因为我们在Windows上只测试了这个版本,但更高的版本可能也可以用。对于Foxy及更高版本,一定要选择 MSVC 2019 64-bit
。之后的步骤,选择默认设置就可以了。 [Alyssa@5595]
最后,在 cmd.exe
中将 Qt5_DIR
环境变量设置为你编译器所在的路径,以使CMake可以找到该编译器: [Alyssa@5596]
set Qt5_DIR=C:\Qt\5.15.0\msvc2019_64
您可以使用 “setx-m Qt5_DIR C :Qt 5.15.0 msvc2019_64” 让它永久生效,但这需要管理员权限。 [Alyssa@5597]
注解
此具体路径可能会根据您使用的MSVC版本或将其安装到其他目录而不一样。 [Alyssa@5598]
获取ROS 2代码
现在我们有了开发工具,我们可以获取ROS 2源代码了。 [Alyssa@5600]
首先设置一个开发文件夹,例如 “c: dev ros2_foxy”: [Alyssa@5601]
md \dev\ros2_foxy\src
cd \dev\ros2_foxy
指明所克隆的仓库地址并下载 ros2.repos
文件: [Alyssa@5602]
# CMD
curl -sk https://raw.githubusercontent.com/ros2/ros2/foxy/ros2.repos -o ros2.repos
# PowerShell
curl https://raw.githubusercontent.com/ros2/ros2/foxy/ros2.repos -o ros2.repos
接下来,您可以使用 vcs
导入 ros2.repos
文件中列出的仓库:
# CMD
vcs import src < ros2.repos
# PowerShell
vcs import --input ros2.repos src
安装额外的DDS实现 (可选) [待校准@5495]
如果你想使用除了默认的eProsima的快速RTPS,以外的DDS或RTPS供应商,你可以在 here 找到说明。 [Alyssa@5496]
编译ROS 2代码 [Alyssa@5604]
要编译ROS 2,您需要以管理员身份运行Visual Studio命令终端 ( "x64 Native Tools Command Prompt for VS 2019" )。 [Alyssa@5605]
Fast RTPS与ROS 2源文件捆绑在一起,除非您将 AMENT_IGNORE
文件放在 “src eProsima” 文件夹中,否则它将始终被编译。 [Alyssa@5606]
编译 “dev ros2_foxy” 文件夹目录: [Alyssa@5607]
colcon build --merge-install
注解
我们在这里使用 --merge-install
来避免在编译结束时 PATH
变量太长。如果要调整这些说明以构建较小的工作区,则可以使用默认行为,即隔离安装,即每个包安装到不同的文件夹的位置。 [Alyssa@5608]
注解
如果您正在构建一个调试版本,请使用 python_d path\to\colcon_executable build --cmake-args -DCMAKE_BUILD_TYPE=Debug
. 参考 Extra stuff for debug mode 了解有关在Windows上的运行调试版本的Python代码的更多信息。 [Alyssa@5609]
环境设置
打开一个shell命令终端并source ROS 2的安装文件以配置工作空间的环境: [Alyssa@5610]
call C:\dev\ros2_foxy\install\local_setup.bat
这将自动为其支持的任何DDS供应商设置编译环境。 [Alyssa@5611]
如果没有其他错误,正常情况下前一个命令只会输出 一次 “系统找不到指定的路径”。 [Alyssa@5612]
测试和运行
请注意,首次运行任何可执行文件时,必须在Windows防火墙弹出的窗口中允许访问网络。 [Alyssa@5614]
您可以使用以下命令运行测试例程: [Alyssa@5615]
colcon test --merge-install
注解
只有处于编译步骤时,才应该使用``--merge-install`` 。 [Alyssa@5616]
之后,您可以使用以下命令获取测试的概要信息: [Alyssa@5617]
colcon test-result
要运行这些示例,首先打开一个干净的新 cmd.exe
终端,并通过source local_setup.bat
文件来设置工作空间的环境变量。然后,运行一个c++ talker
: [Alyssa@5618]
call install\local_setup.bat
ros2 run demo_nodes_cpp talker
在另一个单独的shell中,您可以执行与上面相同的操作,只是换成运行一个Python listener
: [Alyssa@5619]
call install\local_setup.bat
ros2 run demo_nodes_py listener
你应该看到了 talker
说这是 Publishing
消息 ,listener
说 I heard
这些消息。这证明了C++和Python的APIs都是正常工作的。万岁! [Alyssa@5507]
注解
不建议在已经source了 local_setup.bat
环境的同一个cmd命令终端中编译。 [Alyssa@5620]
使用ROS 1 bridge
ROS 1bridge可以连接从ROS 1到ROS 2的话题,反之亦然。看看这个专门的文献 documentation 如何编译和使用ROS 1bridge。 [Alyssa@5511]
附加RMW实现 (可选)
ROS 2使用的默认中间件是 Fast-RTPS
,但中间件 (RMW) 可以在运行时进行替换。查看 guide 了解如何使用多个RMWs。 [Alyssa@5513]
调试模式的额外内容
如果您希望能够在调试模式下运行所有测试,您需要安装更多内容:
为了提取Python源文件压缩包,您可以使用PeaZip: [Alyssa@5623]
choco install -y peazip
您还需要SVN,因为某些Python源文件编译依赖项是通过SVN检出的: [Alyssa@5624]
choco install -y svn hg
安装上述内容后,您需要退出并重新启动命令终端。 [Alyssa@5625]
从
tgz
中获取并提取Python 3.8.3源文件: [待校准@5626]https://www.python.org/ftp/python/3.8.3/Python-3.8.3.tgz [Alyssa@5627]
为了使以下说明简洁,请解压缩到 “c:devPython-3.8.3” [Alyssa@5628]
现在,从Visual Studio命令行终端以调试模式编译Python源文件: [Alyssa@5629]
cd C:\dev\Python-3.8.3\PCbuild
get_externals.bat
build.bat -p x64 -d
最后,将编译生成的文件复制到发布模式Python可执行文件和DLL's旁边的Python 38安装目录中: [Alyssa@5630]
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
正常安装: [Alyssa@5631]
python_d -c "import _ctypes ; import coverage"
验证
python_d
的操作后,有必要重新安装一些带有启用调试模式相关库的依赖项: [Alyssa@5632]
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"
当您希望回到编译发行二进制文件的模式时,必须卸载调试变量并使用发行变量: [Alyssa@5634]
python -m pip uninstall numpy lxml
python -m pip install numpy lxml
要创建可执行文件的python脚本 (.exe),应使用python _ d调用colcon以及相应的CMake编译类型。如果是用pip安装的colcon,则可以通过
pip show colcon-core
找到colcon可执行文件的路径。 [Alyssa@5635]
python_d path\to\colcon_executable build --merge-install --cmake-args -DCMAKE_BUILD_TYPE=Debug
万岁,你完成了! [Alyssa@5636]
了解最新情况 [Alyssa@5518]
请参阅 维护ROS 2Foxy源文件的检出 以定期的刷新安装源。 [Alyssa@5519]
故障排除
故障排除技术可以参考 这份文档 。 [Alyssa@5637]
卸载
如果你按照上面的指示用colcon安装了你的工作空间, "uninstalling" 可能只是打开一个新的终端,而没有source工作空间的
setup
文件。因此,您的环境就会表现得好像您的系统上没有安装Foxy。 [Alyssa@5523]如果您还打算释放所有空间,则可以使用以下命令删除整个工作空间的目录: [Alyssa@5524]
rmdir /s /q \ros2_foxy