在ubuntu20.04上配置VINS_Fusion(亲测有效,一应俱全)

2023-05-16

        最近在做科研训练的时候配置了HKUST-Aerial-Robotics实验室的VINS_Fusion代码项目,经历了一些编译报错的问题,在网上查找的时候博客内容良莠不齐,且实质针对性意见不多,于是在此记录下自己配置期间遇到的一些共性问题,留作自己日后参考和大家的交流学习。

        github网站传送门->https://github.com/HKUST-Aerial-Robotics/VINS-Fusion

1、安装ubnutu20.04

        在此不做赘述,但是推荐一下b站上有关安装ubuntu20.04的双系统的教学视频,相当赞!

        传送门->Windows 和 Ubuntu 双系统的安装和卸载_哔哩哔哩_bilibili

2、安装ROS

        对于每个不同的ubuntu版本,ROS都有一个唯一的专门版本与之对应,例如,与ubuntu16.04对应的是ROS Kinetic,与ubuntu18.04对应的是ROS Melodic,与 ubuntu20.04对应的是ROS noetic。

        ROS安装步骤已经相对比较成熟,所以在这里直接援引已有的文章作为参考。

        传送门->

        这一篇推文步骤比较简单,差不多够用,首选这一篇。

        新Ubuntu20.04安装配置ROS Noetic_ubuntu20.04 安装ros_浪荡书生mw的博客-CSDN博客

        这一篇推文就复杂很多,咱也不知道为什么安装个ROS需要这么繁琐哈哈哈哈,不过里面应该是加了一下报错的处理步骤,如果uu们有报错问题可以参考一下。

        详细介绍如何在ubuntu20.04中安装ROS系统,超快完成安装(最新版教程)_ubuntu安装ros_慕羽★的博客-CSDN博客

3、安装ceres

        注意这里会有一个坑,如果按照github上给出的链接的话,安装的ceres是2.X版本,使用这类版本的时候在后面会导致编译出错,所以不要按照官网上的安装步骤来,在这里我们需要选择的版本是Ceres1.14.0,安装这个版本会省去后面的一堆麻烦。

        首先下载依赖项

sudo apt-get install cmake
sudo apt-get install libgoogle-glog-dev libgflags-dev
sudo apt-get install libatlas-base-dev
sudo apt-get install libeigen3-dev
sudo apt-get install libsuitesparse-dev

        接着下载ceres-solver1.14.0安装包并解压(下载好的安装包在主目录中)

#下载安装包
wget ceres-solver.org/ceres-solver-1.14.0.tar.gz
#解压安装包
tar -xvf ceres-solver-1.14.0.tar.gz

        最后完成编译安装操作

cd ceres-solver-1.14.0
mkdir build
cd build
cmake ..
sudo make 
sudo make test
sudo make install

        至此,完成ceres1.14.0版本的安装操作。

4、配置 VINS-Fusion

        克隆github代码并编译

    cd ~/catkin_ws/src
    git clone https://github.com/HKUST-Aerial-Robotics/VINS-Fusion.git
    cd ../
    catkin_make
    source ~/catkin_ws/devel/setup.bash

       注意,在这里catkin_ws只是一个文件名称用于标识编译文件,如果你的电脑在编译其他代码的时候已经在电脑中创建过属于那一段代码的catkin_ws文件的话,在这里就需要更改一下这一段代码的编译文件名称,比如更改为vins_ws,防止冲突。

        在catkin_make步骤,如果你的ubuntu系统中配置了anaconda3或者在之前的使用中出现过python路径有问题的情况的话,建议在这里指定python3的编译路径,命令如下:

catkin_make -DPYTHON_EXECUTABLE=/usr/bin/python3

        编译过程中,会有如下几种类型的报错:

        1、首先,ROS noetic版本中自带的OpenCV4和VINS-mono中需要使用的OpenCV3冲突的问题。修改vins-mono代码兼容opencv4。其实主要修改的是camera_model这个包,幸运的是发现不用修改代码中不兼容的变量,而是可以直接包含缺失的头文件即可。于是参考opencv参考文档查找opencv4中未定义的变量在opencv3中所属的头文件,然后添加到camera_model相应的头文件中顺利解决问题。(到图形界面中的文件夹里寻找相应文件)

