解决ROS安装中rosdep init 和rosdep update失败的方法

实验室新进一批设备,需要配置 ubuntu 系统,安装 ROS 。
在 ROS 安装过程中,有一步:

sudo rosdep init
rosdep update

因国内服务器,无法科学上网,总是出现超时,初始化失败。
往常我们也配置过 ROS ,在这一步失败就忽略了,但同门提出过安装完某功能包无法使用,初始化失败的情况,可能是 ROS 安装时这一步未完成引起的,本次 ROS 安装决定试着解决这一问题,防止以后出现一些 “后遗症”。

网上有很多修改 hosts 文件添加连接 ip 地址,解决 rosdep update 超时问题的方法,经过多番尝试均失败收场。心情焦躁上头时,发现一篇博客修改 rosdep 源码中下载资源的函数,有了效果。现贴上链接,做一些总结。
解决ROS系统 rosdep update超时问题的新方法


网站https://ghproxy.com/支持 github 的资源代理,我们用此代理加速 rosdep 对Github Raw的访问,进而解决 rosdep update 超时问题。
首先定位 rosdep 资源下载函数。从报错信息中得知,该函数名为 download_rosdep_data ,位于 /usr/lib/python2.7/dist-packages/rosdep2/sources_list.py 。我们修改这一函数,添加:

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

应用ghproxy的代理服务。

sources_list.py文件中download_rosdep_data函数
用同样的方法修改 /usr/lib/python2.7/dist-packages/rosdistro/__init__.py 里面的 DEFAULT_INDEX_URL ,即在 https://raw.githubusercontent.com/ros/rosdistro/master/index-v4.yaml 之前加上 https://ghproxy.com/

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

在地址前添加 https://ghproxy.com/ 前缀来应用代理服务
以此修改方法,还要修改几处文件

/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    68119

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

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

待以上修改完成后,再次 rosdep update 即可通过。

参考链接:https://blog.csdn.net/leida_wt/article/details/115120940


2021-9-17
若是高版本的(如 noetic 、foxy ),因为已经默认使用 python3 解释器,在 python2.7 文件夹里找不到相应的文件,可以去 python3 文件夹中修改对应的文件,同样是可以的,亲测有效。

猜你喜欢

转载自blog.csdn.net/qq_34935373/article/details/119976999