Windows 源码编译
本页介绍如何在 Windows 上为 ROS 2 搭建开发环境。
确保你的系统有一个支持 UTF-8 的 locale。
例如,在中文版 Windows 上,你可能需要安装 英语语言包。
创建 ROS 2 安装位置
Section titled “创建 ROS 2 安装位置”该位置将同时存放已安装的二进制包和 ROS 2 本体。
以管理员身份启动命令提示符(通常做法是点击开始菜单,输入 command prompt,然后右键点击选择”以管理员身份运行”)。
然后创建一个目录来存放安装文件。
由于 Windows 路径长度有限制,该路径应尽可能简短。
在后续说明中,我们将使用 C:\dev。
mkdir C:\dev增加 Windows 最大路径长度
Section titled “增加 Windows 最大路径长度”默认情况下,Windows 的最大路径长度(MAX_PATH)限制为 260 个字符。 ROS 2 构建过程会使用更长的路径,因此我们需要增加该限制。 使用上面打开的会话,运行以下命令:
powershell New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem" -Name "LongPathsEnabled" -Value 1 -PropertyType DWORD -Force注意:需要以管理员身份执行。
你可以在 微软文档 中了解更多关于此限制的信息。
关闭管理员终端,然后使用一个新的命令提示符会话继续后续操作。
安装前置依赖
Section titled “安装前置依赖”安装 MSVC
Section titled “安装 MSVC”要编译 ROS 2 代码,必须安装 MSVC 编译器。 目前推荐使用 MSVC 2022。
继续使用之前的会话,运行以下命令进行下载:
powershell irm https://aka.ms/vs/17/release/vs_buildtools.exe -OutFile vs_buildtools_2022.exe现在安装 MSVC 2022:
.\vs_buildtools_2022.exe --quiet --wait --norestart --add Microsoft.Component.MSBuild --add Microsoft.Net.Component.4.6.1.TargetingPack --add Microsoft.Net.Component.4.8.SDK --add Microsoft.VisualStudio.Component.CoreBuildTools --add Microsoft.VisualStudio.Component.Roslyn.Compiler --add Microsoft.VisualStudio.Component.TextTemplating --add Microsoft.VisualStudio.Component.VC.CLI.Support --add Microsoft.VisualStudio.Component.VC.CoreBuildTools --add Microsoft.VisualStudio.Component.VC.CoreIde --add Microsoft.VisualStudio.Component.VC.Redist.14.Latest --add Microsoft.VisualStudio.Component.VC.Tools.x86.x64 --add Microsoft.VisualStudio.Component.Windows11SDK --add Microsoft.VisualStudio.Component.Windows11SDK.22621 --add Microsoft.VisualStudio.ComponentGroup.NativeDesktop.Core --add Microsoft.VisualStudio.Workload.MSBuildTools --add Microsoft.VisualStudio.Workload.VCTools注意:MSVC 的安装可能需要很长时间,且安装过程中没有任何进度反馈。
安装 pixi
Section titled “安装 pixi”ROS 2 使用 conda-forge 作为软件包后端,使用 pixi 作为前端。
注意:安装 conda-forge 时,Windows Defender 可能会将其标记为威胁。你可以通过点击”更多信息”,然后选择”仍要运行”来安全地跳过此提示。
按照 https://pixi.sh/latest/ 上的说明,使用 Windows 安装程序或在已打开的命令提示符中通过命令行安装 pixi。
pixi 安装完成后,关闭命令提示符会话并重新打开,以确保 pixi 已被添加到 PATH 中。
在现有的命令提示符会话中下载 pixi 配置文件:
cd C:\devpowershell irm https://raw.githubusercontent.com/ros2/ros2/refs/heads/{REPOS_FILE_BRANCH}/pixi.toml -OutFile pixi.toml安装依赖:
pixi install构建 ROS 2
Section titled “构建 ROS 2”你可以使用同一个 Windows 命令提示符来进行构建。
加载 MSVC 编译器环境
Section titled “加载 MSVC 编译器环境”在你用于编译 ROS 2 的命令提示符中需要执行此操作,但在运行 ROS 2 时不需要:
call "C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Auxiliary\Build\vcvarsall.bat" x86_amd64加载 pixi 环境
Section titled “加载 pixi 环境”在你打开的每个命令提示符中都需要执行此操作,以设置依赖的路径:
cd C:\devpixi shell获取 ROS 2 代码
Section titled “获取 ROS 2 代码”现在我们已经有了开发工具,可以获取 ROS 2 源代码了。
创建一个开发文件夹,例如 C:\dev\{DISTRO}:
md C:\dev\{DISTRO}\srccd C:\dev\{DISTRO}获取 ros2.repos 文件,该文件定义了要克隆的仓库:
vcs import --input https://raw.githubusercontent.com/ros2/ros2/{REPOS_FILE_BRANCH}/ros2.repos src安装额外的 RMW 实现(可选)
Section titled “安装额外的 RMW 实现(可选)”ROS 2 默认使用的中间件是 Fast DDS,但中间件(RMW)可以在构建时或运行时替换。
有关如何使用多种 RMW 实现的说明,请参阅 RMW 实现指南。
构建工作空间中的代码
Section titled “构建工作空间中的代码”要构建 {DISTRO} 文件夹目录树:
colcon build --merge-install注意:这里使用
--merge-install是为了避免构建结束时PATH变量过长。如果你修改这些步骤以构建更小的工作空间,则可以使用默认的隔离安装行为,即每个包安装到不同的文件夹中。
注意:由于工作空间中会拉取大量包,源码安装可能需要较长时间。
启动一个新的 Windows 命令提示符,后续示例将使用它。
加载 pixi 环境
Section titled “加载 pixi 环境”在你打开的每个命令提示符中都需要执行此操作,以设置依赖的路径:
cd C:\devpixi shell加载 ROS 2 环境
Section titled “加载 ROS 2 环境”在你打开的每个命令提示符中都需要执行此操作,以设置 ROS 2 工作空间:
call C:\dev\{DISTRO}\install\local_setup.bat这将为所有已构建支持的 DDS 供应商自动设置环境。
如果没有其他问题,上述命令输出一次 The system cannot find the path specified. 是正常的。
尝试一些示例
Section titled “尝试一些示例”请注意,首次运行任何可执行文件时,你需要通过 Windows 防火墙弹窗允许网络访问。
你可以使用以下命令运行测试:
cd C:\dev\{DISTRO}colcon test --merge-install注意:
--merge-install仅在构建步骤中也使用了该选项时才应使用。
之后,你可以使用以下命令获取测试摘要:
colcon test-result要运行示例,首先打开一个干净的新命令提示符,并通过加载 local_setup.bat 文件来设置工作空间。
然后运行一个 C++ talker:
call install\local_setup.batros2 run demo_nodes_cpp talker在另一个命令提示符中执行相同操作,但改为运行 Python listener:
call install\local_setup.batros2 run demo_nodes_py listener你应该会看到 talker 输出 Publishing(发布)消息,而 listener 输出 I heard(我听到了)。
这说明 C++ 和 Python API 都能正常工作。
注意:不建议在你已经加载了
local_setup.bat的同一个命令提示符中进行构建。
继续学习教程,配置你的环境、创建自己的工作空间和软件包,并了解 ROS 2 的核心概念。
参阅维护源码检出以定期更新你的源码安装。
可以在 Windows 故障排除页面找到相关技巧。
-
如果你按照上述说明使用 colcon 安装了工作空间,“卸载”可能只需打开一个新终端,并且不加载工作空间的
setup文件即可。这样,你的环境将表现得像系统中没有安装DISTRO_TITLE一样。 -
如果你还想释放空间,可以使用以下命令删除整个工作空间目录:
Terminal window rmdir /s /q C:\dev\{DISTRO}