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.hqwc.cn/news/133903.html

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

相关文章

UE4和C++ 开发-UE4怎么删除C++类

1 关闭visual stdio&#xff0c;关闭UE4引擎。 2 打开你的项目文件夹。找到你要删除的.h,.cpp文件删除。 3、删除Binaries文件夹。 4 右击.uproiect文件&#xff0c;点击Generate Visual Studio project files. 5 双击.uproiect文件,忽略警告打开就看到已经删除了想要删除的C类…

计算机导论实验——Linux基础入门

使用Xshell登录 Linux 主机 linux命令&#xff1a; cd&#xff1a;去哪里 pwd&#xff1a;在哪里 ls&#xff1a;查看当前有什么文件 mkdir&#xff1a;创建新目录 cp&#xff1a;复制 cat&#xff1a;连接或显示文件 rm&#xff1a;删除 mv&#xff1a;用于移动或重命名文件…

《3D 数学基础》几何检测-相交性检测

目录 1. 2D直线相交 2. 3D射线相交点 3. 射线和平面的交点 4. 3个平面的交点 5. 射线和圆或者球交点 6. 两个圆或者球是否相交 7. 球和平面的相交性检测 8. 射线和AABB的相交性&#xff08;13.17&#xff09; 9. 射线和三角形的相交性&#xff08;13.16&#xff09; …

ssm+vue的课程网络学习平台管理系统(有报告)。Javaee项目,ssm vue前后端分离项目。

演示视频&#xff1a; ssmvue的课程网络学习平台管理系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;ssm vue前后端分离项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体…

给你一个项目,你将如何开展性能测试工作?

一、性能三连问 1、何时进行性能测试&#xff1f; 性能测试的工作是基于系统功能已经完备或者已经趋于完备之上的&#xff0c;在功能还不够完备的情况下没有多大的意义。因为后期功能完善上会对系统的性能有影响&#xff0c;过早进入性能测试会出现测试结果不准确、浪费测试资…

NSIDC定义的海冰相关概念

文章目录 相关概念Matlab绘图结果展示 相关概念 NSIDC 表示 “National Snow and Ice Data Center”&#xff0c;即美国国家雪和冰数据中心。NSIDC 是一个位于美国科罗拉多大学波尔得分校的研究中心&#xff0c;致力于收集、管理和分发全球雪和冰的科学数据。 Matlab绘图 cl…

【C++】-c++11的知识点(中)--lambda表达式,可变模板参数以及包装类(bind绑定)

&#x1f496;作者&#xff1a;小树苗渴望变成参天大树&#x1f388; &#x1f389;作者宣言&#xff1a;认真写好每一篇博客&#x1f4a4; &#x1f38a;作者gitee:gitee✨ &#x1f49e;作者专栏&#xff1a;C语言,数据结构初阶,Linux,C 动态规划算法&#x1f384; 如 果 你 …

暴力递归转动态规划(九)

题目 题有点难&#xff0c;但还挺有趣 有一个咖啡机数组arr[]&#xff0c;其中arr[i]代表每一个咖啡机冲泡咖啡所需的时间&#xff0c;有整数N&#xff0c;代表着准备冲咖啡的N个人&#xff08;假设这个人拿到咖啡后喝完的时间为0&#xff0c;拿手里咖啡杯即变空&#xff09;&a…

Python爬虫(二十三)_selenium案例:动态模拟页面点击

本篇主要介绍使用selenium模拟点击下一页&#xff0c;更多内容请参考:Python学习指南 #-*- coding:utf-8 -*-import unittest from selenium import webdriver from selenium.webdriver.common.keys import Keys from bs4 import BeautifulSoup import timeclass douyuSelenium…

性能测试 —— 生成html测试报告、参数化、jvm监控

1.生成HTML的测试报告 1.1配置 (1)找到jmeter 的安装目录&#xff0c;下的bin中的jmeter.properties&#xff08;jmeter配置文件&#xff09; (2) ctrl f &#xff0c;搜索jmeter.save.saveservice.output_format&#xff0c;取消井号 并且 把等号后的xml改为csv&#xff0c;…

nvm、node、npm解决问题过程记录

在Windows10如何降级Node.js版本&#xff1a;可以尝试将Node.js版本降级到一个较旧的版本&#xff0c;以查看问题是否得以解决。可以使用Node Version Manager (nvm) 来轻松切换Node.js版本&#xff0c;具体完整步骤&#xff1a; 首先&#xff0c;需要安装Node Version Manager…

leetCode 583.两个字符串的删除操作 动态规划 + 优化空间复杂度(二维dp、一维dp)

583. 两个字符串的删除操作 - 力扣&#xff08;LeetCode&#xff09; 给定两个单词 word1 和 word2 &#xff0c;返回使得 word1 和 word2 相同所需的最小步数。 每步 可以删除任意一个字符串中的一个字符。 示例 1&#xff1a; 输入: word1 "sea", word2 &qu…