当前位置: 首页 > news >正文

电子地图 | VINS-FUSION | 小觅相机D系列

目录

一、相关介绍

二、VINS-FUSION环境安装及使用

(一)Ubuntu18.04安装配置

1、Ubuntu下载安装

2、设置虚拟内存(可选)

(二)VINS-FUSION环境配置

1、ros安装

2、ceres-solver安装

3、vins-fusion编译安装(可选,针对不接入小觅相机,仅想运行已有数据集)

(二)VINS-FUSION运行官方数据集

1、下载数据集

2、运行双目

3、运行单目+IMU

4、运行双目+IMU

三、VINS-FUSION接入小觅相机

(一)安装MYNT-EYE--FUSION-Sample

(二)安装MYNTEYE SDK

(三)实时建图+bag数据包采集


一、相关介绍

VINS系列|VINS-Fusion论文精读:一种通用的基于优化的多传感器局部里程计估计框架(上) - 知乎论文链接:https://arxiv.org/pdf/1901.03638.pdfGitHub链接:https://github.com/HKUST-Aerial-Robotics/VINS-Fusion 作者:自动驾驶专栏 | 原文出处:公众号【自动驾驶专栏】摘要如今,越来越多的传感器装载在机…icon-default.png?t=N7T8https://zhuanlan.zhihu.com/p/627643416

VINS-FUSION算法总结_Lusix1949的博客-CSDN博客vins-fusion在将单目vio系统vins-mono扩展到了双目,同时添加了GPS的融合信息,支持纯双目、双目+IMU、双目+imu+GPS、单目+IMU等多种传感器组合方式。本篇对vins-fusion的主要改进点进行总结。_vins-fusionhttps://blog.csdn.net/guanjing_dream/article/details/129187579

VINS-FUSION 前端后端代码全详解_vins-fusion 源码解读_敢敢のwings的博客-CSDN博客本次工作我首先一步步的把代码全部注释了,十分的详细,对于C++和OpenCV的一些操作也进行了详细的注释,对于刚入门的同学应该还是有帮助的。之后我将代码开源,并写了相应的博客进行讲解。1. 程序入口rosNodeTest.cpp1.1 定义内容运行程序时,首先进入的是主程序vins_estimator/src/estimator/rosNodeTest.cpp里边主要定义了 估计器、 缓存器 、 获取传感器数据的函数 和 一个主函数// 获得左目的messagevoid img0_callb_vins-fusion 源码解读https://blog.csdn.net/lovely_yoshino/article/details/118729353

二、VINS-FUSION环境安装及使用

VINS-FUSION可以运行录制好的图像数据集实现地图绘制,也可以接入相机实时绘制地图。我们可以根据需要进行环境配置。

(一)Ubuntu18.04安装配置

小觅相机最高支持到ubuntu18版本,因此我们在Ubuntu18.04系统下完成vins-fusion的环境搭建。

1、Ubuntu下载安装

ubuntu18.04系统安装教程(如果在新电脑上直接安装Ubuntu单系统,参考该博客至制作启动盘即可,完成后直接将USB插入电脑并按照提示步骤安装ubuntu):

Ubuntu18.04安装教程——超详细的图文教程_ubuntu18.04安装教程——超详细的图文教程_ubuntu18.04安装教程——超详细的图文-CSDN博客Ubuntu18.04镜像_ubuntu18.04安装教程——超详细的图文教程_ubuntu18.04安装教程——超详细的图文https://blog.csdn.net/weixin_44623637/article/details/106723462

2、设置虚拟内存(可选)

ubuntu设置虚拟内存_ubuntu 虚拟内存_白依山的博客-CSDN博客ubuntu设置虚拟内存一:查看当前交换内存第二行 Swap:可以看到,目前交换分区的大小为0二:创建交换分区切换用户到root在根目录下创建swap目录,进入swap目录输入创建交换分区命令我这里是创建了一个12g的交换分区,各自根据各自的内存,酌情创建,下图是ubuntu建议设置的大小制作交换文件挂载交换分区如果挂载时提示这个信息,则需要需改交换文件的权限其中swapoff swapfile 是卸载交换分区的命令,再次输入挂载命令,会发现没有提示了。此时再输入_ubuntu 虚拟内存https://blog.csdn.net/weixin_42431643/article/details/124842425

(二)VINS-FUSION环境配置

1、ros安装

参考以下教程

