WSL安装ROS-Noetic
一、安装并配置WSL
1.安装WSL
微软应用商店直接搜索Ubuntu20.04,系统会自动引导完成安装。或按官方文档使用wsl --install命令完成安装,然后到应用商店更换为ubuntu20.04版本。注意WSL默认安装在C盘,如需迁移到其他盘可参考链接
建议用win10的同学在微软应用商店搜索下载“windows terminal”,配合WSL使用。
打开终端,点击最上方的﹀按钮,可显示已安装的ubuntu发行版,如下图,点击Ubuntu 20.04.6 LTS项或按ctrl+shift+对应数字即启动WSL。
目前的安装方式都默认安装WSL2,可以在cmd中使用wsl -l -v
命令查看当前wsl的版本。
确认version为2,否则需要运行wsl --update
更新为WSL2。
2.更换apt软件源
在上文的步骤完成后,进入WSL终端,这个终端就相当于一个没有图形界面的ubuntu虚拟机,以下所有操作请在WSL终端内完成。
进入新系统后,换国内源提高apt更新的速度。这里选择更换为清华源,在终端输入sudo nano /etc/apt/sources.list
,将文件更改为以下内容:
# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
# 以下安全更新软件源包含了官方源与镜像站配置,如有需要可自行修改注释切换
deb http://security.ubuntu.com/ubuntu/ focal-security main restricted universe multiverse
# deb-src http://security.ubuntu.com/ubuntu/ focal-security main restricted universe multiverse
# 预发布软件源,不建议启用
# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-proposed main restricted universe multiverse
# # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-proposed main restricted universe multiverse
3.安装图形化界面
sudo apt update
sudo apt install ubuntu-desktop
nautilus . # 测试能否打开文件管理器
gnome-terminal . # 测试能否打开原生终端
注:目前的WSL已经自带WSLg,安装完成后就可以打开各种图形化程序。例如输入firefox打开浏览器,输入nautilus打开文件管理器,输入gnome-terminal可打开Linux原生终端,如下图,在edit-preference中可更改终端背景色、文本大小等。
不要强求图形化桌面!!!不要强求图形化桌面!!!不要强求图形化桌面!!! 一般来说WSLg已经足够满足运行各种可视化程序的需求,只是无法显示桌面,不一定非要追求像虚拟机那样把ubuntu的桌面也进行可视化。其他使用VcXsrv、xrdp等通过远程连接实现图形化桌面的方法,博主都没有尝试成功,并且可能会出现无法预料的bug,例如使用windows下的vscode打开WSL内的文件夹时,集成终端可能会无法正常定位到WSL的工作目录,需要手动cd到工作目录去,博主曾因为这个重装了WSL。
二、安装ROS
1.添加安装源
将如下命令复制到终端内执行,添加ROS安装源并设置密钥,这里使用中科大的安装源。
sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.ustc.edu.cn/ros/ubuntu/ $DISTRIB_CODENAME main" > /etc/apt/sources.list.d/ros-latest.list'
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
sudo apt update
2.安装ROS软件包
官方教程在这里,ubuntu20.04对应ROS noetic版本,在终端输入以下命令进行安装:
sudo apt install ros-noetic-desktop-full
耐心等待安装完毕,安装成功后再输入同样的命令应有如下提示。
3. 初始化rosdep
这里往往是巨坑,因为rosdep默认的更新源在国外,常常出现网络问题,即使魔法上网也可能更新失败。这里采用换国内源的方法(涉及到pip,最好在conda环境内进行),在终端输入:
sudo apt update
sudo apt install python3-rosdep2 python3-pip
sudo pip3 install 6-rosdep
sudo 6-rosdep # 运行这个python包的作用就是修改rosdep的更新源
成功后将看到如下提示:
然后再执行
sudo rosdep init
rosdep update
仍然可能出现错误
原因是清华源中index-v4.yaml的地址已经变了,我们手动在浏览器中输入https://mirrors.tuna.tsinghua.edu.cn/rosdistro/ 进去查看,发现该文件已移动到主页下
输入sudo gedit /usr/lib/python3/dist-packages/rosdistro/__init__.py
将里面的url修改为目前正确的地址,保存退出。
重新运行rosdep update
,如下图即为更新成功。
4.收尾工作
将ROS添加到环境变量方便在任何终端中使用:
echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
source ~/.bashrc
安装rosinstall
sudo apt install python3-rosinstall python3-rosinstall-generator python3-wstool
安装roslaunch
sudo apt install python3-roslaunch
最后再完整安装一遍desktop-full,原因是之前装python3-rosdep2时,apt可能会将这里面的一些包删除。
sudo apt install ros-noetic-desktop-full
5.验证是否安装完成
首先启动roscore,在任意终端中输入roscore
并执行即可。
启动海龟仿真器,输入
rosrun turtlesim turtlesim_node
按ctrl+shift+对应数字新建一个WSL终端,或输入gnome-terminal打开内置终端(内置终端中再按 ctrl+shift+t 可以比较方便地打开新终端,比较符合ubuntu的操作习惯),在新建的终端中输入
rosrun turtlesim turtle_teleop_key
此时应能正常出现可视化界面,按键盘的方向键可以控制海龟移动。
启动rviz,在终端中输入rviz
并执行,可正常弹出rviz的界面,与windows无缝集成。
到这里WSL的ROS环境就安装成功了!