前言:
安装ros的最后一步是rosdep init和rosdep update.
但是我的osdep init莫名其妙的解决了,按理说也访问不了国外的服务器,不知为啥,直接rosdep init,就成功了。但是rosdep update就是死活弄不成功,在网上翻了大量的资料,最后按照以下方案弄成功了,亲测有效。
做此记录,一是方便让后来者少走弯路,二是在之后自己再次装的时候也方便。
我的ROS版本:Ubuntu18.04
正文:
一、先记录一下截屏快捷键
在设置,键盘中,可以找到这个选项。
二、关于 rosdep
安装ros的最后一步是rosdep init和rosdep update,rosdep是解决ros包依赖问题的一个工具。
rosdep init会从ros官方服务器上下载一个“20-default.list”文件,放在“/etc/ros/rosdep/sources.list.d/”路径下;打开“20-default.list”发现里边是一些yaml文件的网址,这些yaml文件里保存着一些ros工具或者常见ros包的依赖关系,也即:这些ros工具或者ros包依赖于哪些其它ros包。当你执行rosdep update,rosdep会尝试访问yaml文件网址,把yaml里的信息转存到本地,这样当你配置上述ros工具或者ros包时,ros会按照依赖关系自动把所需的依赖一并下载。这也是为什么一些人会认为rosdep失败也不影响ros使用,因为只有当你下载相关包时才会用到rosdep。
不难发现,rosdep init和rosdep update都需要访问境外服务器,这就导致国内用户rosdep相关操作经常失败。
三、问题显示及解决过程
就是超时,海外服务器连接不上。
解决办法:换代理服务器——关键
网站https://ghproxy.com/支持github的资源代理,非常好用,我们将用此代理加速rosdep对Github的访问,进而解决rosdep update失败问题。
我们要做的,是在rosdep的若干个脚本文件中,把 https://ghproxy.com/ 添加到相应URL前面即可。依次在以下文件中添加。
1.首先修改rosdep下载资源的脚本文件:/usr/lib/python2.7/dist-packages/rosdep2/sources_list.py,把以下行添加到脚本中的download_rosdep_data()函数中,以应用代理服务:
url="https://ghproxy.com/"+url
2.然后,用同样的方法修改/usr/lib/python2.7/dist-packages/rosdistro/init.py里面的DEFAULT_INDEX_URL参数,如下:
DEFAULT_INDEX_URL = 'https://ghproxy.com/https://raw.githubusercontent.com/ros/rosdistro/master/index-v4.yaml'
3.接着,以下4个文件中也使用了“raw.githubusercontent.com”网址,同样的方法把“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 68行 119行
备注:这个具体多少行,可能不太一样,可以用Ctrl+F在文件中查找,直接搜raw找github原来的地址即可。
4、最后,在 /usr/lib/python2.7/dist-packages/rosdep2/gbpdistro_support.py 的第204行添加如下代码:
gbpdistro_url = "https://ghproxy.com/" + gbpdistro_url
如果不添加会导致第五个hit链接不上。
对于第五个地址[https://raw.githubusercontent.com/ros/rosdistro/master/releases/fuerte.yaml]报错的问题
大功告成,现在你可以愉快地执行 rosdep update 啦!预祝一把过。
主要参考链接:
1、rosdep update 超时失败2021最新解决方法
2、ROS学习——rosdep update 超时解决方法
3、解决rosdep update失败问题
4、ROS安装过程中如何解决 rosdep update 命令出现错误