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

news2025/2/4 20:50:45

目录

    • 前言
  • 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

对于Ubuntu 20.04 可参考 👉 Ubuntu安装Vins-Fusion(2) —— Ubuntu20.04安装vins-CSDN博客

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_time
   0  4.185660e+06    0.00e+00    1.09e+08   0.00e+00   0.00e+00  1.00e+04        0    5.62e-02    1.64e-01
   1  1.062590e+05    4.08e+06    8.99e+06   5.36e+02   9.82e-01  3.00e+04        1    1.26e-01    2.90e-01
   2  4.992817e+04    5.63e+04    8.32e+06   3.19e+02   6.52e-01  3.09e+04        1    1.18e-01    4.08e-01
   3  1.899774e+04    3.09e+04    1.60e+06   1.24e+02   9.77e-01  9.26e+04        1    1.20e-01    5.28e-01
   4  1.808729e+04    9.10e+02    3.97e+05   6.39e+01   9.51e-01  2.78e+05        1    1.20e-01    6.48e-01
   5  1.803399e+04    5.33e+01    1.48e+04   1.23e+01   9.99e-01  8.33e+05        1    1.20e-01    7.67e-01
   6  1.803390e+04    9.02e-02    6.35e+01   8.00e-01   1.00e+00  2.50e+06        1    1.19e-01    8.86e-01

Solver 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                   167436

Minimizer                        TRUST_REGION

Dense linear algebra library            EIGEN
Trust region strategy     LEVENBERG_MARQUARDT

                                        Given                     Used
Linear solver                     DENSE_SCHUR              DENSE_SCHUR
Threads                                     1                        1
Linear solver ordering              AUTOMATIC                 22106,16
Schur structure                         2,3,9                    2,3,9

Cost:
Initial                          4.185660e+06
Final                            1.803390e+04
Change                           4.167626e+06

Minimizer iterations                        7
Successful steps                            7
Unsuccessful steps                          0

Time (in seconds):
Preprocessor                         0.107879

  Residual only evaluation           0.093588 (7)
  Jacobian & residual evaluation     0.309654 (7)
  Linear solver                      0.358153 (7)
Minimizer                            0.848724

Postprocessor                        0.003480
Total                                0.960084

Termination:                      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博客

如有其他问题,或者发现文章有错误,请在评论区留言
Keep learning!

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

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

相关文章

华为RH2288 V3安装 Linux 系统,安装过程心得

带着U盘&#xff0c;怀着激动的心情进入机房安装操作系统&#xff0c;结果没有显示器和键盘鼠标&#xff0c;傻眼了。 作为过来人&#xff0c;温馨提醒&#xff0c;进入机房前记得先打听&#xff0c;准备好这些&#xff1a;机房房间号、机柜编号、物理机编号、键盘、鼠标、显示…

C#调用OpenCvSharp计算并显示带掩膜的图像直方图

之前的文章简要测试了调用OpenCvSharp的Cv2.CalcHist函数计算直方图的用法&#xff0c;不过使用过程中参数mask的值始终为null&#xff0c;也就是计算的整幅图像的直方图&#xff0c;如果mask不为空&#xff0c;则可以计算图像指定区域的直方图&#xff0c;本文学习掩膜的创建方…

一键部署开源PaaS服务Dokploy,代替Vercel, Netlify 以及 Heroku

前言 Vercel, Netlify 以及 Heroku都是知名的PaaS&#xff08;Platform as a Service|平台即服务&#xff09;服务商&#xff0c;利用这些平台我们可以方便快捷的进行项目部署。尤其是各家生态完善&#xff0c;是很多独立开发者的首选之地。 但是随之而来的就是另外的隐患了&…

如何用Spring使用Redis作为消息订阅?

目录 一、Spring 框架介绍二、Redis 框架介绍三、什么是消息订阅四、如何用Spring使用Redis作为消息订阅 一、Spring 框架介绍 Spring 框架是一个开源的 Java 平台&#xff0c;它提供了全面的基础设施支持&#xff0c;以便您可以更容易地开发 Java 应用程序。Spring 处理了基础…

全局唯一ID生成

全局ID生成器&#xff0c;是一种在分布式系统下用来生成全局唯一ID的工具需满足以下特性&#xff1a; 唯一性、递增性、安全性、高可用、高性能 生成在所有库或表中都满足唯一得ID 实现&#xff1a; 利用Redis的自增功能 INCRBY key increment (INCRBY | Docs)&#xff0c;并在…

mysql 某个时间字段取值时间标识的字符串的值

SELECT STR_TO_DATE(substr(out_trade_no, 1,14), %Y-%m-%d %H:%i:%s) FROM o_order WHERE id 364457; UPDATE o_order SET created_time DATE_FORMAT(STR_TO_DATE(substr(out_trade_no, 1,14), %Y%m%d %H%i%s), %Y-%m-%d %H:%i:%s) WHERE id 364457; 举例&#xff1a; 1…

第9章 EM算法:例题及课后习题

1 概要 1&#xff0e;EM算法是含有隐变量的概率模型极大似然估计或极大后验概率估计的迭代算法。含有隐变量的概率模型的数据表示为 P ( Y , Z ∣ θ ) P(Y,Z|\theta) P(Y,Z∣θ)。这里&#xff0c; Y Y Y是观测变量的数据&#xff0c; Z Z Z是隐变量的数据&#xff0c; θ \t…

