rosdep无法获取noetic源?
问题描述
最新在使用ROS Noetic过程中,发现了一个有趣的现象。
rosdep update 命令在0.25.1版本(正在使用的docker版本)是可以正常添加到noetic发行版源的,但是其他版本不行(Ubuntu2004上安装ROS-Noetic)。
无法rosdep update 添加noetic源的话,就会在处理一些依赖的时候会报错。例如 rosdep resolve roscpp
就找不到该库,但是实际这个库存在并且也可以正常使用。但是在其他打包工具查询该库时就会发现找不到。
在使用了小鱼的rosdepc后发现依旧无法解决rosdep resolve roscpp
找不到依赖的问题。
解决思路
临时方法
使用rosdep update --rosdistro=noetic
就可以正常添加noetic源,也可以临时解决上述的问题。
但是非常蛋疼的是,这个打包工具会自动的调用rosdep update,也就是说你手动更新过后,在自动构建的过程中,会再次调用rosdep update覆盖掉原有的配置。
这样的话,就只能尝试更改源码了(主要是尝试了alias 伪装和自定义rosdep脚本,发现都无法实现)
。
该源码的话,无非就是修改打包工具或rosdep。这两个工具都是基于python编写,修改起来十分方便。
选择修改rosdep,查看源码发现,rosdep update 原有的参数–rosdistro默认为None,那么这样就非常容易修改了,我们直接修改默认参数为noetic即可。
修改过后,执行,可以正常添加Noetic源,并且也可以使用打包工具也可以正常进行构建。
后面来讲讲这个本地打包工具,bloom-generate。这个工具可以生成构建配置,从而将整个功能包打包为deb文件,在ubuntu上可以实现直接将功能包的可执行文件安装到系统中去。可以很好的实现版本的分发和管理。