ROS安装-Ubuntu18.04安装配置ROS melodic_ubuntu18.04安装ros_不加黄花菜的博客-CSDN博客最近小白周围的同学都陆陆续ROS,小白也是帮几个同门安装了几次ROS,想来发表一篇关于本人常用的安装ROS步骤的文章,以便未来的师弟师妹,和需要安装ROS同学们,可以少踩一些坑,顺利地将ROS安装成功,更快地开展接下来的科研和项目工作。_ubuntu18.04安装roshttps://blog.csdn.net/weixin_41485784/article/details/126655268

2、ceres-solver安装

(1)在Release 2.0.0 · ceres-solver/ceres-solver · GitHub上下载需要的ceres-solver版本并解压。

这里使用的是2.0.0版本:

(2)接下来,安装ceres-solver需要的相关依赖:

sudo apt-get install liblapack-dev libsuitesparse-dev libcxsparse3 libgflags-dev libgoogle-glog-dev libgtest-dev

(3)安装ceres-solver:

cd ceres-solver-2.0.0  //进入解压后的ceres-solver文件夹
mkdir build		//创建build文件夹
cd build
cmake ..
make -j4  //
sudo make install

3、vins-fusion编译安装(可选,针对不接入小觅相机,仅想运行已有数据集)

(1)在主目录新建文件夹fusion_ws/src,并在其中修改、构建和安装catkin包,从而实现ros工作空间的创建:

mkdir -p ~/fusion_ws/src
cd ~/fusion_ws/src

(2)将vins-fusion项目clone到src目录下并解压:

git clone https://github.com/HKUST-Aerial-Robotics/VINS-Fusion.git

(3)返回上一级目录,执行catkin_make:

cd ..
catkin_make

如果上述命令成功运行,在fusion_ws工作空间会生成build、devel、src这个三个目录文件夹(这3个是catkin编译系统默认的):

  • build(Build Space):catkin(CMake)的缓存信息和其他中间件
  • devel(Development Space):生成目标文件(包括头文件、动态链接库、静态链接库、可执行文件等)、环境变量
  • src(Source Space):ROS的catkin软件包(源码)

Tips:

早期有些教程仍然保留catkin_init_workspace这条初始化命令,它的作用就是在fusion_ws工作空间的src目录下创建CMakeLists.txt 文件。但实际上catkin_make命令包含了catkin_init_workspace,不必再调用了(当然你也可以使用,没有任何影响)。

(4)接下来设置环境变量,首先source一下新生成的setup.*sh文件(在devel目录下可看见几个setup.*sh):

source devel/setup.bash

但是上述命令只适用当前终端,这导致每次打开新的终端都需要source命令一下,重新刷新环境变量,才能使用ROS相关命令。解决办法是,在终端中输入如下命令,如此每次打开终端,.bashrc会自动运行:

 echo "source ~/fusion_ws/devel/setup.bash" >> ~/.bashrcsource ~/.bashrc

至此,我们完成了vins-fusion的环境安装,可以通过一些官方提供的数据集来验证是否安装正确及环境是否完成搭建。

(二)VINS-FUSION运行官方数据集

1、下载数据集

下载链接:

kmavvisualinertialdatasets – ASL Datasets

我这里下载的是MH_01_easy.bag。

该数据集中包括了相机双目图像数据以及IMU数据。VINS-Fusion支持双目、单目+IMU以及双目+IMU,我们可以依次进行实验。

2、运行双目

(1)新建终端输入以下命令行,开启rviz实现ros可视化:

roslaunch vins vins_rviz.launch

(2)新建终端输入以下命令行,指向双目配置文件XXX_config.yaml。该配置文件中包括了相机的内参及外参、帧率等信息,在后期我们使用自己的相机时,如果对相机进行了更精确的标定,可以对这些参数进行修改,从而进一步提升建图的精准度。

这里我们直接使用官方默认参数。

rosrun vins vins_node ~/fusion_ws/src/VINS-Fusion/config/euroc/euroc_stereo_config.yaml 

(3)新建终端输入一下命令行,播放bag数据包。由于指定了配置文件,我们只会使用到bag包中双目图像帧数据。

rosbag play ~/MH_01_easy.bag

3、运行单目+IMU

新建终端分别输入以下命令行:

roslaunch vins vins_rviz.launch
rosrun vins vins_node ~/fusion_ws/src/VINS-Fusion/config/euroc/euroc_mono_imu_config.yaml  //除了相机参数,还包含IMU参数
rosrun loop_fusion loop_fusion_node ~/fusion_ws/src/VINS-Fusion/config/euroc/euroc_mono_imu_config.yaml  //开启回环检测,可选
rosbag play ~/MH_01_easy.bag

4、运行双目+IMU

