ubuntu20.04 vins-fusion 运行记录

过程记录

环境:
ubuntu20.04
opencv4.2.0(此次使用) 3.3.1(其他程序在使用)

vins-fusion
vision_opencv

1.下载VINS-Fusion和cv_bridge,并进行修改,方便使用opencv4.2.0和对应的cv_bridge。

mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src
# 下载 VINS-Fusion
git clone https://github.com/HKUST-Aerial-Robotics/VINS-Fusion.git
# 下载cv_bridge 1.16,不存在多个版本的opencv可以不下,直接编译VINS-Fusion
git clone https://github.com/ros-perception/vision_opencv.git --branch noetic
# 我只想保留cv_bridge,想带着vision_opencv的可以不做
mv /vision_opencv/cv_bridge ./
rm -rf vision_opencv

2.编译cv_bridge
修改cv_bridge中的CMakeLists.txt和package.xml

# CMakeLists.txt
project(cv_bridge_4)
# package.xml
<name>cv_bridge_4</name>

编译cv_bridge

cd ~/catkin_ws
catkin build cv_bridge_4

3.编译VINS-Fusion
修改CMakeLists.txt,这一步是因为系统中有多个opencv,所以我需要确定是哪个并使用对应版本的cv_bridge

# /home/robot/catkin_ws/src/VINS-Fusion/camera_models/CMakeLists.txt
# /home/robot/catkin_ws/src/VINS-Fusion/loop_fusion/CMakeLists.txt
# /home/robot/catkin_ws/src/VINS-Fusion/vins_estimator/CMakeLists.txt
find_package(OpenCV REQUIRED)  ⇒ find_package(OpenCV 4 REQUIRED)
cv_bridge  ⇒   cv_bridge_4

编译

catkin build

ERROR 1:
在这里插入图片描述
error: ‘integer_sequence’ is not a member of ‘std’
FIX:
修改文件,不使用c++11而是c++14

# 修改/home/robot/catkin_ws/src/VINS-Fusion/camera_models/CMakeLists.txt
# 修改/home/robot/catkin_ws/src/VINS-Fusion/global_fusion/CMakeLists.txt
# 修改/home/robot/catkin_ws/src/VINS-Fusion/loop_fusion/CMakeLists.txt
# 修改/home/robot/catkin_ws/src/VINS-Fusion/vins_estimator/CMakeLists.txt
set(CMAKE_CXX_FLAGS "-std=c++14")

ERROR 2:
所有由于opencv版本引发的错误均集中在这里:
2.1 error: ‘CV_GRAY2BGR’ was not declared in this scope
error: ‘CV_BGR2GRAY’ was not declared in this scope

2.2 error: ‘CV_CALIB_CB_ADAPTIVE_THRESH’ was not declared in this scope

2.3 error: ‘CV_ADAPTIVE_THRESH_MEAN_C’ was not declared in this scope

2.4 error: ‘CV_THRESH_BINARY’ was not declared in this scope

2.5 error: ‘CV_AA’ was not declared in this scope; did you mean ‘CV_MSA’?

2.6 error: ‘CV_SHAPE_CROSS’ was not declared in this scope

2.7 error: ‘CV_RETR_CCOMP’ was not declared in this scope
error: ‘CV_CHAIN_APPROX_SIMPLE’ was not declared in this scope

2.8 error: ‘CV_LOAD_IMAGE_GRAYSCALE’ was not declared in this scope

2.9 error: ‘CV_FONT_HERSHEY_SIMPLEX’ was not declared in this scope

FIX:
修改格式:未修改CV_*==>修改后

