Ubuntu安装Vins-Fusion(1) —— Ubuntu18.04安装vins

目录

    • 前言
  • 1、准备
    • 1.1 安装ROS
    • 1.2 安装 Ceres Solver
  • 2、安装 VINS-Fusion
  • 3、测试(EuRoC MAV 数据集)
    • 3.1、下载数据集
    • 3.2 Monocualr camera + IMU
    • 3.3 Stereo cameras + IMU
    • 3.4 Stereo cameras
  • 参考

前言

VINS-Fusion 是一种基于优化的多传感器状态估计器,可为自主应用(无人机、汽车和 AR/VR)实现精确的自定位。它常用于无人机的自主导航和飞行控制,通过融合视觉和惯性数据实现高精度定位和导航。VINS-Fusion 是 VINS-Mono 的扩展,它支持多种视觉惯性传感器类型(单目摄像头 + IMU、双目摄像头 + IMU,只有双目摄像头)。

我的配置如下:
虚拟机 Ubuntu 18.04 (运行内存 4G、硬盘内存 60G) 、ROS melodic 、ceres-solver 1.14

1、准备

1.1 安装ROS

安装 VINS-Fusion 之前必须要安装好ROS,ROS安装教程可以参考这篇文章👇

ubuntu安装ROS melodic(最新、超详细图文教程,包含配置rosdep)-CSDN博客

注:没有创建工作空间,可以执行下列代码,如果创建了可以跳过(catkin_make 与 catkin build 是编译功能包的两种工具,任选其一即可)

sudo apt-get install python-catkin-tools python-rosinstall-generator -y
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws
catkin init
catkin build
# catkin_make 
# mkdir -p ~/catkin_ws/src
# cd catkin_ws/src && catkin_init_workspace
# cd .. && catkin_make
echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc 

1.2 安装 Ceres Solver

Ceres Solver 是一个开源的 C++ 库,用于解决非线性最小二乘问题。它的自动微分、鲁棒优化算法以及高效的并行计算能力,使其成为解决复杂非线性优化问题的理想选择。它被广泛应用于计算机视觉、机器人和图像处理领域中的优化问题。

Ceres Solver 官方文档

GitHub 仓库

  • 安装依赖:
# CMake
sudo apt-get install cmake
# google-glog + gflags
sudo apt-get install libgoogle-glog-dev libgflags-dev
# Use ATLAS for BLAS & LAPACK
sudo apt-get install libatlas-base-dev
# Eigen3
sudo apt-get install libeigen3-dev
# SuiteSparse (可以安装,也可以不安装)
sudo apt-get install libsuitesparse-dev
  • 下载 Ceres Solver 源码:
wget ceres-solver.org/ceres-solver-1.14.0.tar.gz

在这里插入图片描述

  • 编译 Ceres Solver
tar zxf ceres-solver-1.14.0.tar.gz
mkdir ceres-bin
cd ceres-bin
cmake ../ceres-solver-1.14.0

在这里插入图片描述

make -j3  # 大概几分钟

在这里插入图片描述

make test
# 这一步必须每个 test 都通过

在这里插入图片描述

  • 安装 Ceres Solver
# 可选择 make isntall 安装 Ceres,也可使用 CMake 导出,CMake 可以无需安装即可使用 Ceres
# 更多信息请参阅 EXPORT_BUILD_DIR 选项的文档,有关 EXPORT_BUILD_DIR 选项的更多信息。
sudo make install

在这里插入图片描述

  • 测试:
./bin/simple_bundle_adjuster ../ceres-solver-1.14.0/data/problem-16-22106-pre.txt

测试结果:

iter      cost      cost_change  |gradient|   |step|    tr_ratio  tr_radius  ls_iter  iter_time  total_time0  4.185660e+06    0.00e+00    1.09e+08   0.00e+00   0.00e+00  1.00e+04        0    5.62e-02    1.64e-011  1.062590e+05    4.08e+06    8.99e+06   5.36e+02   9.82e-01  3.00e+04        1    1.26e-01    2.90e-012  4.992817e+04    5.63e+04    8.32e+06   3.19e+02   6.52e-01  3.09e+04        1    1.18e-01    4.08e-013  1.899774e+04    3.09e+04    1.60e+06   1.24e+02   9.77e-01  9.26e+04        1    1.20e-01    5.28e-014  1.808729e+04    9.10e+02    3.97e+05   6.39e+01   9.51e-01  2.78e+05        1    1.20e-01    6.48e-015  1.803399e+04    5.33e+01    1.48e+04   1.23e+01   9.99e-01  8.33e+05        1    1.20e-01    7.67e-016  1.803390e+04    9.02e-02    6.35e+01   8.00e-01   1.00e+00  2.50e+06        1    1.19e-01    8.86e-01Solver Summary (v 1.14.0-eigen-(3.3.4)-lapack-suitesparse-(5.1.2)-cxsparse-(3.1.9)-eigensparse-openmp-no_tbb)Original                  Reduced
Parameter blocks                        22122                    22122
Parameters                              66462                    66462
Residual blocks                         83718                    83718
Residuals                              167436                   167436Minimizer                        TRUST_REGIONDense linear algebra library            EIGEN
Trust region strategy     LEVENBERG_MARQUARDTGiven                     Used
Linear solver                     DENSE_SCHUR              DENSE_SCHUR
Threads                                     1                        1
Linear solver ordering              AUTOMATIC                 22106,16
Schur structure                         2,3,9                    2,3,9Cost:
Initial                          4.185660e+06
Final                            1.803390e+04
Change                           4.167626e+06Minimizer iterations                        7
Successful steps                            7
Unsuccessful steps                          0Time (in seconds):
Preprocessor                         0.107879Residual only evaluation           0.093588 (7)Jacobian & residual evaluation     0.309654 (7)Linear solver                      0.358153 (7)
Minimizer                            0.848724Postprocessor                        0.003480
Total                                0.960084Termination:                      CONVERGENCE (Function tolerance reached. |cost_change|/cost: 1.769761e-09 <= 1.000000e-06)

2、安装 VINS-Fusion

执行下列命令:

cd ~/catkin_ws/src
git clone https://github.com/HKUST-Aerial-Robotics/VINS-Fusion.git
cd ../
catkin build # 大概几分钟

在这里插入图片描述

source ~/.bashrc

3、测试(EuRoC MAV 数据集)

3.1、下载数据集

点击下载地址 ,下载 MH_01_easy.bag,浏览器默认下载到 Downloads 目录。
在这里插入图片描述

3.2 Monocualr camera + IMU

执行下面命令:

roslaunch vins vins_rviz.launch
rosrun vins vins_node ~/catkin_ws/src/VINS-Fusion/config/euroc/euroc_mono_imu_config.yaml 
(可选) rosrun loop_fusion loop_fusion_node ~/catkin_ws/src/VINS-Fusion/config/euroc/euroc_mono_imu_config.yaml 
rosbag play ~/Downloads/MH_01_easy.bag

在这里插入图片描述

3.3 Stereo cameras + IMU

执行下面命令:

roslaunch vins vins_rviz.launch
rosrun vins vins_node ~/catkin_ws/src/VINS-Fusion/config/euroc/euroc_stereo_imu_config.yaml 
(可选) rosrun loop_fusion loop_fusion_node ~/catkin_ws/src/VINS-Fusion/config/euroc/euroc_stereo_imu_config.yaml 
rosbag play ~/Downloads/MH_01_easy.bag

在这里插入图片描述

3.4 Stereo cameras

执行下面命令:

roslaunch vins vins_rviz.launch
rosrun vins vins_node ~/catkin_ws/src/VINS-Fusion/config/euroc/euroc_stereo_config.yaml 
(可选) rosrun loop_fusion loop_fusion_node ~/catkin_ws/src/VINS-Fusion/config/euroc/euroc_stereo_config.yaml 
rosbag play ~/Downloads/MH_01_easy.bag

在这里插入图片描述