roslaunch vins vins_rviz.launch
rosrun vins vins_node ~/fusion_ws/src/VINS-Fusion/config/euroc/euroc_stereo_imu_config.yaml 
rosbag play ~/MH_01_easy.bag

三、VINS-FUSION接入小觅相机

如果想实现实时绘图,我们则需要接入相机,在录制数据的过程中同时利用vins-fusion进行定位建图。这里我们使用D系列小觅相机,该相机可以同时采集双目图像及IMU数据,并在硬件上基本实现了左右目和IMU的时间同步。

小觅相机官方在github上提供了VINS-FUSION的样例,方便我们使用,地址:GitHub - slightech/MYNT-EYE-VINS-FUSION-Samples at master。该样例包括了Docker版本(docker_feat分支)和非Docker版本(master分支)。这里我们使用非Docker版本。

在接入小觅相机前,我们需要先保证ros和ceres-solver的正确安装。

(一)安装MYNT-EYE--FUSION-Sample

(1)在主目录新建文件夹catkin_ws工作空间:

mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src

(2)将MYNT-EYE--FUSION-Sample项目clone到src目录下并解压:

git clone https://github.com/slightech/MYNT-EYE-VINS-FUSION-Samples.git

(3)返回上一级目录,执行catkin_make:

cd ..
catkin_make

(4)配置环境变量:

 echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrcsource ~/.bashrc

(二)安装MYNTEYE SDK

参考官方教程:

MYNT EYE D SDK: Linux SDK 用户指南icon-default.png?t=N7T8https://slightech.github.io/MYNT-EYE-D-SDK/build_linux.html

(三)实时建图+bag数据包采集

1、将小觅相机连接到电脑上:

2、开启小觅相机:

cd MYNT-EYE-D-SDK-master  //进入小觅相机SDK
source ./wrappers/ros/devel/setup.bash  //将setup.bash挂载到ROS文件系统
roslaunch mynteye_wrapper_d vins_fusion.launch  //开启小觅相机

3、修改配置文件

以单目+IMU为例,其配置文件是~/catkin_ws/src/MYNT-EYE-VINS-FUSION-Samples-master/config/mynteye-d/mynt_mono_config.yaml,我们需要对输出结果的文件存放位置output_pathpose_graph_save_path进行修改。

其它参数我们暂时不进行修改,如果进行参数大修,那么需要重新对相机和IMU的参数进行标定,并将重投影误差控制在1px内。

4、以单目+IMU为例,输入如下命令运行vins-fusion:

cd ~/catkin_ws //进入catkin_ws工作空间
roslaunch vins mynteye-d-mono-imu.launch  //运行启动VINS-FUSION单目+IMU

实时建图效果如下:

5、及时开启一个新的命令窗口,同步进行数据包的录制(以便后期数据重用)

cd XXX //进入想存放数据包的文件夹
rosbag record /mynteye/left/image_color /mynteye/imu/data_raw //录制单目灰度图及IMU数据,这里的topic(image_color和data_raw)需要和前面提到的yaml配置文件保持一致,topic可以自行修改

录制完成后会生成一个带有录制时间的bag数据包,该数据包下包含了单目及IMU数据,ros topic分别为image_color和data_raw。基于该数据集,我们可以重绘电子地图,或对该数据进行一定处理,使得绘图更加准确。

利用该bag数据包绘制地图的命令如下:

roslaunch vins vins_rviz.launch
rosrun vins vins_node ~/catkin_ws/src/MYNT-EYE-VINS-FUSION-Samples-master/config/mynteye-d/mynt_mono_config.yaml
rosbag play XXX.bag   //XXX包含了路径及bag数据包名称

相关文章:

电子地图 | VINS-FUSION | 小觅相机D系列

目录 一、相关介绍 二、VINS-FUSION环境安装及使用 (一)Ubuntu18.04安装配置 1、Ubuntu下载安装 2、设置虚拟内存(可选) (二)VINS-FUSION环境配置 1、ros安装 2、ceres-solver安装 3、vins-fusion…...

C++goto语句

在本文中,您将了解goto语句,它是如何工作的,以及为什么应该避免它。在C 编程中,goto语句用于通过将控制权转移到程序的其他部分来更改程序执行的正常顺序。 goto语句的语法 goto label; ... .. ... ... .. ... ... .. ... label…...

Spring学习笔记11 GoF代理模式

Spring学习笔记10 JdbcTemplate_biubiubiu0706的博客-CSDN博客 新建个maven模块 static-proxy 演示静态代理 订单接口 测试 需求:统计每个业务方法的耗时 package com.example.proxy.service;/*** author hrui* date 2023/9/25 8:42*/ public class OrderServiceImpl implem…...

