前置条件

本教程推荐使用WSL2+WSLg图形化的方式运行ROS及其GUI程序,根据微软官方的要求,最低系统配置如下:

安装WSL2

确认系统版本

Windows 11

支持WSL2

支持WSLg

Windows 10 2004
或更高版本

支持WSL2

支持WSLg

Windows 10 1903/1909
并且安装了 KB4566116

支持WSL2

不支持WSLg

如果你正在使用Windows10 1903/1909,需要使用其他方法来实现WSL的GUI显示,可参考:

https://blog.csdn.net/qq_44554428/article/details/109472954

如果你使用的是更旧的Windows10版本,请考虑安装新版本系统,或转而使用虚拟机。

启用WSL、虚拟机平台

以管理员身份启动Powershell,运行以下代码

适用于Windows11/Windows10(2004+)

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

适用于Windows10(1903/1909)

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform -NoRestart

正确执行如图所示

重新启动系统以确保功能被安装

测试WSL是否已安装并切换默认版本

打开cmd/Powershell,使用命令wsl,如果功能正常,应当显示

使用命令来更改WSL默认版本到WSL2

wsl --set-default-version 2

正常运行结果:

更新WSL2 Linux内核

打开WSL2 Linux内核更新包并安装,一路next就好。

(如果找不到,从https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi下载)

安装完成后如上图所示。

安装Ubuntu子系统

如果你需要安装ROS Melodic,则需要安装Ubuntu18.04,

如果需要ROS Neotic,则需要Ubuntu20.04

方法一:Microsoft Store直接安装

安装后,在开始菜单中打开这个程序,就会进行系统的安装。

方法二:下载离线AppxBundle手动安装

下载离线安装包

进入https://store.rg-adguard.net/,输入从Microsoft Store获得的商店链接:

手动安装

在下载文件夹内打开Powershell窗口,使用以下命令安装:

Add-AppPackage .\CanonicalGroupLimited.Ubuntu18.04LTS_1804.6.4.0_neutral_~_79rhkp1fndgsc.appxbundle

之后就会在开始菜单内看到一个程序快捷方式,打开即可安装系统。

确认当前运行的是WSL2

一些情况下,可能运行的是WSL1而不是WSL2,为了后面的无缝GUI运行WSL中的程序,需要确认当前运行的是WSL2:

wsl -l -v

如果看到Version为1,就需要进行转换:

wsl --set-version Ubuntu-18.04 2

其中Ubuntu-18.04是之前列表中显示的WSL子系统名称,2代表转换为WSL版本2。

更新WSL内核

为了后面能正常使用WSLg,必须更新WSL内核

wsl --update

Ubuntu系统简单配置

刚装好的系统还需要一些配置,不能直接安装ROS。

更换国内镜像源

修改Ubuntu的软件包源为USTC,也可以使用其他任何你喜欢的国内镜像源(以下命令通用现代Ubuntu发行版):

sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
sudo sed -i 's@//.*archive.ubuntu.com@//mirrors.ustc.edu.cn@g' /etc/apt/sources.list

修改完成后,执行软件源缓存更新和软件包更新:

sudo apt update
sudo apt upgrade -y

检查GUI环境

微软推出的WSLg可以让WSL2子系统的GUI应用程序以窗口化的形式无缝运行在Windows中,就像原生Windows程序一样,可以在任务栏中看到它的图标,切换多任务等等。

接下来,我们安装一个简单的GUI程序:GEdit(Ubuntu中常见的文本编辑器,桌面版自带,但WSL不会自带,需要安装)

sudo apt update
sudo apt install gedit

然后,直接输入gedit回车,就会发现这个Linux程序已经以窗口化的形式运行在你的Windows上了:

安装ROS

ROS Melodic为例(基于Ubuntu18.04),官方教程:

https://wiki.ros.org/melodic/Installation/Ubuntu

添加软件源、密钥

sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
sudo apt install curl # if you haven't already installed curl
curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -

安装ROS软件包

sudo apt update
sudo apt install ros-melodic-desktop-full

此过程需要安装非常多的软件包,需要耐心等待。

如果出现这样的下载缓慢问题,可能是上网方式不够科学导致的。

如果你拥有一只蓝色小猫咪,可以尝试让它进入隧道(TUN),这样是最方便快速的方式。

配置ROS环境

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

安装ROS依赖

sudo apt install python-rosdep python-rosinstall python-rosinstall-generator python-wstool build-essential
sudo rosdep init
rosdep update

此过程同样需要科学的上网方式,否则容易出错。正确输出如下:

测试ROS小乌龟(Turtlesim)

开三个终端界面,分别执行下面三条命令:

roscore
rosrun turtlesim turtlesim_node
rosrun turtlesim turtle_teleop_key

如果你使用的是新版本Windows Terminal,可以直接点击下拉菜单快速打开WSL的终端。

在最后一个终端中,使用方向键就可以控制Turtlesim中小乌龟的移动了(←/→转向,↑/↓前后移动)

如果正常运行,那么代表你的ROS环境已经安装完成,恭喜~