综述
按照ROS官方论坛的步骤,安装ROS的最后几个步骤是
sudo rosdep init
rosdep update
但是偶尔因为网络问题出现失败的问题,本文记录本人在安装ROS过程中的解决方法。
sudo rosdep init
这个语句的作用是在目录/etc/ros/rosdep/sources.list.d下生成文件20-default.list,也就是说,你直接在这个文件夹下面创建这个文件就可以,并且这个文件在github上是直接有的。
在该库的rosdep/sources.list.d目录下就是20-default.list文件,把它用管理员权限复制到/etc/ros/rosdep/sources.list.d就可以。
一开始/etc/ros/rosdep/sources.list.d文件夹是不存在的,需要创建
cd /etc
sudo mkdir ros
cd ros
sudo mkdir rosdep
cd rosdep
sudo mkdir sources.list.d
sudo cp <下载好的20-default-list.d文件的路径> ./
之后修改一下20-default-list.d文件和几个python文件的路径,使得执行rosdep update命令的时候不需要联网,也就解决了ROS安装过程中的网络的问题。
首先要把上述github的代码全部下载下来。
修改20-default-list.d文件
这个文件就是刚刚在/etc/ros/rosdep/sources.list.d下面的文件,没有修改之前是这样的:
# 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
需要修改的是其中没有加注释的五条语句,以第一条
yaml https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/base.yaml
为例,实际上就是把前面从GitHub上下载好的代码文件的路径替换上述的路径,把https改成file,上述语句修改完就是
yaml file://<下载好的代码的路径>/rosdep/base.yaml
比如我修改成
yaml file:///home/user1234/Downloads/rosdistro-master/rosdep/osx-homebrew.yaml osx
注意file:后面是三个斜杠,需要找准对应的文件路径,就可以了。
python文件的修改
这里我只需要修改两个文件,在网上搜索的时候好像看到还需要额外修改三四个文件,但是原理都一样,如果你按照我的方法修改不行,可以自行查找是不是还需要修改其他的文件,这里我需要修改的文件是
1、/usr/lib/python3/dist-packages/rosdep2/rep3.py
2、/usr/lib/python3/dist-packages/rosdistro/init.py
其中对第一个文件的修改是第三十九行
REP3_TARGETS_URL = ...
也是修改成已经下载好的代码里面的对应文件的路径就行。
对第二个文件的修改是第六十八行
修改完之后直接运行
rosdep update
一般都不会出现太大问题,其他的方法像修改网络配置,个人觉得太麻烦,这种方法应该是最稳妥的。