代码随想录二刷 Day23

669. 修剪二叉搜索树 找到小数字的右子树与大数字左子树必须要重新检查一遍然后让root的左右直接指向return的左右节点&#xff1b; class Solution { public:TreeNode* trimBST(TreeNode* root, int low, int high) {if (root NULL) return NULL;if (root->val < low…...

Ubuntu `apt` 报错 “Errors were encountered while processing: base-passwd“ 的解决方法

Ubuntu apt 更新时出现报错&#xff1a; Setting up base-passwd (3.5.52build1) ... Changing home-directory of irc from /var/run/ircd to /run/ircd 1 changes have been made, rewriting files Writing passwd-file to /etc/passwd Error making backupfile /etc/passwd…...

XXL-JOB分布式任务调度

XXL-JOB分布式任务调度 ​ 在实际项目中&#xff0c;为了降低耦合&#xff0c;通常会把定时任务的逻辑单独抽离出来&#xff0c;构建成一个新的工程。也有可能需要定时任务实现高可用&#xff0c;组建成集群&#xff0c;提高容错率。 ​ 那么问题也就来了。既然定时任务是多个…...

加拿大人工智能数据搜索平台【Secoda】完成1400万美元A轮融资

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 猛兽财经获悉&#xff0c;总部位于加拿大多伦多的人工智能数据搜索平台【Secoda】今日宣布已完成1400万美元A轮融资。 本轮融资由Craft Ventures领投&#xff0c;参与投资的投资机构有Abstract Ventures、现有投资者YCombi…...

less与sass

1.变量&#xff1a; Less: my-color: #ff0000;.container {background-color: my-color; } Sass:$my-color: #ff0000;.container {background-color: $my-color; } 在这点上&#xff0c;Less和Sass的变量概念基本相同&#xff0c;都是以声明的方式存储值&#xff0c;然后在…...

c-const修饰指针-day16

...

已解决: Go Error: no Go files in /path/to/directory问题

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页: &#x1f405;&#x1f43e;猫头虎的博客&#x1f390;《面试题大全专栏》 &#x1f995; 文章图文并茂&#x1f996…...

2022年6月和7月的工作经历

6月 3D打标软件 3D打标软件&#xff0c;要求在Open3d上加几个2D文字。大致有如下几个方案&#xff1a; 依葫芦画瓢&#xff0c;但O3DVisualizer派生于gui::Window&#xff0c;我的程序派生于Visualizer。工作量不小。 利用OpenGL输出文字&#xff0c;Baidu的两种方法一个编…...

【图像处理】SIFT角点特征提取原理

一、说明 提起在OpenCV中的特征点提取&#xff0c;可以列出Harris&#xff0c;可以使用SIFT算法或SURF算法来检测图像中的角特征点。本篇围绕sift的特征点提取&#xff0c;只是管中窥豹&#xff0c;而更多的特征点算法有&#xff1a; Harris & Stephens / Shi–Tomasi 角点…...

flutter开发实战-应用更新apk下载、安装apk、启动应用实现

flutter开发实战-应用更新apk下载、安装apk、启动应用实现 在开发过程中&#xff0c;经常遇到需要更新下载新版本的apk文件&#xff0c;之后进行应用更新apk下载、安装apk、启动应用。我们在flutter工程中实现下载apk&#xff0c;判断当前版本与需要更新安装的版本进行比对判断…...

DispatcherServlet初始化之Spring容器创建1.0

一、前言 在SpringMVC框架中&#xff0c;DispatcherServlet扮演着非常重要的角色&#xff0c;它负责接收所有的HTTP请求并将其分发给相应的处理器。在DispatcherServlet的初始化过程中&#xff0c;会创建一个Spring容器来管理应用程序中的Bean。 二、步骤 1、加载配置文件&a…...

CSS的基础

CSS美化HTML&#xff0c;布局网页 CSS最大的价值&#xff1a;由HTML专注去做结构呈现&#xff0c;样式给CSS&#xff0c;结构&#xff08;HTML)与样式&#xff08;CSS&#xff09;相分离 CSS主要由选择器以及一条或多条声明 在<head></head>中实现CSS在<body…...

mathtype如何嵌入到word中?详细mathtype安装步骤教程

mathtype是一款功能特别强大的数学方式编辑软件&#xff0c;为用户提供各种强大的数学公式符号帮助用户进行计算&#xff0c;并且速度很快。有小伙伴知道mathtype如何嵌入到word中吗&#xff0c;这里小编就给大家详细介绍一下mathtype嵌入到word中的方法&#xff0c;有需要的小…...