在camera_model包中的头文件Chessboard.h中添加
#include <opencv2/imgproc/types_c.h>
#include <opencv2/calib3d/calib3d_c.h>
在CameraCalibration.h中添加
#include <opencv2/imgproc/types_c.h>
#include <opencv2/imgproc/imgproc_c.h>

        2、编译时遇到报错 error: ‘CV_FONT_HERSHEY_SIMPLEX’ was not declared in this scope

解决:根据报错提醒中指出的路径找到相应报错的文件,在文件中搜索CV_FONT_HERSHEY_SIMPLEX并替换成cv::FONT_HERSHEY_SIMPLEX。

        3、编译时遇到报错 error: ‘CV_BGR2GRAY’ was not declared in this scope

解决:根据报错提醒中指出的路径找到相应报错的文件,在文件中搜索CV_BGR2GRAY并替换成cv::COLOR_BGR2GRAY。

        4、编译时遇到报错 error: ‘CV_LOAD_IMAGE_GRAYSCALE’ was not declared in this scope

解决:根据报错提醒中指出的路径找到相应报错的文件,在文件中搜索CV_LOAD_IMAGE_GRAYSCALE并替换成IMREAD_GRAYSCALE。

        以上几个步骤都需要我们自己慢慢地找到文件位置然后一个一个的修改,比较繁琐,不要焦躁,这些都是必备的过程!

       

        可参考相关文章:Ubuntu20.04运行Vins-fusion_run vin fusion_可即的博客-CSDN博客

5、运行数据集

        至此,所有的配置都已完成,我们只需要下载数据集存到指定位置而后根据github上的指令运行即可。

        例如——Monocualr camera + IMU

    roslaunch vins vins_rviz.launch
    rosrun vins vins_node ~/catkin_ws/src/VINS-Fusion/config/euroc/euroc_mono_imu_config.yaml 
    (optional) rosrun loop_fusion loop_fusion_node ~/catkin_ws/src/VINS-Fusion/config/euroc/euroc_mono_imu_config.yaml 
    rosbag play YOUR_DATASET_FOLDER(需要修改为放置数据集的文件夹名字)/MH_01_easy.bag

        在第二行命令中,如果我们的编译文件不是叫catkin_ws,而是叫vins_ws或者其他什么名字的话,那么需要修改命令,如下:

rosrun vins vins_node ~/vins_ws(或者对应的文件名)/src/VINS-Fusion/config/euroc/euroc_mono_imu_config.yaml 

         四行命令需要在四个终端上执行偶~

        最终我们就可以在RVIZ上看到数据集跑通的视频录像啦!

        END!

        

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

在ubuntu20.04上配置VINS_Fusion(亲测有效,一应俱全) 的相关文章