# 2.1
# /home/robot/catkin_ws/src/VINS-Fusion/camera_models/src/chessboard/Chessboard.cc
CV_GRAY2BGR  ⇒  cv::COLOR_GRAY2BGR
CV_BGR2GRAY  ⇒  cv::COLOR_BGR2GRAY 两处
# /home/robot/catkin_ws/src/VINS-Fusion/camera_models/src/calib/CameraCalibration.cc
CV_GRAY2BGR  ⇒  cv::COLOR_GRAY2BGR
# /home/robot/catkin_ws/src/VINS-Fusion/vins_estimator/src/featureTracker/feature_tracker.cpp
CV_GRAY2RGB  ⇒  cv::COLOR_GRAY2RGB
/home/robot/catkin_ws/src/VINS-Fusion/loop_fusion/src/ThirdParty/DVision/BRIEF.cpp
CV_RGB2GRAY  ⇒   cv::COLOR_RGB2GRAY# 2.2
# 还是/home/robot/catkin_ws/src/VINS-Fusion/camera_models/src/chessboard/Chessboard.cc
添加 #include <opencv2/calib3d/calib3d_c.h># 2.3
# 还是/home/robot/catkin_ws/src/VINS-Fusion/camera_models/src/chessboard/Chessboard.cc
添加#include<opencv2/imgproc/types_c.h># 2.4
# 还是/home/robot/catkin_ws/src/VINS-Fusion/camera_models/src/chessboard/Chessboard.cc
CV_THRESH_BINARY   ⇒   cv::THRESH_BINARY 四处# 2.5
# /home/robot/catkin_ws/src/VINS-Fusion/camera_models/src/chessboard/Chessboard.cc
# /home/robot/catkin_ws/src/VINS-Fusion/camera_models/src/calib/CameraCalibration.cc
# /home/robot/catkin_ws/src/VINS-Fusion/camera_models/src/intrinsic_calib.cc
添加#include “opencv2/imgproc/imgproc_c.h”#2.6
# /home/robot/catkin_ws/src/VINS-Fusion/camera_models/src/chessboard/Chessboard.cc
CV_SHAPE_CROSS  ⇒   cv::MORPH_CROSS
CV_SHAPE_RECT  ⇒   cv::MORPH_RECT# 2.7
# /home/robot/catkin_ws/src/VINS-Fusion/camera_models/src/chessboard/Chessboard.cc
CV_RETR_CCOMP  ⇒   cv::RETR_CCOMP 三处
CV_CHAIN_APPROX_SIMPLE  ⇒   cv::CHAIN_APPROX_SIMPLE 三处# 2.8
# /home/robot/catkin_ws/src/VINS-Fusion/vins_estimator/src/KITTIGPSTest.cpp
# /home/robot/catkin_ws/src/VINS-Fusion/vins_estimator/src/KITTIOdomTest.cpp
CV_LOAD_IMAGE_GRAYSCALE  ⇒   cv::IMREAD_GRAYSCALE 各两处# 2.9
# /home/robot/catkin_ws/src/VINS-Fusion/loop_fusion/src/keyframe.cpp
# /home/robot/catkin_ws/src/VINS-Fusion/loop_fusion/src/pose_graph.cpp
CV_FONT_HERSHEY_SIMPLEX   ⇒   cv::FONT_HERSHEY_SIMPLEX  一个两处,一个五处

ERROR 3:
Segmentation Fault(core dump)
OpenCV版本和cv_bridge版本问题

FIX:
查看上方步骤,选择对应的opencv版本和cv_bridge版本,并修改CMakeLists.txt

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/105385.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++数位动态规划算法:统计整数数目

题目 给你两个数字字符串 num1 和 num2 &#xff0c;以及两个整数 max_sum 和 min_sum 。如果一个整数 x 满足以下条件&#xff0c;我们称它是一个好整数&#xff1a; num1 < x < num2 min_sum < digit_sum(x) < max_sum. 请你返回好整数的数目。答案可能很大&…

【Linux】基本指令-入门级文件操作(二)

目录 基本指令 7 cp指令&#xff08;重要&#xff09; 8 mv指令&#xff08;重要&#xff09; 9 nano指令 10 cat指令 11 echo指令与重定向&#xff08;重要&#xff09; 12 more指令 13 less指令 基本指令 7 cp指令&#xff08;重要&#xff09; 功能&#xff1a;复…

redis如何实现缓存预热

在业务系统中&#xff0c;我们需要在程序启动的时候加载一些常用的数据到内存数据库中&#xff0c;从而减少业务数据库的压力。这就是我们常提到的缓存预热。官方一点的解释是这样的&#xff1a; 缓存预热是一种在程序启动或缓存失效之后&#xff0c;主动将热点数据加载到缓存中…

注意力屏蔽(Attention Masking)在Transformer中的作用 【gpt学习记录】

填充遮挡&#xff08;Padding Masking&#xff09;&#xff1a; 未来遮挡&#xff08;Future Masking&#xff09;&#xff1a;

09. 机器学习- 逻辑回归

文章目录 线性回归回顾逻辑回归 Hi&#xff0c;你好。我是茶桁。 上一节课&#xff0c;在结尾的时候咱们预约了这节课一开始对上一节课的内容进行一个回顾&#xff0c;并且预告了这节课内容主要是「逻辑回归」&#xff0c;那我们现在就开始吧。 线性回归回顾 在上一节课中&a…

Go语言入门心法(一)

Go语言入门心法(一) Go语言入门心法(二): 结构体 Go语言入门心法(三): 接口 一: go语言中变量认知 go语言中变量的定义: &#xff08;要想飞|先会走&#xff09;||&#xff08;翻身仗|抹遗憾 &#xff09; |&#xff08;二八定律&#xff09;(先量变)|(再质变)||&#x…

【Matlab】二维绘图函数汇总

目录 1. plot() 2. subplot() 3. fplot() 4. polarplot() 1. plot() plot() 函数是 Matlab 中最常用的绘图函数&#xff0c;用于在平面直角坐标系中绘制直线或曲线。 用法&#xff1a; plot(X,Y) plot(X,Y,LineSpec) plot(X1,Y1, ... ,Xn,Yn) 说明&#xff1a; plot(X,Y) …

Ubuntu下安装Python

