在另外一篇ROS 2边学边练系列的文章里有写碰到这种问题的解决方法(主要参考了其他博主的文章,只是针对ROS 2做了些修改调整),此处单拎出来方便查找。
在ROS 2中执行rosdep update时,报出如下错误:
其实原因大家也能猜个七七八八,git资源链接里面的https://raw.githubusercontent.com由于某些众所周知的原因访问不了。解决步骤简述如下。
1. 将rosdistro clone到自己的家目录下(我的是/home/mike):
$git clone https://github.com/ros/rosdistro.git
下载完成后(如果github clone失败请往上翻找到解决办法),我们检查下:
里面包含了很多ROS版本,包括我们的iron,那就对了;
2. 修改4个文件
2.1 20-default.list
$cd /home/mike/rosdistro/rosdep/sources.list.d/
$sudo gedit 20-default.list
之前的内容是:
修改后的内容是:
2.2 gbpdistro_support.py
$sudo gedit /usr/lib/python3/dist-packages/rosdep2/gbpdistro_support.py
找到宏FUERTE_GBPDISTRO_URL,替换后的内容为:
FUERTE_GBPDISTRO_URL = 'file:///home/mike/rosdistro/' \'releases/fuerte.yaml'
2.3 rep3.py
$sudo gedit /usr/lib/python3/dist-packages/rosdep2/rep3.py
找到宏REP3_TARGETS_URL,替换后的内容为:
REP3_TARGETS_URL = 'file:///home/mike/rosdistro/releases/targets.yaml'
2.4 __init__.py
sudo gedit /usr/lib/python3/dist-packages/rosdistro/__init__.py
找到宏DEFAULT_INDEX_URL,替换后的内容为:
DEFAULT_INDEX_URL = 'file:///home/mike/rosdistro/index-v4.yaml'
3. 替换20-default.list
如果你之前执行过sudo rosdep init命令,那么在/etc/ros/rosdep/sources.list.d路径下会生成一个20-default.list文件,我们将第一步修改好的该同名文件覆盖掉/etc/ros/rosdep/sources.list.d/20-default.list即可:
sudo cp /home/mike/rosdistro/rosdep/sources.list.d/20-default.list /etc/ros/rosdep/sources.list.d/
最后我们再来执行一次rosdep update:
搞定!