Kalibr相机标定功能包的安装编译与问题解决-Kalibr踩坑过程

2023-05-16

编译的网络环境:能上外网

系统:ubuntu18.04

一、安装准备:安装第三方库依赖

sudo apt-get install python-setuptools python-rosinstall ipython 
sudo apt-get install libeigen3-dev libboost-all-dev doxygen libopencv-dev 
sudo apt-get install ros-melodic-vision-opencv ros-indigo-image-transport-plugins 
sudo apt-get install ros-melodic-cmake-modules python-software-properties 
sudo apt-get install software-properties-common libpoco-dev python-matplotlib 
sudo apt-get install python-scipy python-git python-pip ipython libtbb-dev 
sudo apt-get install libblas-dev liblapack-dev python-catkin-tools libv4l-dev
sudo pip install python-igraph --upgrade

如果执行失败,则换成下面命令:

sudo apt-get install python-igraph

二、创建工作空间与代码下载

//创建ROS工作空间与编译环境
mkdir -p ~/kalibr_workspace/src
cd ~/kalibr_workspace/src
catkin_init_workspace
cd ~/kalibr_workspace
source /opt/ros/melodic/setup.bash
catkin init
catkin config --extend /opt/ros/melodic(根据自己的ROS版本而定)
catkin config --merge-devel # Necessary for catkin_tools >= 0.4.
catkin config --cmake-args -DCMAKE_BUILD_TYPE=Release

//代码下载
cd ~/kalibr_workspace/src
git clone https://github.com/ethz-asl/Kalibr.git

三、代码修改与编译

刚下载完代码,别急着编译,多半会因为与自己系统的opencv版本和eigen版本不匹配而失败。先按照如下操作修改代码:

1、问题一:关于catkin_make过程中下载suitesparse过久甚至失败的问题:

在安装kalibr时的suitesprse库时,对应的cmakelists中会通过wget下载压缩包,若无法下载则整个kalibr都无法成功安装,那么可以进行如下修改:

在suitesprse包里面的CMakeLists.txt里面的部分代码进行替换:

将:

ExternalProject_Add(suitesparse_src
  CMAKE_ARGS -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
  DOWNLOAD_COMMAND rm -f SuiteSparse-${VERSION}.tar.gz && wget http://faculty.cse.tamu.edu/davis/SuiteSparse/SuiteSparse-${VERSION}.tar.gz
  PATCH_COMMAND tar -xzf ../SuiteSparse-${VERSION}.tar.gz && rm -rf ../suitesparse_src-build/SuiteSparse && sed -i.bu "s/\\/usr\\/local\\/lib/..\\/lib/g" SuiteSparse/SuiteSparse_config/SuiteSparse_config.mk && sed -i.bu "s/\\/usr\\/local\\/include/..\\/include/g" SuiteSparse/SuiteSparse_config/SuiteSparse_config.mk && mv SuiteSparse ../suitesparse_src-build/
  CONFIGURE_COMMAND ""
  BUILD_COMMAND cd SuiteSparse && make library -j8 -l8
  INSTALL_COMMAND cd SuiteSparse && mkdir -p lib && mkdir -p include && make install && cd lib && cp libamd.2.3.1.a libcamd.2.3.1.a libcholmod.2.1.2.a libcxsparse.3.1.2.a libldl.2.1.0.a libspqr.1.3.1.a libumfpack.5.6.2.a libamd.a	libcamd.a libcholmod.a	libcxsparse.a libldl.a libspqr.a libumfpack.a libbtf.1.2.0.a	libccolamd.2.8.0.a libcolamd.2.8.0.a libklu.1.2.1.a librbio.2.1.1.a libsuitesparseconfig.4.2.1.a libbtf.a	libccolamd.a libcolamd.a		libklu.a librbio.a libsuitesparseconfig.a  ${CATKIN_DEVEL_PREFIX}/${CATKIN_GLOBAL_LIB_DESTINATION}/ && cd .. && mkdir -p ${CATKIN_DEVEL_PREFIX}/${CATKIN_GLOBAL_INCLUDE_DESTINATION}/suitesparse && cd include && cp amd.h cholmod_matrixops.h SuiteSparseQR_definitions.h umfpack_load_symbolic.h umfpack_save_symbolic.h btf.h cholmod_modify.h SuiteSparseQR.hpp umfpack_numeric.h umfpack_scale.h camd.h cholmod_partition.h umfpack_col_to_triplet.h umfpack_qsymbolic.h umfpack_solve.h ccolamd.h cholmod_supernodal.h umfpack_defaults.h umfpack_report_control.h umfpack_symbolic.h cholmod_blas.h cholmod_template.h umfpack_free_numeric.h umfpack_report_info.h umfpack_tictoc.h cholmod_camd.h colamd.h umfpack_free_symbolic.h umfpack_report_matrix.h umfpack_timer.h cholmod_check.h cs.h umfpack_get_determinant.h umfpack_report_numeric.h umfpack_transpose.h cholmod_cholesky.h klu.h umfpack_get_lunz.h umfpack_report_perm.h umfpack_triplet_to_col.h cholmod_complexity.h ldl.h umfpack_get_numeric.h umfpack_report_status.h umfpack_wsolve.h cholmod_config.h RBio.h umfpack_get_symbolic.h umfpack_report_symbolic.h cholmod_core.h spqr.hpp umfpack_global.h umfpack_report_triplet.h cholmod.h SuiteSparse_config.h umfpack.h umfpack_report_vector.h cholmod_io64.h SuiteSparseQR_C.h umfpack_load_numeric.h umfpack_save_numeric.h ${CATKIN_DEVEL_PREFIX}/${CATKIN_GLOBAL_INCLUDE_DESTINATION}/suitesparse 
)

