初学ROS,第一步的install是必然经历的,无论是基于虚拟机还是双系统。具体的安装步骤在网上可以很方便的找到,
如ROS wiki http://wiki.ros.org/melodic/Installation/Ubuntu,
又或者古月居的ROS入门21讲等,b站有详细的讲解视频https://www.bilibili.com/video/BV1zt411G7Vn?p=5
现以 Ubuntu18.04+ROS Melodic为例说明。
1、ROS安装步骤
(1) 配置Ubuntu的源和库
选中 main universe restricted multiverse 4项,并将下载源改为国内的,如aliyun、清华源等
2、设置sources.list
命令行执行如下命令
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
3、设置密钥
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
4、正式安装,建议安装桌面完整版 ros-xxx-desktop-full
sudo apt update
sudo apt install ros-melodic-desktop-full
5、配置环境变量,可以避免每次手动执行setup.bash,非常方便
echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
source ~/.bashrc
6、依赖包安装,如rosinstall和其他依赖包。rosinstall是一个常用的命令行工具,它使您能够用一个命令轻松地下载ROS包的许多源代码树
sudo apt install python-rosdep python-rosinstall python-rosinstall-generator python-wstool build-essential
7、rosdep的初始化
在使用许多ROS工具之前,需要初始化rosdep。rosdep使您能够轻松地为要编译的源代码安装系统依赖项,并且是在ROS中运行某些核心组件所必需的。
如果您尚未安装rosdep,请按以下步骤进行安装。
sudo apt install python-rosdep
初始化rosdep
sudo rosdep init
rosdep update
截止到以上的操作步骤,是根据ROS Wiki中Ros Melodic安装说明一步步COPY过来的,执行 sudo rosdep init之前没有任何问题,亲身验证!!!
但执行 sudo rosdep init,出现了问题,相信大家在安装时基本都会遇到,下面总结一下这里安装的方法,这也是 本文的重点。
20-default.list无法下载,由于访问的网址涉及到翻墙的内容,经常会出现如下的错误,raw.githubusercontant.com无法连接。
针对这个问题,网上也搜到了很多的相关博客文章,基本分为三大类:
7.1 使用手机热点的方式 ,使用此方式在下载安装包的时候确实会有速度的提升,但是对于rosdep init的问题,我用这种方法没有解决(PS:我的是移动卡,不确定电信、联通卡的效果)
7.2 修改 /etc/hosts 文件,重新映射 raw.githubusercontant.com 的IP地址
执行这个方法,首先需要查询raw.githubusercontant.com 对应的真实IP地址,可以借助 https://www.ipaddress.com/ 网站
修改 hosts文件
使用这种方式在虚拟机上安装时,有一次成功的例子。后来安装双系统,再用这种方式安装ROS,得到的又是一次次的失败......
安装ROS真的是对忍耐力极大的考验,庆幸我的电脑没别砸坏。
7.3 把ROS包下载到本地安装,这个方法拯救了我!
sudo rosdep init 是要从
https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/sources.list.d/20-default.list 下载20-default.list文件到本地
rosdep update 则是根据20-default.list
解析相关的文件。
因此直接从github拿来ros发行包 https://github.com/ros/rosdistro,并将其中涉及到 raw.githubusercontant.com 的路径替换为本地路径:
(1) 20-default.list (在rosdistro-master/rosdep/sources.list.d/),修改如下
(2)rep3.py (在/usr/lib/python2.7/dist-packages/rosdep2),修改如下
(3)sources_list.py (在/usr/lib/python2.7/dist-packages/rosdep2),修改如下
(4)__init__.py (在/usr/lib/python2.7/dist-packages/rosdistro),修改如下
(5) 另外,在完成以上修改并执行 sudo rosdep init 过程中,可能会出现语法错误
根据错误提示,把 from __future__ imports xxx的语句放到 文件的最前面 (包含注释)
最后执行 sudo rosdep init && rosdep update 成功:
8、安装验证
8.1 命令行输入 ros,按两次tab键,会出现所有ros字母开头的指令,表示安装成功
8.2 执行验证程序:看到小乌龟,至此ROS 全部安装成功!!