前言
首先ros1目前目前在ubuntu支持的最高版本是20.04。当时我是在ubuntu22.04上编译安装的ros1。过程也十分坎坷,手动下载了很多包,具体就不累赘了。
再者目前网上的资料也都是kalibr+ros1, 所以推荐安装ros1之后再来安装kalibr。其次这次安装主要
参考如下。但是我的情况还有一些不一样,主要我的ros是noetic版本。
- 1 melodic 安装 kalibr
- 2 github kalibr guide
安装过程出现的问题
1 boost提示python版本不对,kalibr期待的是早期版本,但是我ubuntu22.04的版本是python310版本
- 解决方案就是根据提示错误的文件,找到文件后修改如下文件
/home/liuchaoqun/kalibr_workspace/src/Kalibr/Schweizer-Messer/python_module/cmake/add_python_export_library.cmake
- 修改的地方是lcq注释的地方。主要是允许使用python310
- 修改的地方是lcq注释的地方。主要是允许使用python310
2 报如下错误,当时看这一堆心情都郁闷了。最后这个错误没有主动解决。只是修改了源码中C++的错误,这个错误自己好了。
- 错误如下
3 这个是编译的时候找不到include <boost/detail/endian.hpp>,最后一查是废弃了,话说废弃了作者也不删除。这个直接注释就好。
- 废弃的endian.hpp
- 文件路径: /home/liuchaoqun/kalibr_workspace/src/Kalibr/Schweizer-Messer/sm_boost/include/boost/portable_binary_archive.hpp
- 文件路径: /home/liuchaoqun/kalibr_workspace/src/Kalibr/Schweizer-Messer/sm_boost/include/boost/portable_binary_archive.hpp
4 同上
- 文件路径: /home/liuchaoqun/kalibr_workspace/src/Kalibr/Schweizer-Messer/sm_boost/src/portable_binary_oarchive.cpp
修改完上边的再编译就好了
- 安装成功的截图,耗费1天多时间
- 结果
- 结果
总结
- 这次最主要的问题就是一开始系统就是ubuntu22.04。但是网上这些开源的项目对新版本的ubuntu支持的又不是很好,所以遇到的很多问题都找不到答案,或者最后只能源码安装,非常耗时。建议初学者最好在安装系统的时候就选择早期的版本,如ubuntu20.4等。
- 自己心态问题,遇到错误就很烦躁,其实仔细阅读提示信息还是能找到蛛丝马迹的。解决bug就跟侦探办案一样,总会有线索留给你,所以要乐观。方法论大致如下:
- 1 从报错的那行看,看是从哪里报错的,然后不要着急在网上搜错误,先试着理解现场告诉我们什么信息?想让我们从哪方面入手去改?可以自己先试着改改看能编译通过不
- 2 对于编译别人的开源代码,不要以为开源的都是神,不会出错。当与ubuntu系统版本,python版本,C++等版本不一致时就是会出错,作者一开始在开发的时候也不可能将以后所有版本都兼容。尤其是早期开发代码,只能依赖早期的库,而你的环境又是新的,所以出现适配问题在所难免。
- 3 即使看到很多问题也不要慌,一个一个慢慢解决,很有可能你解决了一个,很多其他问题也跟着solved。因为开源的再离谱也不可能很多错,毕竟这么多人用。
- 4 调整好心态,问题总有解决的方案。