电子地图 | 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数据包名称

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

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

相关文章

微服务moleculer03

1. Moleculer 目前支持SQLite,MySQL,MariaDB,PostgreSQL,MSSQL等数据库,这里以mysql为例 2. package.json 增加mysql依赖 "mysql2": "^2.3.3", "sequelize": "^6.21.3", &q…

docker基础命令

目录 一、安装docker 1、查看是否已安装docker 2、如果系统中已经存在旧的Docker 3、配置Docker的yum库 4、安装成功后,执行命令,配置Docker的yum源 5、安装Docker 6、启动和校验 7、配置镜像加速器,阿里云镜像加速为例 7.1、在首页的…

LabVIEW开发虚拟与现实融合的数字电子技术渐进式实验系统

LabVIEW开发虚拟与现实融合的数字电子技术渐进式实验系统 数字电子技术是所有电气专业的重要学科基础,具有很强的理论性和实践性。其实验是提高学生分析、设计和调试数字电路能力,培养学生解决实际问题的工程实践能力,激发学生创新意识&…

38 翻转二叉树

翻转二叉树 理解题意&#xff0c;翻转即每个结点的左右子树翻转/对调题解1 递归——自下而上题解2 迭代——自上而下 给你一棵二叉树的根节点 root &#xff0c;翻转这棵二叉树&#xff0c;并返回其根节点。 提示&#xff1a; 树中节点数目范围在 [0, 100] 内-100 < Node.…

开源博客项目Blog .NET Core源码学习(3:数据库操作方式)

开源博客项目Blog采用SqlSugar模块连接并操作数据库&#xff0c;本文学习并记录项目中使用SqlSugar的方式和方法。   首先&#xff0c;数据库连接信息放在了App.Hosting项目的appsettings.json中DbConfig节&#xff0c;支持在DbConfig节配置多个数据库连接信息&#xff0c;以…

探索腾讯企业邮箱替代方案:选择适合你的新邮件服务

腾讯企业邮箱作为一款广受欢迎的企业级电子邮件服务&#xff0c;已经在国内市场占据了相当大的份额。然而&#xff0c;随着全球市场竞争的加剧&#xff0c;腾讯企业邮箱也面临着海外市场的挑战。本文将探讨腾讯企业邮箱出海的劣势&#xff0c;并推荐一些替代品牌&#xff0c;以…

多线程 - 阻塞式队列

阻塞队列 阻塞队列,也是一个队列 ~~ 先进先出 实际上有一些特殊的队列,不一定非得遵守先进先出的 ~~ 优先级队列(PriorityQueue) 阻塞队列,也是特殊的队列,虽然也是先进先出的,但是带有特殊的功能: 阻塞 如果队列为空,执行出队列操作,就会阻塞.阻塞到另一个线程往队列里添加元…

软件测试之Python基础学习

目录 一、Python基础 Python简介、环境搭建及包管理 Python简介 环境搭建 包管理 Python基本语法 缩进(Python有非常严格的要求) 一行多条语句 断行 注释 变量 基本数据类型(6种) 1. 数字Number 2. 字符串String 3. 列表List 4. 元组Tuple 序列相关操作方法 …

gitlab配置webhook限制提交注释

一、打开gitlab相关配置项 vim /etc/gitlab/gitlab.rb gitlab_shell[custom_hooks_dir] "/etc/gitlab/custom_hooks" 二、创建相关文件夹 mkdir -p /etc/gitlab/custom_hooks mkdir -p /etc/gitlab/custom_hooks/post-receive.d mkdir -p /etc/gitlab/custom_h…

[Linux 基础] 一篇带你了解linux权限问题

文章目录 1、Linux下的两种用户2、文件类型和访问权限&#xff08;事物属性&#xff09;2.1 Linux下的文件类型2.2 基本权限2.3 文件权限值的表示方法&#xff08;1&#xff09;字符表示方法&#xff08;2&#xff09;8进制数值表示方法 2.4 文件访问权限的相关设置方法(1) chm…

《 新手》web前端(axios)后端(java-springboot)对接简解

