电子地图 | 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.hqwc.cn/news/123935.html

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

相关文章

MySQL进阶 —— 超详细操作演示!!!(下)

MySQL进阶 —— 超详细操作演示!!!(下) 五、锁5.1 概述5.2 全局锁5.3 表级锁5.4 行级锁 六、InnoDB 引擎6.1 逻辑存储结构6.2 架构6.3 事务原理6.4 MVCC 七、MySQL 管理7.1 系统数据库7.2 常用工具 MySQL— 基础语法大…

【Linux指令集】---git命令的基本使用

个人主页:兜里有颗棉花糖 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创 收录于专栏【Linux专栏】🎈 本专栏旨在分享学习Linux的一点学习心得,欢迎大家在评论区讨论💌 演示环境&#xff1…

【Leetcode】 131. 分割回文串

给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是 回文串 。返回 s 所有可能的分割方案。 回文串 是正着读和反着读都一样的字符串。 示例 1: 输入:s "aab" 输出:[["a","a"…

Django之ORM操作初了解

文章开篇,我们首先复习下Django架构中的MTV模式,分别以字母来翻译就是: Views-代码的核心逻辑Tamplates-展示在页面上的html代码Models-对数据库的操作 那么Models中最为核心的便是本篇所介绍的ORM。 一)基本知识 ORM&#xf…

R语言进行孟德尔随机化+meta分析(2)----基于R和stata

目前不少文章用到了孟德尔随机化meta分析,在上一章咱们简单介绍了一下meta分析的基础知识。咱们今天来介绍一篇11分文章,由文章看看孟德尔随机化meta分析如何进行,文章的题目是:Appraising the causal role of smoking in multipl…

亲测可用国产GPT人工智能

分享一些靠谱、可用、可以白嫖的GPT大模型。配合大模型,工作效率都会极大提升。 清华大学ChatGLM 官网: 智谱清言中国版对话语言模型,与GLM大模型进行对话。https://chatglm.cn/开源的、支持中英双语的1300亿参数的对话语言模型&#xff0…

ctfshow—1024系列练习

1024 柏拉图 有点像rce远程执行,有四个按钮,分别对应四份php文件,开始搞一下。一开始,先要试探出 文件上传到哪里? 怎么读取上传的文件? 第一步:试探上传文件位置 直接用burp抓包,…

AI智能问答系统源码/AI绘画商业系统/支持GPT联网提问/支持Midjourney绘画

一、AI创作系统 SparkAi创作系统是基于国外很火的ChatGPT进行开发的AI智能问答系统和AI绘画系统。本期针对源码系统整体测试下来非常完美,可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭建部署AI创作ChatGPT?小编这里写一个详细图…

jvm 参数配置

查看当前jvm配置参数的值 jsp查看所有的jvm端口 jinfo -flag 参数(XX:后面的) JIT配置 -XX:CompileThreshold在方法调用的默认阈值在客户端1500次,在服务器端10000次。 -XX:-UseCounterDecay用来关闭热度衰减。 -XX:CounterHalfLifeTime设置半衰减的时间&#x…

由于计算机中丢失msvcp110.dll的解决方法与msvcp110.dll丢失修复方法

相信大家在打开电脑软件或许游戏都有遇到过电脑提示找不到msvcp110.dll文件,导致软件游戏打不开,我们应该怎么办?不用着急,今天小编我分享我找了很久成功解决问题的方法给大家,希望可以帮到各位。 1. 使用DLL修复工具&…

C/C++与汇编混合编程

1. C/C调用汇编 C/C想调用汇编代码必须要注意名称修饰的问题 名称修饰(name decoration): 一种标准的C/C编译技术, 通过添加字符来修改函数名, 添加的字符指明了每个函数参数的确切类型。主要是为了支持函数重载, 但对于汇编来说其问题在于, C/C编译器让链接器去找被修饰过的名…

《2023年中国科技论文报告》解读:高校-浙大TOP1,企业-华为TOP1

最近小编看到中国科学技术信息研究所发布了《2023年中国科技论文统计报告》,里面有很多有趣的数据,摘取部分跟大家分享,更多详细内容,请点击文章底部“阅读原文”下载原文件。 第一点:在高水平国际期刊论文排名中&…