写在前面

完事开头难,这个ros的安装真的搞了我好久,本来是在更新轨迹规划系列博客的,但是ros安装的这个问题解决了我真的是很爽快,因此插入更新一下哈哈。

结果展示

原理分析

环境:ubuntu1804

sudo rosdep init其实做的事情就是去拿https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/sources.list.d/20-default.list这个文件,这个文件里面放的东西主要是告诉ros安装程序需要的信息,但是也是因为raw.githubusercontent.com被down了,因此刚好也是就是卡在了这一步,所以我们可以跳过这一步,直接把文件下载下来,然后把需要的信息路径转换成本地路径,最后让ros安装程序直接获得信息即可完成安装。

那么这个方法实现的可行的很大一个原因就是这个20-default.list文件里的内容很少,有用的东西才5行,所以复制粘贴一下倒也问题不是很大。

实操步骤

步骤概览:

step 1:在ubuntu里面打开浏览器去https://github.com/ros/rosdistro,把这个项目下载到/tmp下面,下载来的压缩包应该叫rosdistro-master.zip;(建议下载到/tmp这个路径下面,这样就可以直接复制下面我写的路径,可以提高安装成功率

step 2:将这个压缩包解压到/tmp下面(命令或者图形化都可以),解压出来的文件应该叫rosdistro-master

step 3:修改rosdistro-master下相应文件内容,将调用改为本地地址

step 4:修改其他文件中有调用raw.githubusercontent.com的地方,并且将调用改为本地地址

step 5:正常步骤,最终完成;

step 1 and step 2

下载下来的文件图片如下所示:

图形化解压即可:

最终结果:

step 3

重头戏来了,那是文件的修改,我们总共要修改这些文件:

/tmp/rosdistro-master/rosdep/source.list.d/20-default.list
/usr/lib/python2.7/dist-packages/rosdep2/sources_list.py
/usr/lib/python2.7/dist-packages/rosdep2/rep3.py
/usr/lib/python2.7/dist-packages/rosdistro/__init__.py

总共4个文件中的内容需要做修改,那我为什么要1,3分呢,因为第1个文件修改是为了获取安装相关信息的本地路径,修改下面3个文件是为了将原来指向raw.githubusercontent.com的地址修改成指向本地地址/tmp/rosdistro-master/rosdep/+具体地址

分析到这结束,接下来是实操部分:

输入sudo gedit /tmp/rosdistro-master/rosdep/source.list.d/20-default.list,将其内容改为如下所示:

# os-specific listings first
yaml file:///tmp/rosdistro-master/rosdep/osx-homebrew.yaml osx

# generic
yaml file:///tmp/rosdistro-master/rosdep/base.yaml
yaml file:///tmp/rosdistro-master/rosdep/python.yaml
yaml file:///tmp/rosdistro-master/rosdep/ruby.yaml
gbpdistro file:///tmp/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

step 4

接下来是进行剩下3个文件的重定向:

1:首先输入命令sudo gedit /usr/lib/python2.7/dist-packages/rosdep2/sources_list.py,然后将其中的文件进行注释替换。

上面是注释掉的下面是新加的,可以直接复制下面这条:

DEFAULT_SOURCES_LIST_URL = 'file:///tmp/rosdistro-master/rosdep/sources.list.d/20-default.list'

2:然后是第二个文件,输入命令:

sudo gedit /usr/lib/python2.7/dist-packages/rosdep2/rep3.py,然后将其中的文件进行注释替换。

上面是注释掉的下面是新加的,可以直接复制下面这条:

REP3_TARGETS_URL = 'file:///tmp/rosdistro-master/releases/targets.yaml'

3:然后是第三个文件,输入命令:

sudo gedit /usr/lib/python2.7/dist-packages/rosdistro/__init__.py,然后将其中的文件进行注释替换。

DEFAULT_INDEX_URL = 'file:///tmp/rosdistro-master/index-v4.yaml'

step 5

最后按顺序执行下列命令:

sudo rosdep init
rosdep update
echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
source ~/.bashrc
sudo apt install python-rosinstall python-rosinstall-generator python-wstool build-essential

测试

至此完成了配置,接下来就可以查看小乌龟了哟。

输入命令:roscore
然后新开terminal,输入命令:rosrun turtlesim turtlesim_node
然后再开一个新的terminal,输入命令:rosrun turtlesim turtle_teleop_key
然后就可以获得一个可以移动的小乌龟啦。

参考资料

sudo rosdep init 出现 ERROR: cannot download default sources list from:

解决rosdep init报错“Website may be down”