云安全之访问控制的常见攻击及防御

访问控制攻击概述 访问控制漏洞即应用程序允许攻击者执行或者访问某种攻击者不具备相应权限的功能或资源。 常见的访问控制可以分为垂直访问控制、水平访问控制及多阶段访问控制 (上下文相关访问控制)&#xff0c;与其相应的访问控制漏洞为也垂直越权漏洞(普通用户可以访问或…...

Java编程技巧:跨域

目录 1、跨域概念2、后端CORS&#xff08;跨域资源共享&#xff09;配置原理3、既然请求跨域了&#xff0c;那么请求到底发出去没有&#xff1f;4、通过后端CORS&#xff08;跨域资源共享&#xff09;配置解决跨域问题代码4.1、SpringBoot&#xff08;FilterRegistrationBean&a…...

react create-react-app 配置less

环境信息&#xff1a; create-react-app:v5 react:18.2.0 node:18.16.0 如果你不必须使用 less 建议直接使用scss。 因为less配置会遇到很多问题。 配置less过程&#xff1a; 如果你只需要 sass的话&#xff0c;就可以直接使用sass。因为默认配置了scss。 npm、yarn、cnpm、…...

树的表示——孩子兄弟表示法

从图中可以看出&#xff0c;树的每个结点&#xff0c;都有不确定的指向他们的孩子的节点&#xff0c;如果我们定义这样一个结构体来便是数的结构的话&#xff1a; struct TreeNode { int val; struct TreeNodep1; struct TreeNodep1; … }; 是不能够表示一棵树的&#xff0c;因…...

web vue 项目 Docker化部署

Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段&#xff1a; 构建阶段&#xff08;Build Stage&#xff09;&#xff1a…...

树莓派超全系列教程文档--(61)树莓派摄像头高级使用方法

树莓派摄像头高级使用方法 配置通过调谐文件来调整相机行为 使用多个摄像头安装 libcam 和 rpicam-apps依赖关系开发包 文章来源&#xff1a; http://raspberry.dns8844.cn/documentation 原文网址 配置 大多数用例自动工作&#xff0c;无需更改相机配置。但是&#xff0c;一…...

页面渲染流程与性能优化

页面渲染流程与性能优化详解&#xff08;完整版&#xff09; 一、现代浏览器渲染流程&#xff08;详细说明&#xff09; 1. 构建DOM树 浏览器接收到HTML文档后&#xff0c;会逐步解析并构建DOM&#xff08;Document Object Model&#xff09;树。具体过程如下&#xff1a; (…...

基于Docker Compose部署Java微服务项目

一. 创建根项目 根项目&#xff08;父项目&#xff09;主要用于依赖管理 一些需要注意的点&#xff1a; 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件&#xff0c;否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...

MySQL 8.0 OCP 英文题库解析(十三)

Oracle 为庆祝 MySQL 30 周年&#xff0c;截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始&#xff0c;将英文题库免费公布出来&#xff0c;并进行解析&#xff0c;帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...

MySQL中【正则表达式】用法

MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现&#xff08;两者等价&#xff09;&#xff0c;用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例&#xff1a; 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...

Device Mapper 机制

Device Mapper 机制详解 Device Mapper&#xff08;简称 DM&#xff09;是 Linux 内核中的一套通用块设备映射框架&#xff0c;为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程&#xff0c;并配以详细的…...

SQL慢可能是触发了ring buffer

简介 最近在进行 postgresql 性能排查的时候,发现 PG 在某一个时间并行执行的 SQL 变得特别慢。最后通过监控监观察到并行发起得时间 buffers_alloc 就急速上升,且低水位伴随在整个慢 SQL,一直是 buferIO 的等待事件,此时也没有其他会话的争抢。SQL 虽然不是高效 SQL ,但…...

TJCTF 2025

还以为是天津的。这个比较容易&#xff0c;虽然绕了点弯&#xff0c;可还是把CP AK了&#xff0c;不过我会的别人也会&#xff0c;还是没啥名次。记录一下吧。 Crypto bacon-bits with open(flag.txt) as f: flag f.read().strip() with open(text.txt) as t: text t.read…...

Python 高级应用10:在python 大型项目中 FastAPI 和 Django 的相互配合

无论是python&#xff0c;或者java 的大型项目中&#xff0c;都会涉及到 自身平台微服务之间的相互调用&#xff0c;以及和第三发平台的 接口对接&#xff0c;那在python 中是怎么实现的呢&#xff1f; 在 Python Web 开发中&#xff0c;FastAPI 和 Django 是两个重要但定位不…...