Ubuntu下安装Python 预备知识一、Python安装Python 二、Anaconda安装Anaconda卸载Anaconda 三、Miniconda安装Miniconda 四、异同比较 预备知识 (1) Python是一种编程语言。 (2) Anaconda是一款包管理工具&#xff0c;用来管理Python及其他语言的安装包&#xff0c;预装了很多…

【考研408真题】2022年408数据结构41题---判断当前顺序存储结构树是否是二叉搜索树

文章目录 思路408考研各数据结构C/C代码&#xff08;Continually updating&#xff09; 思路 很明显&#xff0c;这是一个顺序存储结构的树的构成方法。其中树的根节点位置从索引0开始&#xff0c;对于该结构&#xff0c;存在有&#xff1a;如果当前根节点的下标为n&#xff0c…

凉鞋的 Unity 笔记 108. 第二个通识:增删改查

在这一篇&#xff0c;我们来学习此教程的第二个通识&#xff0c;即&#xff1a;增删改查。 增删改查我们不只是一次接触到了。 在最先接触的场景层次窗口中&#xff0c;我们是对 GameObject 进行增删改查。 在 Project 文件窗口中&#xff0c;我们是对文件&文件夹进行增删…

Jetpack:007-Kotlin中的Button

文章目录 1. 概念介绍2. 使用方法2.1 Button2.2 IconButton2.3 ElevatedButton2.4 OutlinedButton2.5 TextButton2.6 FloatingActionButton 3. 示例代码4. 内容总结 我们在上一章回中介绍了Jetpack中输入框相关的内容&#xff0c;本章回中将要介绍 Button。闲话休提&#xff0…

使用【Blob、Base64】两种方式显示【文本、图片、视频】 使用 video 组件播放视频

Blob 显示 Blob 对象的类型是由 MIME 类型&#xff08;Multipurpose Internet Mail Extensions&#xff09;来确定的。MIME 类型是一种标准&#xff0c;用于表示文档、图像、音频、视频等多媒体文件的类型。以下是一些常见的 Blob 对象类型&#xff1a; text/plain&#xff1…

drone如何发布docker服务

上篇主要实现了drone在物理机上进行发布程序&#xff0c;这次介绍drone如何发布docker类型的服务。 一 drone.yml文件配置 前提&#xff1a;需要提前在drone里添加文件里面所引用的密钥 kind: pipeline # 定义对象类型&#xff0c;还有secret和signature两种类型 type: dock…

SaaS人力资源管理系统的Bug

SaaS人力资源管理系统的Bug Bug1【18】 这里我是直接把代码复制过来的&#xff0c;然后就有一个空白 这是因为它的代码有问题&#xff0c;原本的代码如下所示 <el-table-column fixed type"index" label"序号" width"50"></el-table…

Android之SpannableString使用

文章目录 前言一、效果图二、实现代码总结 前言 在开发中&#xff0c;往往有些需求是我们不愿意遇到的&#xff0c;但是也不得不处理的事情&#xff0c;比如一段文案&#xff0c;需要文案中某些文字变颜色或者点击跳转&#xff0c;所以简单写了几句代码实现&#xff0c;没什么…

java气候分析平台天气预报系统springboot+vue

保护措施 (自动编号、图片、措施简介、措施地点、措施时间、创建时间、措施详情、措施名称)&#xff1b; 报名信息 (自动编号、活动地点、图片、活动名称、活动时间、参与人数、活动详情、审核回复、创建时间、报名时间、手机、活动简介、是否审核、姓名、账号)&#xff1b; 配…

uniapp 一次性上传多条视频 u-upload accept=“video“ uni.chooseMedia uni.uploadFile

方式 一 部分安卓机 只能一条一条传视频 文档地址 uview 2.0 Upload 上传组件 html <view class"formupload"><u-upload accept"video":fileList"fileList3" afterRead"afterRead" delete"deletePic" name"…

Elasticsearch集群管理原理

Elasticsearch 是一个开源的、基于 Lucene 的分布式搜索和分析引擎&#xff0c;设计用于云计算环境中&#xff0c;能够实现实时的、可扩展的搜索、分析和探索全文和结构化数据。它具有高度的可扩展性&#xff0c;可以在短时间内搜索和分析大量数据。 Elasticsearch 不仅仅是一个…

算法练习13——跳跃游戏II

LeetCode 45 跳跃游戏 II 给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]。 每个元素 nums[i] 表示从索引 i 向前跳转的最大长度。换句话说&#xff0c;如果你在 nums[i] 处&#xff0c;你可以跳转到任意 nums[i j] 处: 0 < j < nums[i] i j < n 返回…

【漏洞复现】安全云平台存在任意文件下载getshell

漏洞描述 深圳市强鸿电子有限公司鸿运主动安全云平台存在任意文件下载漏洞,攻击者可通过此漏洞下载敏感文件信息。 免责声明 技术文章仅供参考,任何个人和组织使用网络应当遵守宪法法律,遵守公共秩序,尊重社会公德,不得利用网络从事危害国家安全、荣誉和利益,未经授权…