Ubuntu 16.04安装ROS-安装的是ros1

本文的配置是ubuntu16.04,安装的是ROS Kinetic Kame。

1. 配置Ubuntu软件仓库(configure your ubuntu repositories)
配置Ubuntu 软件仓库(repositories) 安装模式(开启"restricted"、"universe" 和 "multiverse"这三种)

Ubuntu 16.04安装ROS-安装的是ros1_第1张图片

2.
(1) 添加源(setup your sources.list)
新建一个terminal(控制台),输入以下命令:
用了第三个科大的源成功了。

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 'echo "deb https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
sudo sh -c 'echo "deb http://mirrors.ustc.edu.cn/ros/ubuntu/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'

(2) 添加秘钥(set up your keys)

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

 报错:

Ubuntu 16.04安装ROS-安装的是ros1_第2张图片

 解决:

    导入

gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 988C2166

gpg: 下载密钥‘988C2166’,从 hkp 服务器 keyserver.ubuntu.com
gpg: 密钥 988C2166:公钥“Daniel Kiper ”已导入
gpg: 需要 3 份勉强信任和 1 份完全信任,PGP 信任模型
gpg: 深度:0 有效性:  1 已签名:  0 信任度:0-,0q,0n,0m,0f,1u
gpg: 合计被处理的数量:1
gpg:           已导入:1  (RSA: 1)

    加入

sudo gpg --armor --export 988C2166 | sudo apt-key add -

OK

(3) 更新package

sudo apt-get update

    错误

W: GPG 错误:http://packages.ros.org/ros/ubuntu xenial InRelease: 由于没有公钥,无法验证下列签名: NO_PUBKEY F42ED6FBAB17C654
W: 仓库 “http://packages.ros.org/ros/ubuntu xenial InRelease” 没有数字签名。
N: 无法认证来自该源的数据,所以使用它会带来潜在风险。
N: 参见 apt-secure(8) 手册以了解仓库创建和用户配置方面的细节。

    解决

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys F42ED6FBAB17C654
# 注意:最后的码,根据不同的电脑进行修改,即F42ED6FBAB17C654和上面对应

(4) 安装ROS kinetic完整版

sudo apt-get install ros-kinetic-desktop-full

(5) 初始化rosdep
在使用ROS之前必须要初始化rosdep

sudo rosdep init
rosdep update

参考:

rosdep init ROS安装问题解决方案 - 古月居

ros 中ERROR: cannot download default sources list from: https://raw.githubusercontent.com/ros/rosdist_李德龙杰的博客-CSDN博客

 Ubuntu16.04 安装ROS Kinetic_Wwwilling的博客-CSDN博客

问题简述

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.

于是试着通过浏览器访问error中提及的网址:浏览器启动发现网址都无法打开,于是尝试以下代码,ping一下这个网址

ping raw.githubusercontent.com

发现其实通过终端ping的方式,我们是可以访问上述网页地址的

于是在安装好ROS的电脑上翻看了相关文件,发现在/etc/ros/rosdep/sources.list.d文件目录下有一个名称为20-default.list文件,通过对比发现,该文档的内容与error返回网址的内容一致,于是笔者猜测sudo rosdep init为链接上述网址,下载相关文件(20-default.list)到上述目录中,并且通过rosdep update访问该文件中的相关地址,下载相关文件。

解决方案
解决方案0x01

如果你正遇到这个问题,那么第一个解决方案就是,更换网络,你可以尝试使用你的手机热点,然后继续尝试以下指令,如果你成功了,那么你可以结束本文章的阅读,当然欢迎你继续阅读。

sudo rosdep init
rosdep update

解决方案0x02

该解决方案是针对由于以下两个无法正常访问,但可以ping通,于是修改hosts文件,加入以下两个网址的IP地址实现访问。

sudo gedit /etc/hosts

199.232.28.133 raw.githubusercontent.com
151.101.228.133 raw.github.com

修改完成后,在终端执行

sudo rosdep init
rosdep update

解决方案0x03

如果使用解决方案0x01仍然无法解决你的问题,那么你可以尝试以下步骤,此解决方案的原理是基于手动完成sudo rosdep init的步骤,然后再通过rosdep update完成整个方案的实施。 步骤一:首先打开一个终端,执行以下指令创建root并切换至root用户

sudo passwd    //接着提示输入UNIX密码,输入你的用户密码即可
sudo su //或者su root 然后输入密码切换至root用户
sudo mkdir -p /etc/ros/rosdep/sources.list.d
cd /etc/ros/rosdep/sources.list.d
sudo gedit 20-default.list

步骤二:将以下内容复制进20-default.list文件中

# os-specific listings first
yaml https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/osx-homebrew.yaml osx
 
# generic
yaml https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/base.yaml
yaml https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/python.yaml
yaml https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/ruby.yaml
gbpdistro https://raw.githubusercontent.com/ros/rosdistro/master/releases/fuerte.yaml fuerte
 
# newer distributions (Groovy, Hydro, ...) must not be listed anymore, they are being fetched from the rosdistro index.yaml instead

步骤三:执行以下指令

exit //退出root用户
rosdep update

如果你成功了,那么你可以结束本文章的阅读,当然欢迎你继续阅读。 但也许你会遇到如下图所示的问题,发现20-default.list中的地址都无法连接,此时你可以将20-default.list中的内容替换如下,即将raw.githubusercontent.com替换为raw.github.com后保存文件,在终端中执行

rosdep update

