WSL (Ubuntu 18.04 LTS) 安装ROS,可运行Rviz和Gazebo

WSL (Windows Subsystem for Linux) 非常好用,但是如何在里面安装ROS并成功使用呢?这篇博客会详细告诉你。

目录

  • WSL (Ubuntu 18.04 LTS) 安装ROS,可运行Rviz和Gazebo
    • 1. 安装WSL(若没有安装)
    • 2. 安装ROS
      • 2.1 确定版本
      • 2.2 添加源
      • 2.3 设置密匙Key
      • 2.4 安装
      • 2.5 环境配置
      • 2.6 安装依赖以及初始化rosdep
      • 2.7 检测
    • 3. 安装Xserver,用于WSL的图形化显示
    • 4. 运行例程
      • 4.1 运行小乌龟
      • 4.2 运行Rviz
      • 4.3 运行Gazebo
    • 5. 其他问题
    • 6. 参考

WSL (Ubuntu 18.04 LTS) 安装ROS,可运行Rviz和Gazebo

1. 安装WSL(若没有安装)

可以根据这篇教程安装,提醒下如果是国内用户最好换一下镜像源,更新和安装速度更快,该教程也有讲到:https://blog.csdn.net/kidcad/article/details/99445957?utm_medium=distribute.pc_relevant.none-task-blog-OPENSEARCH-1.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-OPENSEARCH-1.nonecase

因为现在Ubuntu已经更新到20.04 LTS focal版本了,Windows Store里面默认安装的Ubuntu是最新版也即20.04 LTS版本,如果想要安装以前的版本,那么就可以安装带版本号的版本,如下图的Ubuntu 18.04 LTS。
WSL (Ubuntu 18.04 LTS) 安装ROS,可运行Rviz和Gazebo_第1张图片
这是我目前的WSL版本:
WSL (Ubuntu 18.04 LTS) 安装ROS,可运行Rviz和Gazebo_第2张图片
顺便推荐用Windows Store里面的Terminal,很好看很好用,我目前用的就是这个。然后可以根据这个教程,把Windows Terminal添加都右键菜单,并cd到指定位置:https://blog.csdn.net/Jioho_chen/article/details/101159291

2. 安装ROS

因为这个WSL是Ubuntu 18.04 LTS,所以安装ROS的过程跟在Ubuntu 18.04 LTS上面安装是一样的,可以根据官方ROSWIKI的教程:http://wiki.ros.org/melodic/Installation/Ubuntu.,如果熟悉ROS的安装,安装完成后可以直接跳到第三节.。

2.1 确定版本

