前言
在 Windows 系统中搭建 ROS 或 ROS2 开发环境,往往是开发者的 "入门拦路虎":直接安装不仅需要手动配置一系列复杂的环境变量,还要解决 Windows 编译工具链与 ROS 依赖的兼容问题,部分依赖 Linux 内核的底层功能甚至无法正常启用,后续版本升级或环境迁移时,还容易出现配置错乱的情况,整体流程繁琐且容错率低。
相比之下,借助 WSL(Windows Subsystem for Linux)安装轻量化 Ubuntu 发行版来部署 ROS/ROS2,堪称更优雅的解决方案。这种方式无需跨系统适配,可直接沿用 Ubuntu 生态中成熟的 ROS 安装命令和流程,一键完成环境搭建;同时通过简单配置 X Server(Windows 11 用户更可享受 WSLg 原生支持),rviz 可视化工具、Gazebo 仿真环境等图形化组件都能流畅运行,完全覆盖开发与仿真的核心需求。
-
对比直接安装:告别繁琐配置,降低适配成本
直接在 Windows 安装 ROS 需攻克环境变量配置、工具链适配、版本兼容三大难关,且部分功能存在天然限制;而 WSL 内的 Ubuntu 环境可原生支持 ROS,无需额外适配,安装流程与纯 Linux 系统完全一致,大幅减少踩坑概率。
-
对比虚拟机:更轻量高效,无缝互通
虚拟机需要提前分配固定硬件资源,不仅启动缓慢、占用系统资源多,还存在 Windows 与虚拟机间文件传输繁琐的问题;WSL 无需预设资源,启动秒级响应,资源占用更精简,同时能直接访问 Windows 本地文件系统,代码、数据跨环境传输无需额外操作,开发效率更高。
-
对比双系统:无需切换,兼顾生态
双系统虽能提供纯 Linux 体验,但需提前进行磁盘分区、配置引导程序,且切换环境必须重启电脑,无法同时利用 Windows 和 Linux 的软件生态;WSL 可在 Windows 系统内直接运行 Ubuntu 环境,无需重启即可随时切换开发场景,既能享受 ROS 完整功能,又能借助 Windows 软件辅助开发(如用熟悉的编辑器写代码、用办公软件整理文档),兼顾便捷性与功能性。
综上,WSL 搭建的 ROS 开发环境,既规避了直接安装的适配难题,又弥补了虚拟机、双系统在效率和便捷性上的短板,是 Windows 用户入门 ROS 开发的最优解之一。
1. 安装WSL
启用 WSL 功能(Windows 端)
首先需要在 Windows 中开启 WSL 相关组件,这是运行 Linux 子系统的基础:
1.1. 打开"启用或关闭 Windows 功能" (如下图所示,三个选项都建议勾选)
- 按下
Win + R键,输入optionalfeatures.exe并回车。 - 在弹出的窗口中,勾选以下选项:
- ✅ Hyper-V
- ✅ 适用于 Linux 的 Windows 子系统
- ✅ 虚拟机平台(WSL 2 依赖此组件,Windows 10 需手动勾选,Windows 11 可能默认包含)
- 点击"确定",等待组件安装完成后,重启电脑。

1.2. 设置 WSL 2 为默认版本
以管理员身份打开 PowerShell,如下图所示找到 PowerShell 后右键,以管理员身份打开

