2021-07-22

rosdep init ROS安装问题解决方案(最新)

Ubuntu16.04 安装 ROS时,有时在运行sudo rosdep init后出现下所示错误:

在这里插入图片描述

(图1)rosdep init ROS安装问题

首先试着通过浏览器访问error中提及的网址:浏览器启动——!!!

在这里插入图片描述

(图2)浏览器访问error提及网址失败

可惜发现网址都无法打开,于是在终端尝试以下代码,ping一下这个网址

ping raw.githubusercontent.com

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

在这里插入图片描述

(图3)终端ping的方式访问成功

那么究竟error中返回的地址到底有什么内容呢?首先,看到网址中包含20-default.list,可以猜测访问该网址就是为了下载这个文件。接着,从一台安装好ROS的电脑上(这里小编已经提前下载),我们访问了这个error中提及的网址,从下图可以看出这个网址页面的一些信息。

在这里插入图片描述

(图4)20-default.list的文件内容

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

在这里插入图片描述

(图5)20-default.list的文件内容

这是访问外网总会出现的翻墙现象之一,学过JavaWeb的小伙伴一定深同感受:配置Maven的本地仓库虽然麻烦,但比远程访问的效果要好很多。所以解决思路就是将用到的文件下载到本地,然后修改原文件中的链接,指向本地仓库,即可完美解决。

首先,这里先推荐一般的方法:https://www.guyuehome.com/12640,大家可以先试一下。不过,此法对笔者没有任何帮助。

所以,又找了第二种方法:https://blog.csdn.net/qq_35822136/article/details/106320587。不幸的是,笔者再次失败了,因为这两种方法都要在虚拟机终端中远程访问外网,皆以翻墙失败告终。

在这里插入图片描述

(图6)git访问再次失败

不过,笔者不会就此被打倒。终于,站在前辈的想法上,思考出一种有效的方法(亲测多次成功)。

一、解决方案

1.新建一个文件夹

sudo mkdir -p  /home/hqlee/

2.下载文件到本地

**步骤一:**可以在任意平台将用到的文件下载到本地

**步骤二:**将下载的文件移植到Ubuntu操作系统的虚拟机中

这里为了方便,可以将Windows上的压缩包文件直接拖到Ubuntu下的/home文件夹中(因为home文件夹下的权限较高)。

在这里插入图片描述

(图7)拖拽压缩包到/home文件夹下

**步骤三:**解压压缩包

在这里插入图片描述

(图8)压缩文件并重命名

并将压缩后的文件夹命名为rosdistro

**步骤四:**移动文件夹 rosdistro 到 /home/hqlee/ 目录下

cd /home/*	// 此处*代指以用户名命名的文件夹,每位用户的都不相同
ls
sudo mv rosdistro /home/hqlee

3.另打开一个终端,备份原文件,运行

sudo cp /usr/lib/python2.7/dist-packages/rosdep2/rep3.py /usr/lib/python2.7/dist-packages/rosdep2/rep3.py.bak
sudo cp /usr/lib/python2.7/dist-packages/rosdistro/__init__.py /usr/lib/python2.7/dist-packages/rosdistro/__init__.py.bak
sudo cp /usr/lib/python2.7/dist-packages/rosdep2/sources_list.py /usr/lib/python2.7/dist-packages/rosdep2/sources_list.py.bak

在这里插入图片描述

(图9)备份文件

4.修改代码,将原文件的网址替换为本地仓库地址

sudo gedit /usr/lib/python2.7/dist-packages/rosdep2/rep3.py
sudo gedit /usr/lib/python2.7/dist-packages/rosdistro/__init__.py
sudo gedit /usr/lib/python2.7/dist-packages/rosdep2/sources_list.py

并全部做替换,将 https://raw.githubusercontent.com/ros/rosdistro/master 全部替换为 file:///home/hqlee/rosdistro 。这里小编可以很负责地说,每个文件里仅有一处要修改,且修改的地方都在代码的前面部分。

在这里插入图片描述

(图10)替换网址

5.重新运行

sudo rosdep init

在这里插入图片描述

(图11)运行成功

若运行失败,可以多次重新运行。实在不行的话,也不用气馁。因为我们还可以手动配置20-default.list文件。

当然,运行成功的话,就不必再听小编叨叨了,可以直接跳过第6步,直接执行第7步;否则还是要执行第6步。

6.配置20-default.list文件

此解决方案的原理是基于手动完成sudo rosdep init的步骤

**步骤一:**首先打开一个终端,执行以下指令创建root并切换至root用户

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用户

7.保存并运行,并替换下载地址

sudo cp /etc/ros/rosdep/sources.list.d/20-default.list /etc/ros/rosdep/sources.list.d/20-default.list.bak
sudo gedit /etc/ros/rosdep/sources.list.d/20-default.list

将 https://raw.githubusercontent.com/ros/rosdistro/master 全部替换为 file:///home/hqlee/rosdistro 。

# os-specific listings first
yaml file:///home/hqlee/rosdistro/rosdep/osx-homebrew.yaml osx

# generic
yaml file:///home/hqlee/rosdistro/rosdep/base.yaml
yaml file:///home/hqlee/rosdistro/rosdep/python.yaml
yaml file:///home/hqlee/rosdistro/rosdep/ruby.yaml
gbpdistro file:///home/hqlee/rosdistro/releases/fuerte.yaml fuerte
 
# newer distributions (Groovy, Hydro, ...) must not be listed anymore, they are being fetched from the rosdistro index.yaml instead

8.运行

rosdep update

在这里插入图片描述

(图12)添加文件成功

9.over,接下来就可以配置环境变量,测试ros环境了。

参考教程1

参考教程2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值