项目场景:
在ubuntu 22.04安装kalibr时遇到了一些问题,这里做下记录。
Kalibr由ETHZ视觉组开源,链接如下:https://github.com/ethz-asl/kalibr , 它可以解决多相机标定、视觉惯性标定、卷帘相机标定等问题。
在ubuntu22.04安装kalibr时主要会遇到两个大问题:
- kalibr是由ros 1构建的,而ubuntu22.04已经停止了对ros1的支持,想要在ubuntu22下安装kalibr,首先要解决ros1 在ubuntu22的安装,这个过程非常痛苦,因此建议还是老实降系统版本比较好。但是对于一些像我一样头铁的人,可以参考这个教程:https://www.bilibili.com/opus/890840405512290392 。
- kalibr可以参考官方教程使用catkin build进行构建,这里就不详细展开了。在构建时,具有下面报错:
CMake Error at /usr/lib/x86_64-linux-gnu/cmake/Boost-1.74.0/BoostConfig.cmake:141 (find_package):
Found package configuration file:
/usr/lib/x86_64-linux-gnu/cmake/boost_python-1.74.0/boost_python-config.cmake
but it set boost_python_FOUND to FALSE so package "boost_python" is
considered to be NOT FOUND. Reason given by package:
No suitable build variant has been found.
The following variants have been tried and rejected:
* libboost_python310.so.1.74.0 (3.10, Boost_PYTHON_VERSION=3.8)
* libboost_python310.a (3.10, Boost_PYTHON_VERSION=3.8)
原因分析:
可以发现错误主要是已经安装的libboost_python
版本跟kalibr需要的版本不一致导致的。已经安装的是libboost_python310
而kalibr需要Boost_PYTHON_VERSION=3.8
。但如果强行对当前环境中的python与boost版本进行降级,可能对其他已经构建好的库产生影响。
解决方案:
经过两天的研究,终于发现了一个可行的解决方案:
- 找到源代码中
***/Schweizer-Messer/python_module/cmake/add_python_export_library.cmake
文件的第88行。将原本的python38那行注释掉换成如下代码就可以:
else()
#list(APPEND BOOST_COMPONENTS python38)
list(APPEND BOOST_COMPONENTS python310)
endif()
- 在构建过程中你可能还会遇到其它问题,比如找不到头文件,这个大概率也是由boost的版本导致的,可以搜一下当前版本该头文件对应的位置,在源码中改掉就可以了。
结论:
能用ubuntu20还是用ubuntu20吧,不要再这样折磨自己了!!!