随机推荐

  • Android开发-API指南-<application>[原创译文]

    转载地址 xff1a http blog sina com cn s blog 48d491300100zmga html lt application gt 英文原文 xff1a http developer android com gu
  • 新入职项目经理务必避免的七个常见错误

    在国内 xff0c 好多项目经理都是技术专家出身 xff0c 所以标题给了 34 新入职 34 由于旧习惯 xff0c 身上可能存在众多需要改进的地方 一 不明确自身的职责 你不在是个码农 xff1f 公司聘请你不是为了让你去写代码 xff
  • How Android Handles Touches

    Touch System overview Touch Event Framework Custom Touch Handling System Provided Touch Handlers System Provided Gesture
  • MFCC特征介绍

    MFCC特征介绍 在语音识别技术中 xff0c 需要提取音频的特征 xff0c 然后就可以使用该音频进行模型的训练或者是进行识别 xff0c 目前很常用的一种特征叫做MFCC特征 xff0c 又叫做梅尔倒谱系数特征 MFCC特征保留了语义相
  • 字符串大小比较问题

    首先 字符串比较函数 xff1a strcmp xff08 字符串1 字符串2 xff09 xff1b 其使用规则为 xff1a 若字符串1和字符串2相等 xff0c 返回0 若字符串1大于字符串2 xff0c 返回一个正整数 43 1 若
  • OBS 录制没有声音怎么办?

    1 检查obs设置 音频 是否是默认选项 2 检查win10 是否允许使用麦克风 1 xff09 右下角出现麦克风标识 2 xff09 设置 隐私 麦克风 xff0c 查看允许放开你的麦克风是否打开 如果上述还是为解决问题 xff0c 那么
  • android.os.deadObjectException异常

    deadObjectException异常 xff0c 说明应用的service已经停止 xff0c 要么是从操作系统中丧生 xff0c 要么从应用程序中终止
  • 2038问题

    2038年一月19号 xff0c 星期二 xff0c 凌晨3点14分7秒钟的时候 xff0c 如果Linux程序员会做恶梦的话 xff0c 那么梦的内容一定是关于这个日期的 xff0c 在这一秒钟滑过后 xff0c 凡是安装着linux的计
  • ChkBugReport工具for Android

    关于这个工具 xff0c 找到的资料都比较旧了 xff0c 貌似是索尼移动的开发人员开发的 xff0c 2014年左右的文章比较多 xff0c 应该是那个时候索尼移动还是比较鼎盛的时期吧 现在已经很少看到关于这个工具的文章了 xff0c G
  • kernel panic

    Linux kernel panic是很难定位和排查的重大故障 一旦系统发生了kernel panic xff0c 相关的日志信息非常少 xff0c 而一种常见的排查方法 重现法 又很难实现 xff0c 因此遇到kernel panic的问
  • PS域业务与CS域业务的区别

    1 CS和PS是针对核心网部分而言的 xff0c 两者的不同在于交换方式 CS是电路交换 xff0c 通信之前 xff0c 资源预留 xff0c 不同用户独占各自分配的资源 xff0c 没有统计复用 PS是包交换 xff0c 不同的用户可以
  • sh_脚本语法

    介绍 xff1a 1 开头 程序必须以下面的行开始 xff08 必须方在文件的第一行 xff09 xff1a bin sh 符号 用来告诉系统它后面的参数是用来执行该文件的程序 在这个例子中我们使用 bin sh来执行程序 当编写脚本完成时
  • 【深度学习系列(三)】:基于CNN+seq2seq公式识别系统实现 (1)

    这段时间一直在做公式识别相关的项目 xff0c 尝试了传统的方法 xff0c 效果不怎么好 想到能不能使用深度学习的方法进行相关方法 然后在github找到了相关代码 xff0c 这里做下分析 具体github地址 xff1a GitHub
  • 困惑多年,为什么printf可以重定向?

    很多人在用printf函数进行串口打印的时候 xff0c 都会被告知需要重定向fputc函数 xff08 别的平台可能不是这个函数 xff09 xff0c 让字符串数据输出到指定串口 xff0c 按照网上的教程也能很快解决 但是却没人告诉你
  • 多线程并发编程

    文章目录 多线程并发编程一 多线程带来的问题相关概念 二 互斥1 互斥与互斥量2 申请互斥量I 静态方法申请互斥量 xff1a II 动态方法申请互斥量 xff1a 3 利用互斥量加锁与解锁4 销毁互斥量5 互斥量综合应用 模拟抢票6 互斥
  • 【嵌入式】---- 串口UART波形分析

    串口参数的配置 波特率 xff08 bit s xff09 xff1a 大多数使用115200 但有些芯片特殊 xff0c 具体要看数据手册中波特率的容错率 比如中微的CMS32L051就不支持115200bps 停止位 xff1a 一般选
  • 手把手教你用JAVA实现“语音合成”功能(文字转声音)标贝科技

    手把手教你用JAVA实现 语音合成 功能 xff08 文字转声音 xff09 标贝科技 前言 什么是语音合成 xff1f 将文本转换成自然流畅的语音 xff0c 本篇文章将介绍 实时在线合成 xff08 文本长度不得超过1024字节 xff
  • cv::imread(cv::String const&, int)’未定义的引用

    在 Makefile文件的195 行 LIBRARIES 43 61 opencv core opencv highgui opencv imgproc 后面添加 xff1a opencv imgcodecs opencv videoio修
  • 【C/C++】C++ 网络多线程编程

    关键词 xff1a C C 43 43 网络编程 多线程 套接字 UDP 前言 学习C 43 43 网络编程多线程编程的目的 xff1a 巩固C 43 43 xff1b 由于C 43 43 大多用于服务器 xff0c 因此网络和多线程是进入
  • 在ubuntu20.04上配置VINS_Fusion(亲测有效,一应俱全)

    最近在做科研训练的时候配置了HKUST Aerial Robotics实验室的VINS Fusion代码项目 xff0c 经历了一些编译报错的问题 xff0c 在网上查找的时候博客内容良莠不齐 xff0c 且实质针对性意见不多 xff0c