参考

VINS-Fusion 论文

GitHub - HKUST-Aerial-Robotics/VINS-Fusion: An optimization-based multi-sensor state estimator

Installation — Ceres Solver (ceres-solver.org)

vins-fusion环境配置、安装与测试-CSDN博客

Installation — Ceres Solver (ceres-solver.org)

vins-fusion环境配置、安装与测试-CSDN博客

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

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

相关文章

Python接口测试实战之搭建自动化测试框架

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 一.数据分离:从Excel中读取数据 之前的用例中&#xff0c;数据直接写在代码文件里&#xff0c;不…

C++初学者指南第一步---7.控制流(基础)

C初学者指南第一步—7.控制流&#xff08;基础&#xff09; 文章目录 C初学者指南第一步---7.控制流&#xff08;基础&#xff09;1.术语:表达式/语句Expressions表达式Statements语句 2.条件分支3.Switching(切换):基于值的分支4.三元条件运算符5.循环迭代基于范围的循环   C…

Java基础 - 练习(三)打印空心菱形

Java基础练习 打印空心菱形&#xff0c;先上代码&#xff1a; public static void diamond() {//控制行数for (int i 1; i < 4; i) {//空格的个数for (int k 1; k < 4 - i; k) {System.out.print(" ");}//控制星星个数的时候和行有关for (int j 1; j <…

linux配置Vnc Server给Windows连接

1. linux 安装必要vnc server和桌面组件 sudo apt -y install tightvncserversudo apt install xfce4 xfce4-goodies2. linux 配置vncserver密码 #bash vncserver参考: https://cn.linux-console.net/?p21846#google_vignette 3. 将启动桌面命令写入.vnc/xstartup # .vnc/x…

TIME_WAIT的危害

前言 该文章主要讨论下TIME_WAIT的存在意义和潜在危害&#xff0c;以及解决措施。 具体内容 首先看一下下面这幅图 这幅图来自《TCP IP详解卷1&#xff1a;协议 原书第2版中文》TCP状态变迁图。 TIME_WAIT存在意义 可靠的终止TCP连接。 保证让迟来的TCP报文有足够的时间被…

【YOLOv10改进[注意力]】添加注意力CascadedGroupAttention(2023) + 含全部代码和详细修改方式 + 手撕结构图 + 全网首发

本文将进行使用注意力CascadedGroupAttention的实践,助力YOLOv10目标检测效果的实践,文中含全部代码、详细修改方式以及手撕结构图。助您轻松理解改进的方法。 改进前和改进后的参数对比: 目录 一 CascadedGroupAttention 二 使用注意力CascadedGroupAttention 1 整体…

KVB投资安全小知识:你知道情绪面、技术面与基本面的关系吗?

摘要&#xff1a;当涉及到金融市场分析时&#xff0c;情绪面、技术面和基本面是三个重要的方面。它们相互交织&#xff0c;共同影响着市场的走势和投资者的决策。下面我来详细解释它们之间的关系。 情绪面的影响 情绪面指的是投资者情绪和市场情绪&#xff0c;它反映了市场参与…

springboot+vue+mybatis酒店管理系统+PPT+论文+讲解+售后

基于Spring框架的小型宾馆旅客信息管理系统采用B/S结构、java开发语言、以及Mysql数据库等技术。系统主要分为管理员和用户二部分&#xff0c;管理员&#xff1a;首页、个人中心、用户管理、客房类型管理、客房信息管理、客房预订管理、入住登记管理、退房评价管理、系统管理&a…

Qt6之调色板QPaletee

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言Qt之调色板 QPalette什么是 QPalette&#xff1f;QPalette 的作用如何使用 QPaletteQPalette可设置的部分常规操作示例代码和运行效果图 总结 前言 在开发 Qt …

【C语言】C语言入门宝典:核心概念全解析

. C语言专栏 | C专栏 &#x1f449; 个人主页 &#x1f448; 前言 此篇文章我们主要是宏观的了解一下什么是C语言&#xff0c;C语言里面有那些知识点&#xff0c;所有的知识点我们此篇只是以入门为主&#xff0c;点到为止&#xff0c;简单易懂&#xff0c;后期的文章会一 一详…