替换为:

ExternalProject_Add(suitesparse_src
  CMAKE_ARGS -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
  DOWNLOAD_COMMAND rm -f SuiteSparse-${VERSION}.tar.gz && wget -O SuiteSparse-${VERSION}.tar.gz "https://github.com/jluttine/suitesparse/archive/v${VERSION}.tar.gz"
  #DOWNLOAD_COMMAND wget "https://www.baidu.com"
  PATCH_COMMAND tar -xzf ../SuiteSparse-${VERSION}.tar.gz && mv suitesparse-${VERSION} ./SuiteSparse && rm -rf ../suitesparse_src-build/SuiteSparse && sed -i.bu "s/\\/usr\\/local\\/lib/..\\/lib/g" SuiteSparse/SuiteSparse_config/SuiteSparse_config.mk && sed -i.bu "s/\\/usr\\/local\\/include/..\\/include/g" SuiteSparse/SuiteSparse_config/SuiteSparse_config.mk && mv SuiteSparse ../suitesparse_src-build/
  CONFIGURE_COMMAND ""
  BUILD_COMMAND cd SuiteSparse && make library -j8 -l8
  INSTALL_COMMAND cd SuiteSparse && mkdir -p lib && mkdir -p include && make install && cd lib && cp libamd.2.3.1.a libcamd.2.3.1.a libcholmod.2.1.2.a libcxsparse.3.1.2.a libldl.2.1.0.a libspqr.1.3.1.a libumfpack.5.6.2.a libamd.a	libcamd.a libcholmod.a	libcxsparse.a libldl.a libspqr.a libumfpack.a libbtf.1.2.0.a	libccolamd.2.8.0.a libcolamd.2.8.0.a libklu.1.2.1.a librbio.2.1.1.a libsuitesparseconfig.4.2.1.a libbtf.a	libccolamd.a libcolamd.a		libklu.a librbio.a libsuitesparseconfig.a  ${CATKIN_DEVEL_PREFIX}/${CATKIN_GLOBAL_LIB_DESTINATION}/ && cd .. && mkdir -p ${CATKIN_DEVEL_PREFIX}/${CATKIN_GLOBAL_INCLUDE_DESTINATION}/suitesparse && cd include && cp amd.h cholmod_matrixops.h SuiteSparseQR_definitions.h umfpack_load_symbolic.h umfpack_save_symbolic.h btf.h cholmod_modify.h SuiteSparseQR.hpp umfpack_numeric.h umfpack_scale.h camd.h cholmod_partition.h umfpack_col_to_triplet.h umfpack_qsymbolic.h umfpack_solve.h ccolamd.h cholmod_supernodal.h umfpack_defaults.h umfpack_report_control.h umfpack_symbolic.h cholmod_blas.h cholmod_template.h umfpack_free_numeric.h umfpack_report_info.h umfpack_tictoc.h cholmod_camd.h colamd.h umfpack_free_symbolic.h umfpack_report_matrix.h umfpack_timer.h cholmod_check.h cs.h umfpack_get_determinant.h umfpack_report_numeric.h umfpack_transpose.h cholmod_cholesky.h klu.h umfpack_get_lunz.h umfpack_report_perm.h umfpack_triplet_to_col.h cholmod_complexity.h ldl.h umfpack_get_numeric.h umfpack_report_status.h umfpack_wsolve.h cholmod_config.h RBio.h umfpack_get_symbolic.h umfpack_report_symbolic.h cholmod_core.h spqr.hpp umfpack_global.h umfpack_report_triplet.h cholmod.h SuiteSparse_config.h umfpack.h umfpack_report_vector.h cholmod_io64.h SuiteSparseQR_C.h umfpack_load_numeric.h umfpack_save_numeric.h ${CATKIN_DEVEL_PREFIX}/${CATKIN_GLOBAL_INCLUDE_DESTINATION}/suitesparse 
)