▶《强化学习的数学原理》(2024春)_西湖大学赵世钰 Ch4 值迭代 与 策略迭代 【动态规划 model-based】

PPT 截取必要信息。 课程网站做习题。总体 MOOC 过一遍 1、视频 学堂在线 习题 2、过 电子书 补充 【下载&#xff1a; 本章 PDF 电子书 GitHub】 [又看了一遍视频。原来第一次跳过了好多内容。。。] 3、总体 MOOC 过一遍 习题 学堂在线 课程页面链接 中国大学MOOC 课程页面链…

keep-alive实现页面缓存

<!--router-view 实现页面缓存--> <router-view v-slot"{Component}"><keep-alive :max"8"><component :is"Component"></component></keep-alive> </router-view>

【环境搭建】windows下MySQL8与5共存

目录 一、安装MySQL81.官网下载2.初始化mysql文件夹中my.ini文件3.初始化data文件夹&#xff0c;并记录初始密码4.安装服务&#xff0c;指定服务名称5.启动服务6.测试登录并修改密码 二、安装MySQL51.mysql5文件夹中初始化my.ini文件2.初始化data文件夹&#xff0c;并记录初始密…

什么是正态分布

最重要的连续分布的通用名是概率密度函数&#xff0c;而标准正态分布&#xff08;Standard Normal Distribution&#xff09; 是最重要的概率密度函数。这个连续分布之所以重要&#xff0c;我认为是因为它非常常见&#xff0c;换句话说&#xff0c;我们会很常用到它。标准正态分…

JVM专题六:JVM的内存模型

前面我们通过Java是如何编译、JVM的类加载机制、JVM类加载器与双亲委派机制等内容了解到了如何从我们编写的一个.Java 文件最终加载到JVM里的&#xff0c;今天我们就来剖析一下这个Java的‘中介平台’JVM里面到底长成啥样。 JVM的内存区域划分 Java虚拟机&#xff08;JVM&…

浙江工商大学24计算机考研数据,好几个专业都接收调剂,计专复试线284分!

浙江工商大学&#xff08;Zhejiang Gongshang University&#xff09;&#xff0c;简称“浙商大”&#xff08;ZJSU&#xff09;&#xff0c;坐落于浙江省杭州市&#xff0c;是中华人民共和国教育部、中华人民共和国商务部和浙江省人民政府共建的浙江省重点建设高校&#xff0c…

代理的匿名级别有哪些?为什么匿名性很重要?

在互联网时代&#xff0c;代理服务器在许多领域都扮演着重要的角色。无论是个人用户还是企业&#xff0c;都可能需要使用代理来保护自己的隐私和数据安全。在选择代理服务时&#xff0c;匿名级别是一个重要的考虑因素。本文将介绍代理的匿名级别&#xff0c;并解释为什么匿名性…

Tampermonkey油猴 跨域请求下载图片示例

Tampermonkey油猴 跨域请求下载图片示例 前言项目目标网站代码编写 运行效果 前言 需要用油猴采集并下载一个网站的图片&#xff0c;直接下下不了&#xff0c;搜了一下&#xff0c;是禁止跨域&#xff0c;使用CORS Unblock也不行&#xff0c;所以使用油猴自带的GM_xmlhttpRequ…

35 - 最后一个能进入巴士的人(高频 SQL 50 题基础版)

35 - 最后一个能进入巴士的人 -- sum(weight) over(order by turn) as total,根据turn升序&#xff0c;再求前面数的和 selectperson_name from(selectperson_name,sum(weight) over(order by turn) as totalfromQueue) new_Queue wheretotal<1000 order by total desc lim…

四川汇聚荣科技有限公司靠谱吗?

在如今这个信息爆炸的时代&#xff0c;了解一家公司是否靠谱对于消费者和合作伙伴来说至关重要。四川汇聚荣科技有限公司作为一家位于中国西部地区的企业&#xff0c;自然也受到了人们的关注。那么&#xff0c;这家公司究竟如何呢?接下来&#xff0c;我们将从多个角度进行深入…

高考填报志愿(选专业),怎样找准自己的兴趣?

在很多的高考报考指南中&#xff0c;第一要点&#xff0c;都会建议我们根据自己的兴趣来选择自己的专业。很多人虽然是依据这条规则&#xff0c;选择了自己大学的专业。却依然在学习的过程中发现&#xff0c;好像自己对这个专业并不是那么的有兴趣。 甚至对专业学习深入了解之…

2-13 基于matlab的电力负荷预测

基于matlab的电力负荷预测&#xff0c;论文阐述了负荷预测的应用研究现状&#xff0c;概括了负荷预测的特点及其影响因素&#xff0c;归纳了短期负荷预测的常用方法&#xff0c;并分析了各种方法的优劣&#xff1b;采用最小二乘支持向量机&#xff08;LSSVM&#xff09;模型&am…

web中间件漏洞-Redis漏洞未授权访问漏洞-写webshell、写ssh公钥

web中间件漏洞-Redis漏洞未授权访问漏洞 利用redis未授权访问漏洞写webshell 利用redis未授权访问、攻击机向服务器写入webshell 从服务器查看写入的webshell 菜刀连接 利用redis未授权访问漏洞写ssh公钥 kali生成rsa公私钥对 ssh-keygen -t rsa 将公钥id_rsa.pub写入文…