[具身智能-185]:如何在 Windows 环境中搭建 ROS2 的环境
Windows 搭建 ROS2 Humble / Jazzy 完整教程
前置说明:
- Ubuntu22.04 →ROS2 Humble Hawksbill
- Ubuntu24.04 →ROS2 Jazzy JaliscoWindows 原生同时支持 Humble、Jazzy;推荐 Windows 11 22H2 及以上,Windows10 21H2 也兼容两种方案可选:
✅ 方案 A:Windows 原生 ROS2(本机直接运行,推荐调试 Rviz2、远程连接机器人)
✅ 方案 B:WSL2(虚拟 Ubuntu,和真机机器人开发环境完全一致,最常用机器人开发方案)
方案 A:Windows 原生安装 ROS2(无虚拟机)
一、系统准备
- 开启开发者模式 设置 → 隐私和安全性 → 开发者选项 → 开启【开发人员模式】
- 安装Chocolatey 包管理器(管理员 PowerShell 执行)
powershell
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))二、安装依赖(管理员 PowerShell)
powershell
choco install -y python git visualstudio2022-workload-vctools自动安装 C++ 编译工具、Python、Git,编译功能包必备。
三、安装 ROS2(二选一)
选项 1:安装 Humble(对应 Ubuntu22.04,机器人系统版本)
powershell
choco install ros-humble-desktop选项 2:安装 Jazzy(Ubuntu24.04)
powershell
choco install ros-jazzy-desktop
desktop完整版:包含 rviz2、demo、可视化工具;最小版
ros-humble-base无 GUI,不推荐。
四、环境激活(每次打开终端都需要执行)
PowerShell:
powershell
# Humble C:\opt\ros\humble\setup.ps1 # Jazzy # C:\opt\ros\jazzy\setup.ps1CMD 终端使用:
cmd
call C:\opt\ros\humble\setup.bat五、验证安装
powershell
ros2 run turtlesim turtlesim_node弹出蓝色海龟窗口 = 安装成功! 新开终端激活环境,运行键盘控制:
powershell
ros2 run turtlesim turtle_teleop_key六、【重点】Windows PC ↔ 嵌入式机器人 跨机通信配置
场景:Windows 运行 Rviz2,远程查看小车 ROS2 话题!
ROS2 底层 DDS 跨网段发现存在问题,必须配置固定 DDS 域名 / 设置 IP
- 设置环境变量(PowerShell 激活 ROS 后执行)
powershell
$env:ROS_STATIC_DISCOVERY_TIMEOUT="5.0" # 使用FastDDS简单静态发现,和机器人保持DDS厂商一致(推荐FastDDS) $env:RMW_IMPLEMENTATION="rmw_fastrtps_cpp"⚠️机器人端和 Windows 端必须使用同一种 RMW(DDS 实现)!机器人默认 FastDDS,则 Windows 也强制选用 FastDDS,否则无法互相发现话题。
永久保存环境(可选)
把 setup 命令写入 PowerShell 配置文件,不用每次手动 source。
七、Windows 原生优缺点
✅ 优点:原生 Rviz2 运行流畅,直接显卡加速;不用虚拟机,配置简单;适合远程观测机器人数据。
❌ 缺点:
- 很多机器人硬件驱动(串口、手柄、CAN)移植困难
- 大量机器人源码是基于 Linux 开发,Windows 编译容易报错
- 和实体机器人 ubuntu 环境存在差异,容易出现 “Windows 能跑,Linux 出错”
方案 B:WSL2 Ubuntu(强烈推荐机器人开发【首选方案】)
优势:环境和小车 Ubuntu22.04 完全一致,无兼容性坑,可以完美复刻开发流程,同时Windows 可以直接打开 WSL 里的 Rviz2 图形界面!
步骤 1:开启 WSL
管理员 PowerShell:
powershell
wsl --install重启电脑,自动安装 Ubuntu,默认 Ubuntu22.04。
步骤 2:WSL 内安装 ROS2 Humble(和实体 Ubuntu 操作一模一样)
bash
# 设置语言 sudo apt update && sudo apt install locales sudo locale-gen en_US en_US.UTF-8 sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 export LANG=en_US.UTF-8 # 添加ROS2源 sudo apt install software-properties-common sudo add-apt-repository universe sudo apt update && sudo apt install curl gnupg lsb-release sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(source /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null # 安装完整版ROS2 Humble sudo apt update sudo apt install ros-humble-desktop步骤 3:WSL 启用图形界面(直接运行 rviz2、gazebo)
Windows11 自带 WSLg,开箱支持 GUI,输入命令直接启动 rviz2:
bash
source /opt/ros/humble/setup.bash rviz2步骤 4:WSL 和局域网机器人通信关键配置
默认 WSL 是 NAT 模式,机器人无法主动发现 WSL。 两种解决方案:
- 简单方案:Windows 设置桥接模式 WSL(高级)
- 工程常用:静态 DDS 发现文件,指定双方 IP,规避自动发现失败(机器人项目通用方案)
WSL2 优缺点
✅ 优点: 环境和实体机器人 Ubuntu22.04 完全一致;所有 Linux 驱动、源码直接编译;支持 Gazebo 仿真、串口、USB 手柄(可 usbipd 把 USB 设备直通 WSL)
❌ 缺点:初次配置稍复杂;大场景仿真相比原生 Linux 有微小性能损耗。
【方案选型建议(结合亚博小车项目)】
- 只做远程可视化调试(PC 运行 Rviz2 查看小车话题)👉 使用【方案 A Windows 原生 ROS2 Humble】
- 需要写源码、编译功能包、仿真开发、测试驱动👉 使用【方案 B WSL2 Ubuntu22.04 + ROS2 Humble】
高频踩坑汇总
坑 1:Windows 和 Ubuntu 机器人互相看不到话题
根本原因:DDS 自动发现跨局域网不稳定
解决:
① 两端统一RMW_IMPLEMENTATION=rmw_fastrtps_cpp
② 使用 FastDDS 静态发现配置 XML,填写两端 IP
③ 关闭 Windows 防火墙 / 放行 UDP 7400~7500 端口
坑 2:Windows 原生编译功能包报错
WindowsC++ 编译器规则和 gcc 不同,很多第三方机器人包缺少 Windows 适配,优先换到 WSL 开发。
坑 3:rviz2 卡顿
Windows 原生:更新显卡驱动; WSL:Windows11 + WSLg,不要额外安装 VcXsrv。
常用测试命令(安装完成验证连通性)
Windows/WSL 激活 ROS 环境后
bash
# 监听话题,测试小车发布的 /cmd_vel ros2 topic list ros2 topic echo /turtle1/cmd_vel