2、问题二:对于aslam_imgproc编译失败:

在文件kalibr/aslam_cv/aslam_imgproc/include/aslam/implementation/aslamcv_helper.hpp替换"CvSize" 成为"cv::Size" (有三个地方)

3、修改完上面两个地方后,先进行编译:

cd ~/kalibr_workspace
catkin build -DCMAKE_BUILD_TYPE=Release -j4

编译过程会有些久

如果你的opencv版本没问题,则不会报出相关的opencv错误,只会有一些警告而已。

4、出现opencv相关错误

如果出现了opencv相关错误,则根据报错的内容,定位到相关文件下的CMakeLists.txt,修改OpenCV库的链接:(我的opencv版本为3.3.1)

find_package(OpenCV 3.3.1 REQUIRED)
message(WARNING "OpenCV_VERSION: ${OpenCV_VERSION}")

修改完所有的opencv报错后,就能够编译成功了,只是会有一些警告,没有影响。

(后续将更新使用kalibr标定Realsense D455相机的教程)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Kalibr相机标定功能包的安装编译与问题解决-Kalibr踩坑过程 的相关文章

  • [icm42688]_readme

    记录一个使用icm42688的坑 xff1b 上图为42688的引脚连接图 xff1b 引脚说明处标注如果FSYNC不使用需要接地 xff1b 在实际测试驱动的过程中 xff0c 由于没有将该pin接地 xff0c 所以无法读取id 从机没
  • atbetaflight——指定commit号编译固件

    一 说明 在开发过程中 xff0c 比如成员A上传了一次code 而成员B需要测试本次提交的code xff0c 但是由于没有搭建ci 成员B就需要自己拉code编译 xff0c 本文将详细说明编译步骤 xff1b 二 步骤 1 使用vsc
  • atbf中imu数据的读取与处理方式

    一 说明 本文为作者在阅读atbf源码的过程中 xff0c 对atbf中imu数据的读取和处理方式的个人理解 xff0c 可能存在不对之处 xff0c 意在抛砖引玉 xff0c 请各位老师多多指正 xff1b 二 数据读取流程图 1 tar
  • atbf中imu数据读取逻辑分析仪抓取

    一 说明 使用逻辑分析仪抓区imu的spi和中断io的信号 xff0c 从而侧面描述atbf在imu上的数据读取方式 xff1b 二 硬件说明 1 硬件材料 1 mcu at32F437开发板 2 imu icm42688p 3 逻辑分析仪
  • cmake-自动识别新增子模块

    实际的项目中可能会有这种需求 xff0c 随着项目的进行 xff0c 会有新增的子模块 xff0c 如果每新增一个子模块 xff0c 顶层CMakeLists txt都要同步修改一次 xff0c 一般工程代码加入了版本控制 xff0c 那么
  • CSDN每日一练c++难题-大数加法 C语言

    题目名称 xff1a c 43 43 难题 大数加法 时间限制 xff1a 1000ms内存限制 xff1a 256M 题目描述 大数一直是一个c语言的一个难题 现在我们需要你手动模拟出大数加法过程 请你给出两个大整数加法结果 输入描述 x
  • Ubuntu软件包资源官网下载教程(包含所有下载源)

    官网地址 国外 xff1a Ubuntu Ubuntu Packages Search https packages ubuntu com 国内 xff1a Ubuntu Ubuntu Packages Search https packa
  • 基于ROS的YOLOV3实现目标检测项目过程记录

    lt link rel 61 34 stylesheet 34 href 61 34 https csdnimg cn release blogv2 dist mdeditor css editerView ck htmledit view
  • darknet_ros(yolo移植到ros系统)代码分析

    lt link rel 61 34 stylesheet 34 href 61 34 https csdnimg cn release blogv2 dist mdeditor css editerView ck htmledit view
  • DSP28335的PWM信号

    DSP的PWM信号 简介 DSP28335共12路16位的ePWM xff0c 能进行频率和占空比控制 ePWM的时钟TBCLK 61 SYSCLKOUT HSPCLKDIV CLKDIV PWM信号频率由时基周期寄存器TBPDR和时基计数
  • Kubernetes (k8s)最佳安全实践指南

    对于大部分 Kubernetes 用户来说 xff0c 安全是无关紧要的 xff0c 或者说没那么紧要 xff0c 就算考虑到了 xff0c 也只是敷衍一下 xff0c 草草了事 实际上 Kubernetes 提供了非常多的选项可以大大提高
  • DSP28335 CAN模块详解

    1 CAN2 0B协议简述 TMS320F28335上有2个增强型CAN总线控制器 xff0c 符合CAN2 0B协议 xff0c 其总线波特率可达到1Mbps 符合CAN2 0B协议的数据帧为扩展数据帧 xff0c 即采用29位标识符 数
  • DSP28335看门狗复位

    1 看门狗时钟 看门狗时钟发生器 WDCLK 61 CLKOUT 512 xff0c 当HALT时停止 6 bits预定标WDPS选择 xff1a 将WDCLK再分频后送给看门狗定时器 WDPS为WDCR的2 0 位 其6 bits配置作用
  • DSP28335 看门狗初始化函数

    DSP28335 看门狗初始化函数 看门狗初始化程序 入口参数为系统定时复位时间 在需要复位看门狗计数器的地方调用程序ServiceDog 此程序在文件DSP2833x SysCtrl c中 详细说明在 TMS320x
  • Keil5编译error:core_cm3.h

    当打开现成的工程项目时 xff0c 编译出现一堆错误 xff0c 大部分错误出现关于 core cm3 h 这个文件 xff0c 那么大概率可能跟Keil5的版本有关 xff0c 如下 xff1a 可能原因 xff1a 打开魔术棒 gt T
  • Simulink创建子系统,创建引用模型,调用模型,加密模型

    Simulink创建子系统 创建引用模型 调用模型 加密模型 一 创建子系统 1 创建新工程 并添加Logical Operator Unit Delay连线 完成如下图 全选所有模块 右键选择 基于所选内容创建子系统 ctrl G 完成如
  • 自动驾驶 2D 单目\双目\多目视觉方法 一(Pseudo-LiDAR,Mono3D,FCOS3D,PSMNet)

    文章目录 概述单目3D感知3D目标检测单目深度估计 双目3D感知双目3D目标检测双目深度估计 Pseudo LiDAR1 核心思路总结2 要点分析 Mono3DFCOS3DPSMNet 概述 自动驾驶中必不可少的3D场景感知 因为深度信息
  • [C语言] 利用库函数实现查找指定键值对功能

    1 功能描述 键值对 xff08 key 61 value xff09 字符串 xff0c 在开发中经常使用 要求1 xff1a 请自己定义一个接口 xff0c 实现根据key获取 要求2 xff1a 编写测试用例 要求3 xff1a 键值
  • 【C++】Clang-Format:代码自动格式化(看这一篇就够了)

    文章目录 Clang format格式化C代码1 引言 amp 安装1 1引言1 2 安装 2 配置字解释2 1 language 编程语言2 2 BaseOnStyle 基础风格2 3 AccessModifierOffset 访问性修饰
  • 生产者消费者问题(Producer-consumer problem)

    概述 生产者消费者问题 xff0c 也称有限缓冲问题 xff08 英语 xff1a Bounded buffer problem xff09 xff0c 是一个多线程同步问题的经典案例 该问题描述了两个共享固定大小缓冲区的线程 即所谓的 生

随机推荐