windows使用wsl2+ubuntu20.04安装ROS1的步骤

1.首先确保电脑CPU能虚拟化并且打开如下功能

2.安装wsl2与ubuntu20.04

2.1安装WSL2

  • 在power shell里输入wsl–install,安装完成后显示`适用于 Linux 的 Windows 子系统已安装
  • 输入wsl.exe –update,进度条完成后即可
1
2
wsl --install
wsl.exe --update

2.2安装Ubuntu20.04

  • 直接在store安装,选择20.04版本
  • 安装完成后,打开终端输入
1
wsl -l -v

看是否有如下输出

注意:如果VERSION显示的是1.那么输入以下命令将wsl1切换成wsl2

1
wsl --set-version Ubuntu-20.04 2 
  • 切换成功后,在终端打开Ubuntu20.04

    首次登录要输入用户和密码,打开后显示

    安装完成

3.安装ROS

3.1必要准备

  • 在命令行输入以下命令,修改镜像
1
sudo vim etc/apt/sources.list
  • 输入ggdG删除原本镜像源
  • 粘贴中科大镜像源
1
2
3
4
deb https://mirrors.ustc.edu.cn/ubuntu/ focal main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ focal-security main restricted universe multiverse

  • 输入wq保存退出
  • 在终端输入中科大的安装镜像源
1
sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.ustc.edu.cn/ros/ubuntu/ `lsb_release -cs` main" > /etc/apt/sources.list.d/ros-latest.list'

**

  • 设置key
1
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654

  • 更新apt
1
sudo apt update

这里出现网络问题

解决办法

  • 1.在ubuntu中执行
1
sudo vim /etc/wsl.conf

在wsl.config文件中另外加入

1
2
[network]
generateResolvConf = false
  • 2.删除并手动创建 /etc/resolv.conf
1
2
sudo rm /etc/resolv.conf
sudo vim /etc/resolv.conf
  • 3.写入
1
2
nameserver 223.5.5.5
nameserver 119.29.29.29
  • 4.重启wsl,在powershell里输入wsl – shutdown重启
    更新成功

3.2安装ROS

  • 输入命令,安装可能费时
1
sudo apt install ros-noetic-desktop-full
  • 注意,笔者并没有遇到安装不上问题,不知道是运气好还是啥,测试过很多次,都是一次成功
  • 配置环境变量
1
2
echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
source ~/.bashrc
  • 安装依赖
1
sudo apt install python3-rosdep python3-rosinstall python3-rosinstall-generator python3-wstool build-essential

3.3初始化

1
2
sudo rosdep init
rosdep update

如下输出则安装成功

4.测试ROS

  • 打开三个终端
  • 每个终端分别输入
1
2
3
4
5
6
7
roscore(启动核心)


rosrun turtlesim turtlesim_node(测试小乌龟界面节点)


rosrun turtlesim turtle_teleop_key(测试控制小乌龟运动节点)

roscore

rosrun turtlesim turtlesim_node

rosrun turtlesim turtle_teleop_key:

将光标移动到执行key的终端,通过方向键控制小乌龟的行动

测试完成