[具身智能-185]:如何在 Windows 环境中搭建 ROS2 的环境

📅 2026/8/4 6:47:42 👁️ 阅读次数 📝 编程学习
[具身智能-185]:如何在 Windows 环境中搭建 ROS2 的环境

Windows 搭建 ROS2 Humble / Jazzy 完整教程

前置说明:

  1. Ubuntu22.04 →ROS2 Humble Hawksbill
  2. Ubuntu24.04 →ROS2 Jazzy JaliscoWindows 原生同时支持 Humble、Jazzy;推荐 Windows 11 22H2 及以上,Windows10 21H2 也兼容两种方案可选:

✅ 方案 A:Windows 原生 ROS2(本机直接运行,推荐调试 Rviz2、远程连接机器人)

✅ 方案 B:WSL2(虚拟 Ubuntu,和真机机器人开发环境完全一致,最常用机器人开发方案)

方案 A:Windows 原生安装 ROS2(无虚拟机)

一、系统准备

  1. 开启开发者模式 设置 → 隐私和安全性 → 开发者选项 → 开启【开发人员模式】
  2. 安装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.ps1

CMD 终端使用:

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

  1. 设置环境变量(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 运行流畅,直接显卡加速;不用虚拟机,配置简单;适合远程观测机器人数据。

❌ 缺点:

  1. 很多机器人硬件驱动(串口、手柄、CAN)移植困难
  2. 大量机器人源码是基于 Linux 开发,Windows 编译容易报错
  3. 和实体机器人 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。 两种解决方案:

  1. 简单方案:Windows 设置桥接模式 WSL(高级)
  2. 工程常用:静态 DDS 发现文件,指定双方 IP,规避自动发现失败(机器人项目通用方案)

WSL2 优缺点

✅ 优点: 环境和实体机器人 Ubuntu22.04 完全一致;所有 Linux 驱动、源码直接编译;支持 Gazebo 仿真、串口、USB 手柄(可 usbipd 把 USB 设备直通 WSL)

❌ 缺点:初次配置稍复杂;大场景仿真相比原生 Linux 有微小性能损耗。

【方案选型建议(结合亚博小车项目)】

  1. 只做远程可视化调试(PC 运行 Rviz2 查看小车话题)👉 使用【方案 A Windows 原生 ROS2 Humble】
  2. 需要写源码、编译功能包、仿真开发、测试驱动👉 使用【方案 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