摘要: 1. 数据流入 在okvis_app_sychronous.cpp内,把IMU和图像数据加入到各自的队列里。由ThreadedKFVio负责队列的各种操作。作者对队列加了特殊功能,保证队列是线程安全的。比如:在push时,当超过最大设定值,可以选择是阻塞还是丢掉最老的数据。在pop时也有互斥锁。 2 阅读全文
posted @ 2018-06-13 12:22 Eason_Jiang 阅读(839) 评论(0) 推荐(0) 编辑
摘要: 1. DetectLoop 这里有个ConsistenGroup概念,比较难懂。这里是最让人迷惑的地方。一旦vbConsistentGroup为真,其他帧的spCanditateGroup就进不来了。 2. ComputeSim3 不太明白为什么都使用Sim3去计算相对位姿。在双目和RGBD情况下, 阅读全文
posted @ 2018-05-31 18:43 Eason_Jiang 阅读(796) 评论(0) 推荐(0) 编辑
摘要: 1. 认清几个锁与布尔参数 线程的通信与相互影响在ORB比较复杂,需要好好缕清思路。 1.1 mbStopRequested,由RequestStop函数设定,主要是在回环线程里,在运行全局优化时,以及检测后,调整Loop时,localMapping需要暂停。 1.2 mbStopped:由stop 阅读全文
posted @ 2018-05-25 16:12 Eason_Jiang 阅读(982) 评论(1) 推荐(0) 编辑
摘要: 1. 初始化 当获取第一帧图像与深度图后,首先设置第一帧位姿为4 4单位矩阵,然后为整个map添加关键帧与地图点。且更新地图点与关键帧的联系,例如地图点被哪个关键帧观测到,而此关键帧又包含哪些地图点。而且不得不为ORB的处理细节感动,每个地图点因为对应着不同关键帧的特征点,需要择优选取地图点最合适的 阅读全文
posted @ 2018-05-23 21:10 Eason_Jiang 阅读(493) 评论(0) 推荐(0) 编辑
摘要: 最近接到一个任务,在激光检测回环失败时,比如黑色物体多,场景大等,可否利用视觉进行回环检测。如果只是检测回环,现有的许多框架都可以使用。ORB SLAM本身就有单目模式,且效果不错。但是发现ORB在检测回环时,必须要进行pose计算,产生地图点,然后根据地图点和回环之间的关系进行回环检测。这样就比较 阅读全文
posted @ 2018-05-15 14:35 Eason_Jiang 阅读(966) 评论(0) 推荐(0) 编辑
摘要: 1. 奥比中光astra RGBD相机安装 2. skipmap 安装测试 但是在catkin_make时,总是出现feature2d方面的错误,因为作者用了sift,所以opencv要装opencv_contrib模块。opencv 和contrib我都安装了3.4.1版本,但是还是出现错误。我以 阅读全文
posted @ 2018-04-27 12:36 Eason_Jiang 阅读(3228) 评论(4) 推荐(2) 编辑
摘要: 回环检测 VINS回环检测与全局优化都在pose_graph.cpp内处理。首先在pose_graph_node加载vocabulary文件给BriefDatabase用,如果要加载地图,会loadPoseGraph, 它会读取一些列文件,然后加载所有的Keyframe。同时在经过一系列回调函数得到 阅读全文
posted @ 2018-04-20 17:22 Eason_Jiang 阅读(3446) 评论(0) 推荐(0) 编辑
摘要: VINS的优化除了添加了投影残差,回环检测残差,还有IMU的残差,边缘化产生的先验信息残差等。有些比较难理解,可参考此 "博客" 和 "知乎回答" 。 滑动窗口更新 1. 如果是删去最旧一帧,则每个Ps 等参数都要往后移动,第 i 个要与 i +1 交换,WINDOW_SIZE那一帧要清空 2. 如 阅读全文
posted @ 2018-04-19 18:46 Eason_Jiang 阅读(3237) 评论(0) 推荐(0) 编辑
摘要: 为什么要初始化 非线性VINS估计器的性能对于初始的速度,尺度,重力向量,空间点3D位置,以及外参等非常敏感。在很多场合中,能做到相机和IMU即插即用,线上自动校准与初始化,将会给用户带来极大的方便性。VINS里面分四步进行,第一个就是上次讲的旋转外参校准,第二个就是找到某帧作为系统初始化原点,计算 阅读全文
posted @ 2018-04-19 16:30 Eason_Jiang 阅读(2881) 评论(0) 推荐(0) 编辑
摘要: 为何初始化外参 当外参完全不知道的时候,VINS也可以在线对其进行估计(rotation),先在processImage内进行初步估计,然后在后续优化时,会在optimize函数中再次优化。 如何初始化外参 外参校准函数为: 通过SVD解旋转外参原理如下: SVD的原理与应用可参考 "博客" 。 阅读全文
posted @ 2018-04-18 21:17 Eason_Jiang 阅读(1466) 评论(1) 推荐(0) 编辑