【WSL2 学习日志】实现Ubuntu20.04 ROS2_foxy 在win11下的WSL2虚拟化
一. 为什么使用WSL2虚拟而不是VMware 或者 Orical Virtualbox
- 因为这个VMware不够轻量化
- Vmware无法调用显卡配置,而在我的项目中需要用独立显卡来渲染gazebo
二. 如何实现
1. 硬件配置要求
windows11 或者 windows 10 版本 2004 及更高版本(内部版本 19041 及更高版本)
2. 学习教程
- Microsoft Learn 官方学习WSL教程
- sandonz 关于【WSL Ubuntu20.04 与其图形界面安装配置】 应用该教程可以实现windows自带的远程桌面连接服务,虽然较为卡顿但是效果显著(这里注意一下 该教程的换源对于20.04来说特别好用,一定要及时更换该教程里的源,在我之前使用ubuntu22.04上就是换源问题一直困扰)
- 董酷酷_Windows电脑如何开启CPU虚拟化
3.实践过程
3.0 基础设置
在“开始”中搜索 启用或关闭windows功能
将以下涉及到的选项全都点击选中,要注意Hyper-V可能无法全部选中,要在BIOS中修改开启CPU虚拟化功能,具体操作看董酷酷_Windows电脑如何开启CPU虚拟化开启Hyper-V这一步很重要,如果不开启的话 后续就无法升级WSL2,会导致很多bug而且ROS2中的rviz2以及rqt_graph等就无法在windows界面上开启。(当然了,届时必须下载python Qt-5才可以打开这些界面)
3.1 下载安装windows subsystem for Linux (wsl) 和 ubuntu 20.04
3.1.1
直接在PowerShell或者CMD里输入
wsl --intsall
输入
wsl --list --online #查看可下载的Linux版本
wsl --install -d Ubuntu-xx.xx #下载对应需要的Ubuntu版本,我选择熟悉的Ubuntu-22.04
也可以在应用商店里直接下载Ubuntu
下载完打开Ubuntu20.04
可能会出现一些错误,这个时候直接把wsl
换成1,命令如下
wsl --set-version 1
,再打开Ubuntu20.04
就会出现等待几分钟(Wait for a few minutes)
等到出现要求我们输入账号密码的时候就证明配置好了,相比起双系统 这种安装Ubuntu的方式真的快了很多倍。
3.2 将WSL更换为WSL2
PS:如果不打开Hpyer-V的所有选项,这一步是不能完成的,会导致以下几个问题:
- 无法在
windows
界面上看到rqt_graph
或者rviz2
等可视化界面- ROS的不同terminal之间的联系好像也断开了,本人尝试过在一个windows terminal标签页里打开
source /opt/ros/foxy/setup.bash ros2 run demo_nodes_py talker
在另外一个标签页里打开
source /opt/ros/foxy/setup.bash ros2 run demo_nodes_py listener
他们两个节点之间是没有通信的,而且
rqt_graph
也没有节点图
很简单,在打开Hyper-V后在windows terminal
里改
wsl -l -v
wsl --set-default-version 2
#或者针对某个Linux
wsl --set-version Ubuntu-xx.xx 2
3.3 修改WSL2占用的内存,可以降低WSL出现蓝屏的可能
3.4 安装ROS foxy
说在前头:由于我们在前面的工作中把源换好了接下来可以直接安装ROS了
最标准的安装方法直接参照ROS官网的安装方法ROS foxy Installation
安装完毕后就可以尝试source /opt/ros/foxy/setup.bash ros2 run demo_nodes_py talker
source /opt/ros/foxy/setup.bash ros2 run demo_nodes_py listener