4.IMU预积分 IMU预积分主要干了2件事,第一个是IMU预积分获得α、β、γ值,另一个是误差传递函数的获取。本部分的流程图如下图所示。 各个部分的讲解如下链接: 【SLAM】VINS-MONO解析——综述 【SLAM】VINS-MONO解析——feature_tracker 【SLAM】VINS-MONO解析——IMU预积分
推进器电机模型文件的内容只有一个:推进器推力与PWM波的映射关系。当我们推算得到某时刻该推进器需要提供的推力时,我们需要根据映射关系计算出出对应的PWM波下发给下层以实现控制。不同类型的推进器推力与PWM波的映射关系是不同的,这个有的产品可能会给出,没有的话可能需要自行测定。 在demo中,模型文件的路径为cabin_controllers/cfg/thruster_fo
8.sliding window 8.1 理论基础 实际上,这一部分跟后端非线性优化是一起进行的,这一部分对应的非线性优化的损失函数的先验部分。理论基础部分的代码基本在第7章部分。 8.1.1 上一次非线性优化结束,最后的H矩阵就是本轮非线性优化的先验矩阵的前身。 8.1.2 构造先验矩阵 (1)移动需要marg掉的pose和路标点 对应的,J矩阵的一些列需要删除掉;H矩阵
7.2 代码 在estimator.cpp的processImage()的最后,代码如下: else//solver_flag = NON_LINEAR,进行非线性优化 { solveOdometry(); //<--1 //边界判断:检测系统运行是否失败,若失败则重置估计器 if (failu
7.后端非线性优化 7.1 理论基础 7.1.1 bayes模型,因子图和最小二乘 这一部分主要是对董靖博士在公开课《因子图的理论基础》上的回忆和总结。 (1)bayes模型 假设有黄色是机器人在不同时刻的位姿,蓝色是机器人观测到的路标点,红色是机器人对路标点的观测,绿色是机器人对自身运动的观测。 那么,这个过程可以用下面这个baye
6.2 代码解析 这部分代码在estimator::processImage()最后面。初始化部分的代码虽然生命周期比较短,但是,代码量巨大!主要分成2部分,第一部分是纯视觉SfM优化滑窗内的位姿,然后在融合IMU信息,按照理论部分优化各个状态量。 if (solver_flag == INITIAL)//进行初始化
6.初始化 第一个问题,为什么要初始化? 对于单目系统而言, (1)视觉系统只能获得二维信息,损失了一维信息(深度),所以需要动一下,也就是三角化才能重新获得损失的深度信息; (2)但是,这个三角化恢复的深度信息,是个“伪深度”,它的尺度是随机的,不是真实的,所以就需要IMU来标定这个尺度; (3)要想让IMU标定这个尺度,IMU也需要动一下,得到PVQ的P; (4)另外,IMU存
opencv2/nonfree的安装 看了好多讲解怎么使用openCV-contrib的nonfree模块的内容,要么整不了,要么太麻烦了,今天花了一下午的时候调试通了,做个记录。(前提是你先安装了openCV_contrib,并且是Ubuntu系统) 要想用SIFT, 就需要#include <opencv2/nonfree/nonfree.hpp> 但是在编译的时候
这个工具的作用就是构造一个三维的路标,再根据一系列的pose将这些路标投影到一系列照片上,也就是视频。可以用来进行VO-SLAM的仿真,也很容易拓展为VIO-SLAM的仿真工具。github地址:LISS
vins-mono刷了三遍,手写vio刷了两遍,SLAM十四讲刷了两三遍,从一开始完全看不懂是啥,不知道什么是SLAM,什么是VIO,什么是VINS,什么是SO3/SE3,甚至不知道什么是IMU…再到自己写总结写攻略,真的有很多感慨。学习开源代码的目的其实就是是为了自己能够去开发一个vio,一个slam系统。 slam最难的就是工程化了,公式很多人推导了一遍又一遍,道理大家都懂,但是转化为c
VINS-Fusion分析 因为时间原因,没有像vins-mono看的和写的那么具体。有时间的话我会补充完整版。 vins-fusion不像mono那样有三个node,它只有一个node,在rosNodeTest.cpp里。我推测之所以这样做,是为了方便非ros版的c++项目使用。先上流程图。 vins-fusion和vins-mono
这个系统是基于香港科技大学飞行机器人组的开源框架VINS-Mono开发的,原开源框架是针对单目SLAM。本双目SLAM系统是在原单目开源框架基础上的二次深度开发,外部接口与原框架一致。这个项目是我的研究课题项目,非商业用途,感谢HKUST的沈老师课题组提供的开源框架。该项目的github地址请点击这里。 各个部分的讲解如下链接: 【SLAM】VINS-MONO解析——综述 【SLAM】V
各个部分的讲解如下: 【SLAM】VINS-MONO解析——综述 【SLAM】VINS-MONO解析——feature_tracker 【SLAM】VINS-MONO解析——IMU预积分 【SLAM】VINS-MONO解析——vins_estimator 【SLAM】VINS-MONO解析——初始化(理论部分) 【SLAM】VINS-MONO解析——初始化(代码部分
目前网上有很多分析文章,但是都只是一些比较基础的原理分析,而且很多量,虽然有推倒,但是往往没有讲清楚这些量是什么,为什么要有这些量,这些量是从哪来的,也没有刷通整个代码,或者太简练了,对新手不友好。这一次我计划从原理/代码一步步刷通整个VINS,并且说清楚代码中遇到的每一个数据结构对应的作用是什么。vins系列可以说是vio或者是SLAM传感器融合的必读经典巨作,希望你能从我的分享中有所收获。
本文作者:iwande 1.为什么要介绍这个方法? 2018年的时候,D.DeTone等人发表了Self-Supervised Interest Point Detection and Description,提出了一种特征提取SuperPoint的方法。他们在训练Superpoint的时候,构造了一组人工合成数据集Synthetic Shapes dataset(这个数据集能提供角点的坐标作
积分
粉丝
勋章
TA还没有专栏噢
第三方账号登入
看不清?点击更换
第三方账号登入
QQ 微博 微信