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

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

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

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

可以根据这篇教程安装,提醒下如果是国内用户最好换一下镜像源,更新和安装速度更快,该教程也有讲到:https://blog.youkuaiyun.com/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版本:

顺便推荐用Windows Store里面的Terminal,很好看很好用,我目前用的就是这个。然后可以根据这个教程,把Windows Terminal添加都右键菜单,并cd到指定位置:https://blog.youkuaiyun.com/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):
在这里插入图片描述
不过不用太在意,因为添加源的时候是用宏根据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://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654

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就可以了。我们可以去https://site.ip138.com/raw.githubusercontent.com/查询IP,比如最近raw.githubusercontent.com在日本的IP就是151.101.108.133.

我们把

151.101.108.133 raw.githubusercontent.com

添加到自己电脑的hosts文件里面就行,文件路径为 /etc/hosts

20210809 更新

现在上面这个方法好像不可用了,有一个很稳定的方法:可以试一下连接手机热点下载或者连接手机USB用手机当路由器

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
image-20200612160041639
Native OpenGL 取消掉

其他就一路默认然后结束。

4. 运行例程

4.1 运行小乌龟

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

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

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

$ roscore
$ rosrun turtlesim turtlesim_node
$ rosrun turtlesim turtle_teleop_key

然后在 turtlesim turtle_teleop_key 的窗口按方向键,小乌龟顺利跑起来了:

4.2 运行Rviz

完美运行,虽然稍微有点延迟和卡顿,或许是我电脑有点垃圾的原因。

4.3 运行Gazebo

完美运行
在这里插入图片描述

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.youkuaiyun.com/hanhanmaimai/article/details/78705672.

6. 参考

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

### RVIZURSimROS中的集成 对于已经在WSL(Ubuntu 18.04 LTS)上成功配置好ROS环境并能够运行RVizGazebo的情况[^2],要实现RVIZURSim的集成用于仿真可视化,主要涉及几个方面的工作。 #### 启动ROS Master节点 确保本地计算机上的ROS Master正在运行。这通常通过执行`roscore`命令来完成,在终端输入如下指令启动ROS核心服务: ```bash roscore ``` #### 配置网络通信 如果计划让RVIZ与远程服务器上的URSim实例交互,则需设置合适的ROS_MASTER_URI以及ROS_IP/ROS_HOSTNAME环境变量以便两台机器之间可以相互通信。具体操作取决于实际使用的网络环境个人偏好。 #### 加载机器人模型到参数服务器 为了使RVIZ能正确显示机械臂结构,需要先加载对应的描述文件至ROS参数服务器。假设已获取Universal Robots官方提供的ur_description包作为基础资源,可以通过下面的方式发布模型数据: ```bash roslaunch ur_gazebo upload.launch robot_ip:=<your_robot_ip> ``` 注意替换其中的 `<your_robot_ip>` 字段为真实的IP地址或者主机名。 #### 运行RVIZ工具 打开新的终端窗口,并启动RVIZ客户端程序来进行图形化界面下的监控与控制: ```bash rviz ``` 此时应该能看到默认场景;接下来按照需求调整配置选项——比如添加Display Type为RobotModel, TF等组件以增强展示效果。 #### 使用URSim模拟器 下载并安装适用于Windows平台版本的 URSim 软件之后,依据其文档指南连接到指定端口监听来自ROS的消息流。一般情况下,默认会尝试绑定localhost:30001这样的组合,但同样支持自定义更改。 一旦上述准备工作全部就绪,就可以利用Topic Tools里的Relay功能桥接不同命名空间下相同主题名称的数据传输路径了。例如创建一个名为 `/joint_states_relay ` 的转发器把关节状态信息同步给远端的服务进程处理。 ```xml <node name="joint_state_relay" pkg="topic_tools" type="relay" args="/from_ur/joint_states /to_ros/joint_states"/> ``` 以上就是关于如何基于现有的ROS开发环境中加入RVIZURSim协作开展仿真实验的大致流程介绍[^1]。
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值