文章目录 <font color red>1.何为前后端对接?2.对接中关于http的关键点2.1. 请求方法2.2. 请求参数设置简解&#xff1a; 3.对接中的跨域(CROS)问题**为什么后端处理跨域尽量在业务之前进行&#xff1f;**3.总结 1.何为前后端对接? “前后端对接” 是指前端和后端两个…

【VR】【unity】如何在VR中实现远程投屏功能?

【背景】 目前主流的VD应用,用于娱乐很棒,但是用于工作还是无法效率地操作键鼠。用虚拟键盘工作则显然是不现实的。为了让自己的头显能够起到小面积代替多显示屏的作用,自己动手开发投屏VR应用。 【思路】 先实现C#的投屏应用。研究如何将C#投屏应用用Unity 3D项目转写。…

【开发篇】十三、J2cache缓存框架

文章目录 1、介绍2、二级缓存下数据的读取与更新3、整合4、使用举例5、配置的相关说明6、小结 1、介绍 J2cache是一个缓存整合框架&#xff0c;可以提供缓存的整合方案&#xff0c;使各种缓存搭配使用&#xff0c;自身不提供缓存功能。 J2cache是一个两次缓存的框架 第一级缓存…

国庆中秋特辑(五)MySQL如何性能调优?下篇

目录 5.数据库维护6. 数据库调优工具7.数据库架构优化8.代码层面优化9. 硬件层面优化10. 数据库安全 MySQL 性能优化是一项关键的任务&#xff0c;可以提高数据库的运行速度和效率。以下是一些优化方法&#xff0c;包括具体代码和详细优化方案。 接下来详细介绍&#xff0c;共有…

第1篇 目标检测概述 —(3)YOLO系列算法

前言&#xff1a;Hello大家好&#xff0c;我是小哥谈。YOLO&#xff08;You Only Look Once&#xff09;系列算法是一种目标检测算法&#xff0c;主要用于实时物体检测。相较于传统的目标检测算法&#xff0c;YOLO具有更快的检测速度和更高的准确率。YOLO系列算法的核心思想是将…

企业怎样选择适合的服务器租用?

随着互联网技术的发展&#xff0c;如何选择企业需要的服务器租用来满足需求是很多企业目前在考虑的问题&#xff0c;今天就让小编来给大家讲一讲吧&#xff01; 确定好服务器的规模和用途。企业首先根据自身的业务情况选择服务器的数量和规模还有性能&#xff0c;小型企业可以…

python复习

1.python属于解释型语言&#xff0c;解释器逐行解释每一句代码&#xff0c;然后执行 编译型语言需要由编译器生成最终可执行文件再执行 2. #单行注释""" 多行注释 """ 注释快捷键ctrl/ 3.变量是在计算机语言中能储存计算结果或表示某个数据…

计算机竞赛 深度学习机器视觉车道线识别与检测 -自动驾驶

文章目录 1 前言2 先上成果3 车道线4 问题抽象(建立模型)5 帧掩码(Frame Mask)6 车道检测的图像预处理7 图像阈值化8 霍夫线变换9 实现车道检测9.1 帧掩码创建9.2 图像预处理9.2.1 图像阈值化9.2.2 霍夫线变换 最后 1 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分…

1300*C. Rumor(并查集贪心)

解析&#xff1a; 并查集&#xff0c;求每个集合的最小费用。 每次合并集合的时候&#xff0c;根节点保存当前集合最小的费用。 #include<bits/stdc.h> using namespace std; #define int long long const int N1e55; int n,m,a[N],p[N],cnt[N]; int find(int x){retur…

S5PV210裸机(二):看门狗,栈,icache,SoC时钟,重加载,led

看门狗 电子设备会跑飞或者死机,需要设备自动复位,看门狗是SoC内部定时器,规定时间内需要重新置位,如果没有系统会被强制复位 WTCON&#xff08;0xE2700000&#xff09;&#xff0c;bit5是开关&#xff1a;0关&#xff0c;1开 汇编设置栈和调用C C运行过程中局…