1)升级 WSL 到最新版本
c
wsl --update
2)在 powershell 中设置 WSL 默认版本,这里使用 WSL 2,其基于 Hyper-V 虚拟机技术,性能优于 WSL 1,且支持 ROS 图形化工具
c
wsl --set-default-version 2
1.3 安装 Ubuntu 发行版
第一种方式可以从 Microsoft Store 安装 Ubuntu,但是由于国内网络限制,经常遇到打不开 Microsoft Store,因此推荐使用下面第二种方法。
第二种方式如下:
1)查看 WSL 支持的 Linux 发行版。打开 PowerShell(管理员模式),执行以下命令列出可安装的发行版:
c
wsl --list --online
执行后会显示类似如下的支持列表(包含发行版名称和别名):
以下是可安装的有效分发:
NAME FRIENDLY NAME
Ubuntu Ubuntu
Debian Debian GNU/Linux
kali-linux Kali Linux Rolling
openSUSE-42 openSUSE Leap 42
SLES-12 SUSE Linux Enterprise Server v12
Ubuntu-16.04 Ubuntu 16.04 LTS
Ubuntu-18.04 Ubuntu 18.04 LTS
Ubuntu-20.04 Ubuntu 20.04 LTS
Ubuntu-22.04 Ubuntu 22.04 LTS
如果安装ROS,推荐选择 Ubuntu 20.04 LTS,自己试了 22.04 和 24.04 两个版本,安装有点麻烦;
如果安装ROS2,随意选择。
2) 通过命令安装指定版本的 Ubuntu。在 PowerShell (管理员模式)中执行安装命令:
若安装 Ubuntu 20.04,则输入
c
wsl --install -d Ubuntu-20.04
若安装 Ubuntu 22.04,则输入
c
wsl --install -d Ubuntu-22.04
若安装 Ubuntu 24.04,则输入
c
wsl --install -d Ubuntu-24.04
- 命令说明:-d 参数指定发行版(需与 wsl -l -o 列出的名称完全一致)。
- 安装过程:系统会自动下载并部署对应版本的 Ubuntu(约 500MB,需联网),无需手动操作。
- 若之前已安装过其他 WSL 发行版,执行该命令会新增安装指定版本,不会覆盖原有环境。
3)初始化 Ubuntu 并设置账户
安装完成后,系统会自动启动 Ubuntu 初始化流程,或手动在开始菜单中找到并打开 "Ubuntu 20.04 LTS "/"Ubuntu 22.04 LTS "/"Ubuntu 24.04 LTS " 应用:
首次启动会进行系统配置(约 1-2 分钟,耐心等待)。
按提示设置 Linux 用户名 和 密码(输入时无字符显示,输完按回车确认,后续使用 sudo 需输入此密码)。
设置完成后,即可进入 Ubuntu 命令行界面,说明安装成功。
2. 安装 ROS
参照 官方 ROS Wiki 上面的教程安装ROS即可。
一些基础、常用的的 WSL 命令如下,建议在 PowerShell 输入:
- 输入
wsl -d Ubuntu-24.04,即登录 Ubuntu 的命令行,记得后面的 24.04 要改成你自己安装的系统版本 - 如果仅安装了一个 WSL 系统,则可以只输入
wsl进入系统 - 在 WSL 的 Ubuntu 中,输入
exit即可退出,返回 Windows 的 PowerShell wsl --shutdown关闭后台运行的 Ubuntu 系统
下面是 rviz展示

下面是 gazebo展示

到此就可以结束了。
但是因为个人习惯用 vscode 来写代码,因此记录下如何使用 Windows 下的 vscode 来编辑 WSL 系统下的代码,详见下一节。
3. Vscode 编程(可选)
1)Windows 上安装 vscode ,过程跳过
2)打开安装好的 vscode ,在 vscode 的拓展中输入wsl搜索安装 WSL 插件

3)安装完插件后,进入 WSL 中的系统,然后在你想要打开的文件夹对应的路径下,输入 code .,如此就可以在 Windows 下的 vscode 中编译代码了。

2)如果想打开 WSL 中系统的命令窗口,可以如下图操作,就可以直接打开 WSL 中系统下的命令窗口。这种方式比较快捷,不像通过 PowerShell 进入那么麻烦。

4. 修改主机名(强迫症)
WSL 安装系统的时候会从 Windows 继承主机名,例如 lanx@WIN-QARU3HPPVI9 ,**@**前面的是用户名,后面的是主机名,不想要这一长串的话可以按照下面方式进行修改:
1)修改 /etc/wsl.conf
c
sudo nano /etc/wsl.conf
然后输入下面内容,lan 换成你自己想要的主机名,然后按 ctrl+s保存,再按 ctrl+x退出编辑。
c
[network]
hostname = lanx # 强制设置 WSL 的主机名为 lanx
generateHosts = false # 禁用自动生成 /etc/hosts 文件(避免覆盖)
2)修改 /etc/hosts
c
sudo nano /etc/hosts
里面的内容如下,把其中原来旧的主机名 WIN-QARU3HPPVI9 全部改成你想要修改的主机名。
原始内容为:
c
127.0.0.1 localhost
127.0.1.1 WIN-QARU3HPPVI9.localdomain WIN-QARU3HPPVI9
127.0.0.1 localhost.sangfor.com.cn
比如我的主机名 lanx,修改后成为:
c
127.0.0.1 localhost
127.0.1.1 lanx.localdomain lanx
127.0.0.1 localhost.sangfor.com.cn
3)退出 WSL 的系统
c
exit
然后关闭系统,重新进入 WSL 的系统
c
wsl --shutdown
wsl
重新进入后即可看到已经修改成功
5. WSL 使用 Windows 的网络
参考博客 在 WSL2 中使用 Windows 的网络连接。