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
注解
Chocolatey将在``C:Python38``中安装Python,而其余的安装预期它应该在那个位置。如果您将Python安装在其他地方,必须将其复制或链接到该位置。
安装 Visual C++ Redistributables
打开命令提示符并输入以下命令通过 Chocolatey 安装它们:
choco install -y vcredist2013 vcredist140
安装 OpenSSL
从 此页面 下载 Win64 OpenSSL v1.1.1n OpenSSL 安装程序。滚动到页面底部下载 Win64 OpenSSL v1.1.1t。不要下载 Win32 或 Light 版本,也不要下载 v3.X.Y 安装程序。
使用默认参数运行安装程序,因为下面的命令假设你使用了默认安装目录。
此命令设置一个在会话间持久存在的环境变量:
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版本,名为Community,可以用于构建使用ROS 2的应用程序。您可以通过以下链接直接下载安装程序。 <https://visualstudio.microsoft.com/thank-you-downloading-visual-studio/?sku=Community&rel=16&src=myvs&utm_medium=microsoft&utm_source=my.visualstudio.com&utm_campaign=download&utm_content=vs+community+2019>`_
确保已安装 Visual C++ 功能。
一种确保其已安装的简单方法是在安装过程中选择``使用 C++ 的桌面开发``工作流程。
确保未安装任何 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中。
请从 这个 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
下载完这些包后,打开管理员权限的命令行窗口并执行以下命令:
choco install -y -s <PATH\TO\DOWNLOADS\> asio cunit eigen tinyxml-usestl tinyxml2 bullet
请将 <PATH\TO\DOWNLOADS>
替换为您下载包的文件夹路径。
首先升级 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离线安装程序<https://www.qt.io/offline-installers>`_。运行安装程序。确保在``Qt`` -> ``Qt 5.12.12``树下选择``MSVC 2017 64位``组件。
最后,在管理员``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
注解
该路径可能根据已安装的MSVC版本、安装Qt的目录和安装的Qt版本而有所变化。
RQt依赖项
要运行rqt_graph,您需要从`此处<https://graphviz.gitlab.io/_pages/Download/Download_windows.html>`__下载并安装`Graphviz<https://graphviz.gitlab.io/>`__。安装程序会询问是否将graphviz添加到PATH,请选择添加到当前用户或所有用户。
安装额外的DDS实现(可选)
如果您想使用除默认的Fast DDS之外的其他DDS或RTPS供应商,请在`此处</Installation/DDS-Implementations>`_找到说明。
额外先决条件
在从源代码构建时,您需要安装一些额外的先决条件。
从Chocolatey安装额外的先决条件
choco install -y cppcheck curl git winflexbison3
您需要将Git cmd文件夹 C:\Program Files\Git\cmd
添加到路径中(您可以通过点击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/下载`libxml2`的`64位二进制归档文件 <https://www.zlatkovic.com/pub/libxml/64bit/>`__(以及其依赖的`iconv`和`zlib`)
将所有归档文件解压到例如``C:xmllint``
将``C:xmllintbin``添加到``PATH``中。
获取ROS 2代码
现在我们已经有了开发工具,可以获取ROS 2源代码。
首先设置一个开发文件夹,例如 C:\humble
:
注解
选择的路径非常重要,由于默认的Windows路径限制很短(260个字符)。如果要允许更长的路径,请参考https://learn.microsoft.com/en-us/windows/win32/fileio/maximum-file-path-limitation?tabs=registry。
md \humble\src
cd \humble
获取定义要克隆的存储库的``ros2.repos``文件:
vcs import --input https://raw.githubusercontent.com/ros2/ros2/humble/ros2.repos src
安装额外的DDS实现(可选)
Fast DDS与ROS 2源代码捆绑在一起,并且除非在``srceProsima``文件夹中放置一个``COLCON_IGNORE``文件,否则将始终构建它。
如果您想使用默认之外的其他DDS或RTPS供应商,您可以在这里找到说明:这里。
构建ROS 2代码。
要构建ROS 2,您需要以管理员身份运行Visual Studio命令提示符("x64 Native Tools Command Prompt for VS 2019")。
要构建``humble``文件夹树:
colcon build --merge-install
注解
我们在这里使用``--merge-install``,以避免构建结束时``PATH``变量过长。如果您将这些指令用于构建较小的工作空间,则可能可以使用默认行为,即隔离安装(isolated install),即将每个软件包安装到不同的文件夹。
注解
如果您正在进行调试构建,请使用``python_d pathtocolcon_executable`` colcon
。有关在Windows上运行调试构建中的Python代码的更多信息,请参见`调试模式的额外信息`_。
环境设置
启动一个命令行窗口,并源化ROS 2设置文件以设置工作空间:
call C:\humble\install\local_setup.bat
这将自动为支持构建的任何DDS供应商设置环境。
如果没有其他问题,之前的命令输出"系统找不到指定的路径.",这是正常的,只会出现一次。
测试和运行
请注意,第一次运行任何可执行文件时,您需要允许通过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
在另一个窗口中,您可以执行相同的操作,但是运行一个Python``listener``:
call install\local_setup.bat
ros2 run demo_nodes_py listener
你应该看到“talker”说它正在“发布”消息,而“listener”说“我听到了”这些消息。这验证了C++和Python API都正常工作。太棒了!
注解
不建议在与已经加载``local_setup.bat``的cmd提示符中构建。
其他RMW实现(可选)
ROS 2使用的默认中间件是“Fast DDS”,但是中间件(RMW)可以在运行时替换。请参阅:doc:`指南 <../../How-To-Guides/Working-with-multiple-RMW-implementations>`以了解如何使用多个RMW。
调试模式的额外内容
如果您想要能够在调试模式下运行所有测试,您需要安装一些其他内容:
要能够提取Python源代码压缩包,您可以使用PeaZip:
choco install -y peazip
你还需要SVN,因为一些Python源码构建的依赖项是通过SVN检出的:
choco install -y svn hg
安装以上内容后,您需要退出并重新启动命令提示符。
从``tgz``中获取并提取Python 3.8.3的源代码:
为了使这些说明简洁,请将其提取到``C:devPython-3.8.3``
现在,在Visual Studio命令提示符中以调试模式构建Python源代码:
cd C:\dev\Python-3.8.3\PCbuild
get_externals.bat
build.bat -p x64 -d
最后,将构建产品复制到Python38安装目录中,放在Release模式的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
太好了,你完成了!