首发于ROS编程

rosdep问题解决

后台收到很多小伙伴的关于rosdep安装配置失败的问题,所以这里先中断下激光雷达的介绍,先介绍如何解决rosdep问题,下一篇继续介绍激光雷达。在安装ros系统时,遇到最多的问题可能就是rosdep指令出错,本篇介绍rosdep是什么,怎么使用,然后介绍rosdep出错的可能原因,以及修复方法,本篇所介绍的方法适用于ros所有版本。


一. rosdep是什么

rosdep是ros一个命令行工具,用于安装系统依赖,具体地说,就是ros包的依赖。举例来说,你在编译velodyne源码时,可能会遇到找不到pcap.h错误,这是因为velodyne依赖于pcap库,但是这个库没有安装,此时你就可以使用rosdep安装pcap库,指令如下:

rosdep install --from-paths src -i -y

此命令会自动检测src下的所有包依赖,如果发现没有安装的依赖,直接安装。


二.rosdep安装时机

在安装ros系统时,rosdep会自动安装,所以不需要单独安装。


三.rosdep初始化

rosdep使用前需要先进行初始化和更新,初始化也就是执行下面指令:

sudo rosdep init

这一步就是将raw.githubusercontent.com这个文件下载到/etc/ros/rosdep/sources.list.d/这个目录下,这一步你有可能遇到以下错误:

这种一般是网络不好,你可以把上述上述链接复制到浏览器中,然后手动创建20-default.list文件,具体指令如下:

cd /etc/ros/rosdep/sources.list.d/
sudo touch 20-default.list
sudo gedit 20-default.list

然后将网页内容复制进去就行了。如果浏览器也打不开,那说明你的网络比较糟糕,需要先解决网络问题,可以尝试换有线网络,或者热点等,解决标准是浏览器可以打开这个链接。


四. rosdep更新

rosdep在完成初始化之后,需要更新,执行以下指令:

rosdep update

这一步你可能遇到以下错误:

这种情况是由于已安装的rosdep与系统缓存版本不一致导致。可以使用以下指令检查:

rosdep --version
apt-cache policy python-rosdep

执行结果如图

可以看到两个版本并不完全一致,这样的话可能会导致update频繁失败,解决方式卸载rosdep,然后从缓存重新安装,这样可以保持安装的与缓存版本保持一直,操作如下。

卸载rosdep和pip:

sudo apt-get remove --purge python-rosdep python-pip

安装rosdep:

sudo apt-get update
sudo apt-get install python-rosdep

检查版本一致性:

rosdep --version
apt-cache policy python-rosdep

执行结果如图

操作系统环境不同,rosdep版本也可能不一样,只要保持两条指令输出的版本一致即可,至此完成rosdep本地版本与缓存版本的一致性配置。


五. 重新初始化

rosdep版本修复后,就可以重新初始化和更新了,具体先需要先删除老的list文件,执行以下指令:

cd /etc/ros/rosdep/sources.list.d
sudo rm 20-default.list
sudo rosdep init

执行结果如图

最后一条如果出错,参考执行上述第三步:“rosdep初始化”,完成rosdep初始化。


六. 重新更新

执行指令:

rosdep update

此时如果出现timeout错误,那是网络错误,可以换个网络,多执行几次,我这里没有更换网络,试了两次,就成功了,如图


七. 失败原因

rosdep配置失败,总体两个原因,一是网络确实比较糟糕,这种情况下,list文件网页都打不带,此时只能更换网络。也由于网络本身稳定性问题,可能时好时坏,所以这种情况下,在不同的时间点,有可能安装成功。第二个原因就是安装版本与缓存版本不一致,这种情况多见于已经安装pip的环境之后,再安装ros的情况,可以参考第四步检查,所以新安装的系统基本没有这个问题。稳定的网络环境是ros系统安装成功的必要条件,一般要求有线网即可,如果是无线网络,建议用热点。


八. ROS系统完成安装步骤

Kinetic版本参考:


Melodic版本参考:


九. 小结

本篇介绍rosdep基本概念和用法,然后介绍rosdep安装配置失败的几种原因以及对应的解决方法。

发布于 2020-04-09 17:50