rosdep
不管是安装哪个版本的ros,最后执行的两步都是:
sudo rosdep init
rosdep update
不过,大概率会出现下面的错误:
ERROR: cannot download default sources list from:
https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/sources.list.d/20-default.list
Website may be down.
上面的错误意味着rosdep配置失败。
事实上,在实际使用过程中,即使不执行上面的两步也并不会影响ros开发环境的使用,但如果执着于搭建完整的ros开发环境的话,可以使用后面的方法来解决rosdep错误。
那么这个rosdep有什么用呢?
其实,rosdep是一个用于安装系统依赖项的命令行工具。比如我们创建了一个工作空间,然后创建了ros包,该ros包需要依赖串口包、地图包等等,那么可以手动依次下载依赖包,也可以使用下面的rosdep命令自动下载相关依赖:
rosdep install --from-paths src --ignore-src -r -y
方法一
翻墙。
最简单粗暴的方式。
rosdep配置失败的原因就是境外资源被屏蔽,无法访问,如果具备翻墙条件的话,此问题应可顺利解决。
方法二
修改host文件,添加域名与ip的映射。
- 找一个IP地址查询工具,然后输入
raw.githubusercontent.com
,查询其对应的真实ip地址,这里可以查询
- 修改host文件,添加映射
sudo gedit /etc/hosts
- 修改完host文件后,重新执行rosdep初始化和update,如果过程中还是遇到错误,多执行几次或者更换网络再执行,此问题应可解决
方法三(推荐)
手动下载、配置,100%成功。
下面步骤中的rosdistro文件是从github中下载,如果github访问也有问题的话,可以自行搜索rosdistro并下载,gitee上也有资源可以下载。
- 从github上下载
rosdistro
文件夹到本地,记好下载到的目录,下面需要用到
git clone https://github.com/ros/rosdistro
- 修改
20-default.list
文件,/home/xxx
对应上面rosdistro下载到的目录,后面的步骤指的均是此目录
sudo gedit /home/xxx/rosdistro/rosdep/sources.list.d/20-default.list
将文件中的网址https://raw.githubusercontent.com/ros/rosdistro/master
修改为下载目录file:///home/xxx/rosdistro
- 修改前:
- 修改后:
- 修改
sources_list.py
文件
注意:当前配置的ubuntu系统为20.04,ros版本noetic,所以下面的目录中包含python3这个目录,如果是其他版本的ros,这个目录可能是python2.7或者其他,意思是sources_list.py文件所在的路径可能与下面的路径并不完全一致。
sudo gedit /usr/lib/python3/dist-packages/rosdep2/sources_list.py
修改第72行
#DEFAULT_SOURCES_LIST_URL = 'https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/sources.list.d/20-default.list'
DEFAULT_SOURCES_LIST_URL = 'file:///home/xxx/rosdistro/rosdep/sources.list.d/20-default.list'
- 修改
_init_.py
文件
sudo gedit /usr/lib/python3/dist-packages/rosdep2/rep3.py
修改第39行
#REP3_TARGETS_URL = 'https://raw.githubusercontent.com/ros/rosdistro/master/releases/targets.yaml'
REP3_TARGETS_URL = 'file:///home/xxx/rosdistro/releases/targets.yaml'
- 修改
__init__.py
文件
sudo gedit /usr/lib/python3/dist-packages/rosdistro/__init__.py
修改第68行
#DEFAULT_INDEX_URL = 'https://raw.githubusercontent.com/ros/rosdistro/master/index-v4.yaml'
DEFAULT_INDEX_URL = 'file:///home/xxx/rosdistro/index-v4.yaml'
- 执行rosdep update
sudo rosdep init
rosdep update