一. rosdep是什么
rosdep是ros一个命令行工具,用于安装系统依赖,具体地说,就是ros包的依赖。举例来说,你在编译velodyne源码时,可能会遇到找不到pcap.h错误,这是因为velodyne依赖于pcap库,但是这个库没有安装,此时你就可以使用rosdep安装pcap库,指令如下:
转到catkin工作区的顶级目录,其中包含您要使用的ROS包的源代码。然后运行:
rosdep install --from-paths src -i -y
# 或者
rosdep install --from-paths src --ignore-src -r -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系统安装成功的必要条件,一般要求有线网即可,如果是无线网络,建议用热点。
八. 使用rosdepc
安装
sudo pip install rosdepc
#如果显示没有pip可以试试pip3。
sudo pip3 install rosdepc
#如果pip3还没有
sudo apt-get install python3-pip
sudo pip install rosdepc
使用
sudo rosdepc init
rosdepc update