Ubuntu20.04 ,适vins-mono配Ceres2.1.0和Eigen3.4.0

一、问题:

在跑vins-mono 的时候因为我的安装的Ceres2.1.0,但由于VINS-Mono是在ROS melodic以及Ceres1的环境下开发的,因此vins-mono在高于 Ceres versions 2.0.0时编译不成功。在不改变Ceres2.1.0的基础上运行vins-mono。

我参考了CSDN上面的一篇文章并且成功了,文章链接放最后了。

1.2. Ceres Solver Follow Ceres Installation, use version 1.14.0 and remember to sudo make install. (There are compilation issues in Ceres versions 2.0.0 and above.)

本文运行系统Ubuntu20.04 Ceres2.1.0、Eigen3.4.0 、ros-noetic

二、适配VINS-Mono

1.1 适配Ceres2.1.0

按照那篇文章的思路,是由于Ceres-solver2.0.0及以上版本采用的是C++14编译,而VINS-Mono采用C++11编译,这导致采用C++11编译Ceres-solver2.0.0不能编译成功。只需要将所有文件夹下的CMakeLists.txt文件全部修改为C++14编译

//原
set(CMAKE_CXX_FLAGS "-std=c++14")
set(CMAKE_CXX_FLAGS "-std=c++14 -march=native")
//改
set(CMAKE_CXX_FLAGS "-std=c++14")
set(CMAKE_CXX_FLAGS "-std=c++14 -march=native")

1.2 适配OpenCV4

ROS noetic版本中的OpenCV4.2和VINS-Mono中需要使用的opencv冲突,修改VINS-Mono代码兼容OpenCV4。不用修改代码中不兼容的变量,可以直接添加缺失的头文件即可:

在camera_model包中的头文件Chessboard.h中添加

#include <opencv2/imgproc/types_c.h>
#include <opencv2/calib3d/calib3d_c.h>

在camera_model包中的头文件CameraCalibration.h、pose_graph包中的头文件pose_graph.hkeyframe.hBRIEF.h中添加

#include <opencv2/imgproc/types_c.h>
#include <opencv2/imgproc/imgproc_c.h>

1.3 编译运行

删掉原来的bulid文件夹重新编译运行即可:

sudo rm -r build
catkin_make
#可添加到 ~/.bashrc 文件中:
source devel/setup.bash

三、参考文章

这篇文章还有VINS-Fusion和GVINS相关是适配方法。Ubuntu20.04下运行VINS系列:VINS-Mono、VINS-Fusion和GVINS-CSDN博客文章浏览阅读1.1w次,点赞34次,收藏247次。安装好了VINS-Mono所需的ROS noetic、Eigen3.4.0、Ceres2.10和OpenCV4.2.0等。VINS-Mono是在ROS melodic以及Ceres1的环境下开发的,因此需要适配高版本的环境。_gvinshttps://blog.csdn.net/zardforever123/article/details/129042974

 

  • 29
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值