如果你成功了,那么你可以结束本文章的阅读,当然欢迎你继续阅读
Ubuntu 16.04安装ROS-安装的是ros1_第3张图片

# os-specific listings first
yaml https://raw.github.com/ros/rosdistro/master/rosdep/osx-homebrew.yaml osx
 
# generic
yaml https://raw.github.com/ros/rosdistro/master/rosdep/base.yaml
yaml https://raw.github.com/ros/rosdistro/master/rosdep/python.yaml
yaml https://raw.github.com/ros/rosdistro/master/rosdep/ruby.yaml
gbpdistro https://raw.github.com/ros/rosdistro/master/releases/fuerte.yaml fuerte
 
# newer distributions (Groovy, Hydro, ...) must not be listed anymore, they are being fetched from the rosdistro index.yaml instead

步骤四:番外篇 也许执行完上述步骤,你在终端中收到的信息,仍然是连接被拒绝,或者时间超出导致中断,此时你可以执行以下指令
Ubuntu 16.04安装ROS-安装的是ros1_第4张图片

sudo su
sudo gedit /etc/hosts

在hosts中添加以下内容并保存,在执行完后继续rosdep update

199.232.28.133 raw.githubusercontent.com
151.101.228.133 raw.github.com

解决方案 0x04-终极篇

如果上述步骤仍然不能解决你的问题,那么可以进行这最后的步骤。 执行以下指令,

sudo rosdep init

系统提示已经存在20-default.list(于解决方案0x02创建),那么下面就将该文件删除

sudo su
cd /etc/ros/rosdep/sources.list.d
sudo rm 20-default.list
exit

移除文件后打开新的终端

sudo rosdep init
rosdep update

但是我到这里还是不行,于是我重复了上述的步骤三,再按找下面的进行:
上述网址的来源是这里:

    打开网址:https://site.ip138.com
    输入raw.githubusercontent.com
  Ubuntu 16.04安装ROS-安装的是ros1_第5张图片随便挑选一个ip地址(参考来源:ros 中ERROR: cannot download default sources list from: https://raw.githubusercontent.com/ros/rosdist_李德龙杰的博客-CSDN博客)

一般这里都成功了。
但是!!!! 我出现了禁止查询该域名的问题。

于是最后我找到这篇大佬写的:解决ROS系统 rosdep update超时问题的新方法_leida_wt的博客-CSDN博客_rosdep update 超时

由于近期国内Github Raw的可用IP越来越少,通过修改hosts文件解决rosdep update超时问题的方法已经不太好用,本文通过修改rosdep源码中下载资源的函数来解决这一问题。
网站https://ghproxy.com/支持github的资源代理,非常好用,我们将用此代理加速rosdep对Github Raw的访问,进而解决rosdep update超时问题。

首先定位rosdep资源下载函数。从报错信息中得知,该函数名为download_rosdep_data,位于/usr/lib/python2.7/dist-packages/rosdep2/sources_list.py

首先,先获取根文件的访问权限。

sudo nautilus

现在可以直接修改了。

我们修改这一函数,添加:

url="https://ghproxy.com/"+url

应用ghproxy的代理服务。
Ubuntu 16.04安装ROS-安装的是ros1_第6张图片

用同样的方法修改/usr/lib/python2.7/dist-packages/rosdistro/__init__.py里面的DEFAULT_INDEX_URL
即将DEFAULT_INDEX_URL 进行如下替换:

DEFAULT_INDEX_URL = 'https://ghproxy.com/https://raw.githubusercontent.com/ros/rosdistro/master/index-v4.yaml'

除此处外,下述文件中也含有github地址,分别是:

/usr/lib/python2.7/dist-packages/rosdep2/gbpdistro_support.py 36行
/usr/lib/python2.7/dist-packages/rosdep2/sources_list.py 72行
/usr/lib/python2.7/dist-packages/rosdep2/rep3.py    39行
/usr/lib/python2.7/dist-packages/rosdistro/manifest_provider/github.py 68行 119行

均可通过在地址前添加https://ghproxy.com/前缀来应用代理服务。

还是报错,继续解决。

在/usr/lib/python2.7/dist-packages/rosdep2/gbpdistro_support.py 第204行添加如

gbpdistro_url = "https://ghproxy.com/" + gbpdistro_url

Ubuntu 16.04安装ROS-安装的是ros1_第7张图片

啊啊啊啊啊,再次尝试执行rosdep update,问题解决。

安装rosinstall

这是安装ROS各种功能包的程序。很有用的工具,务必安装。

sudo apt-get install python-rosinstall

(6) 配置环境

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

(7) 装building package的依赖

sudo apt-get install python-rosinstall python-rosinstall-generator python-wstool build-essential

(8) 测试ROS安装成功
1) 打开Termial,输入以下命令,初始化ROS环境:

roscore

报错:

roscore
程序“roscore”尚未安装。 您可以使用以下命令安装:
sudo apt install python-roslaunch

解决:

终端gedit .bashrc
查看是否还有“source /opt/ros/kinetic/setup.bash”这一行,如果有,那就在终端在source ./bashrc
问题解决。

2) 打开新的Termial,输入以下命令,弹出一个小乌龟窗口:

rosrun turtlesim turtlesim_node

3) 再打开一个终端,用键盘控制小乌龟运动:

rosrun turtlesim turtle_teleop_key

可以看到小乌龟可以移动,键盘移动的之前要点一下最后一个终端。(注:要在这个新打开的终端里面点击键盘)

你可能感兴趣的:(ubuntu,linux,运维)