Servlet实践操作

Servlet运行原理 Tomcat 的代码内置了 main 方法&#xff0c;当我们启动 Tomcat 的时候&#xff0c;就是从 Tomcat 的 main 方法开始执行的 被 WebServlet 注解修饰的类会在 Tomcat 启动的时候就被获取并集中管理 Tomcat 通过反射这样的语法机制来创建被 WebServlet 注解修饰…

PCB设计隐藏的陷进

1、BGA芯片的开窗和过油设计。 加工工艺中&#xff0c;范式过孔都需要盖油设计&#xff0c;实心焊盘需要开窗设计&#xff0c;坚决不能盖油。 2、通孔设计的互联连通性 比如H3芯片的wifi设计&#xff0c;实际上是没有联通的&#xff0c;虽然四层板的中间层有焊盘&#xff0c;但…

【FreeRTOS】估算栈的大小

参考《FreeRTOS入门与工程实践(基于DshanMCU-103).pdf》 目录 估算栈的大小回顾简介计算说明估计函数用到的栈有多大合计 估算栈的大小 回顾 上一篇文章链接&#xff1a;http://t.csdnimg.cn/Cc8b4 传送门: 上一篇文章 上一篇文章创建的三个任务 /* 创建任务&#xff1a;声 *…

LabVIEW开发为何仿制(致敬)经典成熟软件

​仿制&#xff08;致敬&#xff09;成熟软件进行LabVIEW开发更方便&#xff0c;因其提供了稳定的架构和结构、优化的用户体验和界面设计、技术规范和标准、稳定性和可靠性。结合用户手册和现有操作进行仿制&#xff0c;就像小米致敬保时捷一样&#xff0c;可以提高开发效率、降…

vivado SITE

描述 SITE是一个设备对象&#xff0c;表示许多不同类型的逻辑资源之一 可在目标Xilinx FPGA上获得。 SITE包括SLICE/CLB&#xff0c;它们是基本逻辑元件&#xff08;BEL&#xff09;的集合&#xff0c;如 查找表&#xff08;LUT&#xff09;、触发器、多路复用器&#xff0c;携…

QT/基于TCP的服务端实现

代码 widget.cpp #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget),p(new QTcpServer(this))//给服务器指针申请空间 {ui->setupUi(this); }Widget::~Widget() {delete ui; }void W…

实测:三款垃圾CPU推理Llama3 8B

经常有一些朋友问我本地运行大模型的电脑需要什么样的配置。其实一些常用大模型的运行需要的硬件并不像我们想象的那样高不可攀。不要被那些复杂的技术术语所吓倒&#xff0c;关键在于亲自动手尝试。 “不试&#xff0c;怎么知道呢&#xff1f;” 这句话道出了真理。今天&#…

【Linux】基础IO_1

文章目录 六、基础IO1. C语言的文件接口2. 系统文件I/O 未完待续 六、基础IO 1. C语言的文件接口 我们知道 文件 文件内容 文件属性 。即使是一个空文件&#xff0c;仍然会在磁盘中占据空间。那打开文件是什么意思呢&#xff1f;其实文件打开的意思就是&#xff1a;将文件从…

力扣每日一题 6/19 排序+动态规划

博客主页&#xff1a;誓则盟约系列专栏&#xff1a;IT竞赛 专栏关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ 2713.矩阵中严格递增的单元格数【困难】 题目&#xff1a; 给你一个下标从…

【学习DayNa】信息系统开发整理

✍&#x1f3fb;记录学习过程中的输出&#xff0c;坚持每天学习一点点~ ❤️希望能给大家提供帮助~欢迎点赞&#x1f44d;&#x1f3fb;收藏⭐评论✍&#x1f3fb;指点&#x1f64f; 结构化方法 结构是指系统内各个组成要素之间的相互联系、相互作用的框架。结构化开发方法就是…