注意不同Ubuntu版本对应不同的ROS版本,18.04 bionic对应的是melodic,其他的版本对应如下(图片截取自http://wiki.ros.org/Distributions):
WSL (Ubuntu 18.04 LTS) 安装ROS,可运行Rviz和Gazebo_第3张图片
不过不用太在意,因为添加源的时候是用宏根据Ubuntu版本自动添加的。

2.2 添加源

如果是国内用户可以按照以下方法,替换国内镜像源再进行安装。

具体就是当在执行这个语句的时候(添加官方源的时候):

sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'

改为国内的源,比如中科大的镜像源:

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 sh -c '. /etc/lsb-release && echo "deb http://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu/ $DISTRIB_CODENAME main" > /etc/apt/sources.list.d/ros-latest.list'

其余都一样了。

2.3 设置密匙Key

sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116

2.4 安装

首先进行一次更新,然后一般都安装桌面完整版(Desktop-Full),除了包含ROS的基础功能(核心功能包、构建工具和通信机制)外,还包含丰富的机器人通用函数库、功能包(2D/3D感知功能、机器人地图建模、自主导航等)以及工具(rviz可视化工具、gazebo仿真环境、rqt工具箱等):

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

如果你是其他版本的Ubuntu,那么就需要替换 melodic 为其他对应版本号。

2.5 环境配置

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

2.6 安装依赖以及初始化rosdep

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

如果你在执行 rosdep init 过程中出现以下错误

ERROR: cannot download default sources list from:
https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/sources.list.d/20-default.list
Website may be down.

这是由于raw.githubusercontent.com被墙,程序无法下载相应的文件导致的。解决方法就是要使得raw.githubusercontent.com能够被正常访问。由于这个网站被墙的方式是DNS污染,所以我们只要能够找到这个网站的正确ip就可以了。

199.232.28.133 raw.githubusercontent.com

将它添加到自己电脑的hosts文件里面,文件路径为 /etc/hosts,该方法摘自https://blog.csdn.net/Bryantaoli/article/details/104730474.

2.7 检测

roscore 指令试一试是否安装成功,若出现如下则成功:

$ roscore
... logging to /home/def/.ros/log/f75f215c-b854-11ea-8eb4-54e1ad5912f7/roslaunch-DESKTOP-7MMULM3-419.log
Checking log directory for disk usage. This may take a while.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.

started roslaunch server http://DESKTOP-7MMULM3:54367/
ros_comm version 1.14.5


SUMMARY
========

PARAMETERS
 * /rosdistro: melodic
 * /rosversion: 1.14.5

NODES

auto-starting new master
process[master]: started with pid [429]
ROS_MASTER_URI=http://DESKTOP-7MMULM3:11311/

setting /run_id to f75f215c-b854-11ea-8eb4-54e1ad5912f7
process[rosout-1]: started with pid [440]
started core service [/rosout]

3. 安装Xserver,用于WSL的图形化显示

如果要在WSL上面运行图像化程序,需要安装一个Xserver,可以安装VcXsrv,链接:https://sourceforge.net/projects/vcxsrv/

安装完成后,需要在WSL里面config一下:

sudo vim ~/.bashrc

在末尾添加以下内容

export DISPLAY=:0.0
export LIBGL_ALWAYS_INDIRECT=
export LIBGL_ALWASY_SOFTWARE=1

添加 LIBGL_ALWAYS_INDIRECT= 这个很奇怪的操作是我在这个论坛讨论上看到的,很玄学的问题,不加上去就不能正常显示ROS的图形化输出。

完成后ESC再输入:wq保存退出,然后记住 source

source ~/.bashrc

在Windows下面运行XLanuch,将 Display Number 改为0
WSL (Ubuntu 18.04 LTS) 安装ROS,可运行Rviz和Gazebo_第4张图片
Native OpenGL 取消掉
WSL (Ubuntu 18.04 LTS) 安装ROS,可运行Rviz和Gazebo_第5张图片
其他就一路默认然后结束。

4. 运行例程

4.1 运行小乌龟

现在我们可以运行图形化程序了,所以就试一试经典的小乌龟。

首先确保运行了第三节的XLaunch且配置正确。

依次在不同的terminal窗口运行:

$ roscore
$ rosrun turtlesim turtlesim_node
$ rosrun turtlesim turtle_teleop_key

然后在 turtlesim turtle_teleop_key 的窗口按方向键,小乌龟顺利跑起来了:
WSL (Ubuntu 18.04 LTS) 安装ROS,可运行Rviz和Gazebo_第6张图片

4.2 运行Rviz

完美运行,虽然稍微有点延迟和卡顿,或许是我电脑有点垃圾的原因。
WSL (Ubuntu 18.04 LTS) 安装ROS,可运行Rviz和Gazebo_第7张图片

4.3 运行Gazebo

完美运行
WSL (Ubuntu 18.04 LTS) 安装ROS,可运行Rviz和Gazebo_第8张图片

5. 其他问题

关于ROS找不到package的问题:
~/.bashrc 里面添加相应路径

source /opt/ros/kinetic/setup.bash
source ~/catkin_ws/devel/setup.bash
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:~/catkin_ws/src

然后记得source一下,摘自https://blog.csdn.net/hanhanmaimai/article/details/78705672.

6. 参考

本文部分内容参考自https://janbernloehr.de/2017/06/10/ros-windows.

你可能感兴趣的:(ROS,WSL,ubuntu,linux)