Ubuntu18.04 LTS安装ROS Melodic过程详录
Ubuntu18.04 LTS安装ROS Melodic过程详录
最近正在学习ROS,在家里的win10系统的台式机上安装了Ubuntu18.04 LTS的双系统,现在准备在Ubuntu 18.04上安装ROS,对应的ROS版本为Melodic Morenia,。我安装时最初是打算参照ROS官方安装教程,但是看了一遍感觉有点乱,又参考了CSDN上一些大神的博客(主要是Ubuntu18.04安装ROS Melodic(详细填坑)),安装过程也出现了一些小问题,这里按照我的实际安装过程记录下来作为个人经验总结。
1.调整Ubuntu镜像源
在安装之前先将Ubuntu的镜像源调为国内镜像源,这一步是为了让接下来的下载过程中使用中国的服务器,加快下载速度。从桌面左下角“显示应用程序”-》“软件与更新”,配置Ubuntu允许universe、restricted、multiverse这三种安装模式,并把软件源更改为清华大学的源(中国科技大学USTC也行)。
2.添加source.list
这一步配置将镜像添加到Ubuntu系统源列表中,这里使用清华的镜像源。
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'
3.添加秘钥
添加秘钥到本地的trusted数据库中并加以验证:
sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116
若密钥服务器hkp://ha.pool.sks-keyservers.net:80无法添加成功,则可以尝试hkp://pgp.mit.edu:80或者hkp://keyserver.ubuntu.com:80,我安装时用的是hkp://keyserver.ubuntu.com:80。
在更新之前,需要安装公钥,否则无法验证签名,这一步有的教程上有有的教程上没有,保险起见我也照着做了,命令如下:
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys F42ED6FBAB17C654
也可以直接去看官方秘钥
4.更新列表
更新Ubuntu 18.04 LTS的最新可用软件包列表:
sudo apt update
5.开始安装
下面开始安装ROS,推荐安装桌面完整版,这样就可以将ROS、rqt、rviz、机器人通用库、2D/3D仿真器、导航、2D/3D感知等功能一次性安装完成。
安装之前,需要安装其他依赖库,一次性安装如下:
sudo apt install libvtk6-jni libvtk6-java libvtk6-dev libvtk6-qt-dev libpcl-dev
sudo apt install ros-melodic-pcl-conversions ros-melodic-pcl-ros ros-melodic-perception-pcl ros-melodic-perception
PS:我在安装时这些依赖库是一个一个安装的,因为网络不稳定,一次性安装容易报错。
最后终于开始安装ROS Melodic,方法如下:
sudo apt install ros-melodic-desktop-full
如果希望安装特定的ROS程序包,则可以首先查看当前可用的程序包列表,然后选择自己需要的程序包进行安装,这里暂且不提。
6.安装核心组件rosdep
开始使用ROS之前,还需要安装rosdep,rosdep是ROS一些核心组件的运行基础,会在编译ROS源码时检查和安装程序包依赖。安装ROS方法如下:
sudo rosdep init
# fix-permission限制权限为当前用户
sudo rosdep fix-permissions
# 可能由于网络原因会失败,多运行几次即可
rosdep update
1)这里在执行sudo 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,可参考博客解决sudo rosdep init和rosdep update的错误解决,主要是在hosts中修改IP地址,特别需要注意的是这里要编辑hosts需要先切换至root,不然权限不够会报错。
sudo -i
切换至root后,直接在终端输入:
sudo gedit /etc/hosts
然后再打开的hosts文档最后增加一行内容:
151.101.76.133 raw.githubusercontent.com
此时仍然可能有gedit警告:
**(gedit:4287):警告**:01:27:40.477:设置文档元数据失败:设置属性元数据::不支持gedit拼写语言
**(gedit:4287):警告**:01:27:40.478:设置文档元数据失败:设置属性元数据::不支持gedit编码
**(gedit:4287):警告**:01:27:43.365:设置文档元数据失败:设置属性元数据::不支持gedit位置
这些只是警告,基本上可以无视,如果实在忍受不了,在终端输入下面的指令可以消除:
sudo -H gedit /some/where/file.txt &>/dev/null
2)执行rosdep update时报错(超时),
reading in sources list data from /etc/ros/rosdep/sources.list.d
Hit http://github.com/ros/rosdistro/raw/master/rosdep/osx-homebrew.yaml
ERROR: unable to process source [http://github.com/ros/rosdistro/raw/master/rosdep/base.yaml]:
<urlopen error _ssl.c:489: The handshake operation timed out> (http://github.com/ros/rosdistro/raw/master/rosdep/base.yaml)
ERROR: error loading sources list:
The read operation timed out
参照rosdep update 一直失败问题试了试,文中提到了4种方法,其中台式机没法连手机4G热点,发现更换源基本没啥用,增加timeout时间也只是稍微提高了成功的几率,还是连续好几次失败。折腾了1个多小时,发现这个问题真的是玄学,在尝试了十几次之后终于成功,人品不好就耐心点吧!
7.配置ROS环境变量
默认情况下,ROS_HOME的路径为"~/.ros",该目录保存着日志文件和测试结果文件。另外,第一次启动ROS时,需要进行环境变量配置,命令如下:
echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
source ~/.bashrc
查看环境变量是否设置正确,命令如下:
env | grep ROS
我运行时查看环境变量结果如下,可以对照检查一下:
ROS_ETC_DIR=/opt/ros/melodic/etc/ros
ROS_ROOT=/opt/ros/melodic/share/ros
ROS_MASTER_URI=http://localhost:11311
ROS_VERSION=1
ROS_PYTHON_VERSION=2
ROS_PACKAGE_PATH=/opt/ros/melodic/share
ROSLISP_PACKAGE_DIRECTORIES=
ROS_DISTRO=melodic
至此,ROS的核心程序包安装完毕。
8.安装rosinstall
为了构建和管理开发者自己的ROS工作空间,还需要安装编译依赖,方法如下:
sudo apt-get install python-rosinstall python-rosinstall-generator python-wstool build-essential
成功安装后,就可以体验ROS和创建ROS应用了。
9.小海龟测试
打开第一个终端:
roscore
利用Ctrl+Shift+T快捷键打开第二个终端:
rosrun turtlesim turtlesim_node
此时会出现一个画布,画布中有一只小海龟,此时小海龟还不会动。
继续打开第三个终端,
rosrun turtlesim turtle_teleop_key
此时在当前终端下,可以通过键盘上的方向键控制小海龟移动。