Windows 11 学习 ROS 2 时,用 WSL2 + Ubuntu 是目前最接近原生 Linux 的方案,也是最推荐的方式。因为 ROS 2 官方主要支持 Linux(尤其是 Ubuntu),所以这样基本和真实开发环境一致。下面我给你完整讲清楚 原理 + 安装 + 使用流程


一、WSL2 是什么(为什么要用它)

Windows Subsystem for Linux(WSL)Windows 提供的 Linux 子系统

简单理解就是:

Windows
   │
   ├── WSL2(虚拟化内核)
   │       │
   │       └── Ubuntu Linux
   │               │
   │               └── ROS 2

也就是说:

  • 你在 Windows
  • 但可以运行 真正的 Linux
  • 在 Linux 里安装 ROS 2

所以效果几乎等同真实的 Ubuntu 电脑


二、WSL2 为什么适合学 ROS2

原因有 4 个:

1 Linux 是 ROS 的主要环境

ROS 官方支持的系统:

  • Ubuntu 20.04
  • Ubuntu 22.04

例如 ROS 2 Humble 就是官方为 Ubuntu 22.04 发布的版本。


2 Windows 可以直接弹出 Linux GUI

Windows 11 自带 WSLg

意思是:

Linux GUI 程序 → 直接显示在 Windows。

比如运行:

rviz2

就会弹出一个窗口。

rviz 是 ROS 的 3D 可视化工具:RViz


3 不需要虚拟机

传统方式:

Windows
  └── VMware
        └── Ubuntu

缺点:

  • 占内存
  • GPU支持差

WSL2 是 轻量级虚拟化,性能更好。


4 文件互通

Windows 和 Linux 文件可以直接访问:

Windows 访问 Linux:

\\wsl$\Ubuntu

Linux 访问 Windows:

/mnt/c/

例如:

/mnt/c/Users/你的用户名/Desktop

三、完整安装步骤(推荐)

第一步:安装 WSL2

打开 PowerShell(管理员)

输入:

wsl --install -d Ubuntu-22.04

安装内容:

  • WSL2
  • Ubuntu 22.04
  • Linux 内核

安装完成后重启电脑。


第二步:启动 Ubuntu

重启后打开:Ubuntu 22.04

先用这个命令查看当前所有发行版的状态(Running = 运行中,Stopped = 已停止):

wsl -l -v
# 或完整版
wsl --list --verbose

示例输出:

  NAME                   STATE           VERSION
* Ubuntu-22.04           Running         2
  Ubuntu-24.04           Stopped         2
  Debian                 Stopped         2

1. 启动(开启/进入)某个特定发行版

启动 = 进入 shell(如果它原本是 Stopped,WSL 会自动启动它)。

最常用方式(推荐):

wsl -d <发行版名称>
# 示例
wsl -d Ubuntu-22.04
wsl -d Ubuntu-24.04

其他等效写法(功能相同):

wsl --distribution Ubuntu-22.04
wsl -d Debian
  • 第一次进入某个发行版时,它会从 Stopped → Running。
  • 如果已经是 Running,直接进入 shell(不会重复启动新实例)。
  • 如果你想以 root 身份进入(很少需要):
    wsl -d Ubuntu-22.04 -u root
    

注意:WSL 没有独立的“只启动不进入 shell”的命令。启动就是通过进入 shell 来触发的。

2. 关闭(停止/终止)某个特定发行版

关闭单个发行版(让它从 Running → Stopped),释放该发行版占用的内存/CPU,但不影响其他发行版。

推荐命令:

wsl --terminate <发行版名称>
# 简写
wsl -t <发行版名称>

# 示例
wsl -t Ubuntu-22.04
wsl --terminate Debian
  • 这个命令会立即终止该发行版内所有进程(包括后台服务),状态变为 Stopped。
  • wsl --shutdown 更好用,因为后者会一次性关掉所有发行版 + WSL2 虚拟机。

3. 关闭所有发行版(全部关掉)

如果你想一次性停止所有 WSL 实例:

wsl --shutdown
  • 这会关掉所有 Running 的发行版,并停止 WSL2 的轻量虚拟机。
  • 常用于:内存占用高、要重启 WSL 环境、更新 .wslconfig 后生效等场景。

第一次需要设置:

username
password

例如:

username: ros
password: ****

第三步:更新系统

进入 Ubuntu 终端:

sudo apt update
sudo apt upgrade

第四步:安装 ROS2

添加 ROS 软件源:

sudo apt install software-properties-common
sudo add-apt-repository universe

导入 key:

sudo apt update
sudo apt install curl -y

sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key \
-o /usr/share/keyrings/ros-archive-keyring.gpg

添加 ROS 源:

echo "deb [signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] \
http://packages.ros.org/ros2/ubuntu \
$(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/ros2.list

更新:

sudo apt update

安装:

sudo apt install ros-humble-desktop

这里安装的是完整版本:

  • ROS2
  • rviz
  • demo
  • 开发工具

第五步:配置环境变量

echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc

然后:

source ~/.bashrc

第六步:测试 ROS2

运行:

ros2 run demo_nodes_cpp talker

再开一个终端:

ros2 run demo_nodes_py listener

你会看到:

Hello World
Hello World

这就是 ROS 的 节点通信


第七步:测试 GUI

运行:

rviz2

会直接弹出窗口。

这就是 WSLg 的效果。


四、WSL 文件系统结构

WSL里的 Ubuntu:

/home/用户名

例如:

/home/ros

你的 ROS 工作空间:

~/ros2_ws

结构:

ros2_ws
 ├── src
 ├── build
 ├── install
 └── log

五、VSCode 开发 ROS2(强烈推荐)

推荐用:

Visual Studio Code

安装插件:

WSL

作用:

VSCode 安装WSL插件直接连接 WSL

效果:

Windows VSCode
      │
      └── WSL Ubuntu
              │
              └── ROS2

体验非常好。


六、WSL2 的资源结构

WSL默认资源:

  • CPU:自动
  • 内存:最大50%

如果需要手动配置:

创建文件:

C:\Users\用户名\.wslconfig

写入:

[wsl2]
memory=8GB
processors=4

七、常见 ROS2 学习路线

建议顺序:

第1阶段

ros2 第一个 python 程序

ros2 第一个 c++ 程序

ros2修改代码,实现计数器节点

基础概念:

  • Node(节点)
  • Topic(话题)
  • Service(服务)
  • Message(消息)

第2阶段

学会:

  • Python ROS2
  • C++ ROS2

第3阶段

工具:

  • RViz
  • Gazebo

Gazebo

机器人仿真。


八、WSL学习ROS2的整体架构

最终结构:

Windows 11
   │
   ├─ VSCode
   │
   └─ WSL2
        │
        └─ Ubuntu 22.04
              │
              └─ ROS2 Humble
                    │
                    ├─ rviz2
                    ├─ gazebo
                    └─ ros2 nodes
Logo

立足具身智能前沿赛道,致力于搭建全球化、开源化、全栈式技术交流与实践共创平台。

更多推荐