版权声明:Davidwang原创文章,严禁用于任何商业途径,授权后方可转载。
kalibr编译安装看似简单,实则凶险万分,稍不留神,耗进去个把礼拜轻轻松松,经过千难万险,现将流程记录下如:
前提条件:已正确安装ubuntu 18.04,ros melodic
(一)、第一版
1、安装依赖
sudo apt-get install python-setuptools python-rosinstall ipython libeigen3-dev libboost-all-dev doxygen libopencv-dev ros-melodic-vision-opencv ros-melodic-image-transport-plugins ros-melodic-cmake-modules python-software-properties software-properties-common libpoco-dev python-matplotlib python-scipy python-git python-pip ipython libtbb-dev libblas-dev liblapack-dev python-catkin-tools libv4l-dev
2、安装python-igraph
sudo pip install python-igraph --upgrade
本步骤如果不成功,则可以直接安装:
sudo apt-get install python-igraph
3、设置工作空间
mkdir -p ~/kalibr_workspace/src
cd ~/kalibr_workspace
source /opt/ros/melodic/setup.bash
catkin init
catkin config --extend /opt/ros/melodic
catkin config --merge-devel # Necessary for catkin_tools >= 0.4.
catkin config --cmake-args -DCMAKE_BUILD_TYPE=Release
4、克隆Kalibr工程
cd ~/kalibr_workspace/src
git clone https://github.com/ethz-asl/Kalibr.git
5、修改文件
打开 src/Kalibr/aslam_cv/aslam_imgproc/include/aslam/implementation/aslamcv_helper.hpp 文件
将所有的 “CvSize” 改为 “cv::Size”,共3处。
6、编译与排错
使用如下命令进行编译:
cd ~/kalibr_workspace
catkin build -DCMAKE_BUILD_TYPE=Release -j4
7、编译成功后,恢复工作空间
source ~/kalibr_workspace/devel/setup.bash
如果第一版安装解决不了问题,请看第二版
(二)、第二版
1、安装依赖
sudo apt-get install python-setuptools python-rosinstall ipython libeigen3-dev libboost-all-dev doxygen libopencv-dev ros-melodic-vision-opencv ros-melodic-image-transport-plugins ros-melodic-cmake-modules python-software-properties software-properties-common libpoco-dev python-matplotlib python-scipy python-git python-pip ipython libtbb-dev libblas-dev liblapack-dev python-catkin-tools libv4l-dev
2、安装python-igraph
sudo pip install python-igraph --upgrade
本步骤如果不成功,则可以直接安装:
sudo apt-get install python-igraph
3、设置工作空间
mkdir -p ~/kalibr_workspace/src
cd ~/kalibr_workspace
source /opt/ros/melodic/setup.bash
catkin init
catkin config --extend /opt/ros/melodic
catkin config --merge-devel # Necessary for catkin_tools >= 0.4.
catkin config --cmake-args -DCMAKE_BUILD_TYPE=Release
4、克隆Kalibr工程
cd ~/kalibr_workspace/src
git clone https://github.com/ethz-asl/Kalibr.git
5、替换Kalibr使用的Opencv与Catkin文件
(1)进到Kalibr文件夹中,删除opencv2_catkin和catkin_simple文件夹
cd ~/kalibr_workspace/src/Kalibr
rm -r opencv2_catkin
rm -r catkin_simple
(2)重新下载opencv2_catkin和catkini_simple文件
opencv2_catkin下载地址:https://github.com/ethz-asl/opencv2_catkin
catkini_simple下载地址:https://github.com/catkin/catkin_simple
可以直接克隆到Kalibr文件夹下(总之,将opencv2_catkin和catkin_simple这两个文件夹放到Kalibr文件夹下)
6、编译与排错
使用如下命令进行编译:
cd ~/kalibr_workspace
catkin build -DCMAKE_BUILD_TYPE=Release -j4
错误1:
CMake Error at cmake/OpenCVDetectCXXCompiler.cmake:89 (math):
math cannot parse the expression: "*100 + ": syntax error, unexpected
exp_TIMES, expecting exp_PLUS or exp_MINUS or exp_OPENPARENT or exp_NUMBER(1)
解放方案:
原OpenCVDetectCXXCompiler.cmake文件有错误,该文件所在路径:
kalibr_workspace\build\opencv2_catkin\opencv2_src-prefix\src\opencv2_src\cmake
使用同名文件替换,下载地址:https://pan.baidu.com/s/1Fss8hFIymkkAlS-kAtomZA
错误2:
modules/contrib/src/chamfermatching.cpp:969:30: error: the compiler can assume that the address of ‘annotate_img’ will never be NULL [-Werror=address]
if (&annotate_img!=NULL) {
^
modules/contrib/src/chamfermatching.cpp:1016:34: error: the compiler can assume that the address of ‘annotate_img’ will never be NULL [-Werror=address]
if (&annotate_img!=NULL) {
解决方案:
打开文件:kalibr_workspace/build/opencv2_catkin/opencv2_src-prefix/src/opencv2_src/modules/contrib/CMakeFiles/opencv_contrib.dir/flags.make
(kalibr_workspace/build/opencv2_catkin/opencv2_src-prefix/src/opencv2_src/modules/contrib/CMakeFiles/opencv_contrib.dir/src/flags.make)
删除 -Werror=address,保存
错误3:
error: ‘CODEC_ID_H264’ was not declared in this scope
‘CODEC_FLAG_GLOBAL_HEADER’ was not declared in this scope
解决方案:
打开文件:kalibr_workspace/src/Kalibr/opencv2_catkin/CMakeLists.txt
添加 -D WITH_FFMPEG=OFF,保存
最后,再使用catkin build -DCMAKE_BUILD_TYPE=Release -j4 编译
7、编译成功后,恢复工作空间
source ~/kalibr_workspace/devel/setup.bash
小秘密
在clone github.com上的开源文件时,添加cnpmjs.org会大大加速进程,如:
git clone https://github.com.cnpmjs.org/ethz-asl/Kalibr.git