SLAM
文章平均质量分 92
安德鲁JANKENPAN
本科毕业于北京交通大学,中国科学技术大学软件工程硕士在读
展开
-
淦VINS-MONO源码 04--相机与IMU的外参标定
相机与IMU的外参标定相机与IMU外参标定相机与IMU之间的相对位姿相机与IMU之间的时间差标定方法相机与IMU之间的相对位姿相机与IMU之间的时间差相机与IMU外参标定什么是相机与IMU外参?足够准确的相机与IMU外参是实现相机与IMU融合的定位与建图的前提。相机与IMU之间的外参包括两部分:1.相机与IMU之间的相对位姿2.相机与IMU之间的时间差相机与IMU之间的相对位姿如下图所示,相机与IMU之间的相对位姿值的是相机坐标系和IMU坐标系之间的变换,包括相对旋转角和相对平移量。相机与原创 2021-06-28 19:34:07 · 684 阅读 · 1 评论 -
SLAM--基于栅格和八叉树地图的Active SLAM(turtlebot_exploration_3d)
基于ORB-SLAM2的自主探索建图小车环境搭建软件系统自主探索(turtlebot_exploration_3d)我们学习研一每个人都会做有一个小的项目,研究生一开学就会让你选题,最近要结题了,所以一直再调试这个项目,这周终于有点结果了,所以给大家分享一下。首先介绍一下这个项目:硬件方面:小车的底座选用的是turtlrbot,相机用的kinectV1。软件方面:ubuntu是16.04版本的,是基于ROS做的开发。:环境搭建这个其实是最费时间的一个环节,这个大家多参考一些博客和软件对应的re原创 2021-06-20 21:32:46 · 1721 阅读 · 2 评论 -
淦VINS-MONO源码 03--openCV与VINS中去畸变方法的不同
openCV与VINS中去畸变方法的不同畸变畸变参数和去畸变公式径向畸变:切向畸变畸变模型openCV去畸变函数cv::undistortPoints()源码VINS-MONO去畸变函数liftProjective()源码畸变透镜由于制造精度以及组装工艺的偏差会引入畸变,导致原始图像的失真。镜头的畸变分为径向畸变和切向畸变两类。畸变参数和去畸变公式径向畸变:顾名思义,径向畸变就是沿着透镜半径方向分布的畸变,产生原因是光线在原理透镜中心的地方比靠近中心的地方更加弯曲,这种畸变在短焦镜头中表现更加明显原创 2021-06-05 17:14:11 · 897 阅读 · 0 评论 -
淦VINS-MONO源码 02--VIO中的预积分推导
VIO中的预积分推导VIO中的预积分推导为什么要预积分呢?预积分误差之前两周一直在准备考试,外加预积分的东西格外复杂,所以自己一直没有梳理好,这周考完自己把笔记和网上的博客又看了看了,梳理了一下具体的过程。本文主要参考自下面这篇文章及其参考文章:VINS-Mono关键知识点总结——预积分和后端优化IMU部分.VIO中的预积分推导为什么要预积分呢?首先积分是肯定需要的,因为IMU的频率通常是远高于Camera的,而IMU获得的是每一时刻的加速度和角速度,我们通过积分获得两帧之间的由IMU测出的位移原创 2021-05-30 21:38:17 · 207 阅读 · 0 评论 -
淦VINS-MONO源码 01--IMU的误差模型和标定
IMU的误差模型和标定工作原理加速度计工作原理陀螺仪测量原理误差来源IMU噪声模型biasscale轴偏差IMU校准确定性误差六面法标定bias和scale factor温度相关的参数标定随机误差高斯白噪声Bias 随机游走艾伦方差标定数学模型加速度计数学模型陀螺仪数学模型在看完orb-slam后,也投了一些实习,发现纯视觉的方案在很多方面都没得到采用,特别是自动驾驶中定位感知方面,基本上是雷达+IMU+相机+GPS等等的多传感器融合,所以接下来的计划会看看vins-mono和loam的源代码,一个是IM原创 2021-05-09 14:41:27 · 931 阅读 · 0 评论 -
SLAM--PL-SLAM中基于线特征的初始化方法(LSD算法,LBD描述子,计算R和t)
SLAM中基于线特征的初始化方法线特征的初始化直线段检测算法---LSD:a Line Segment Detector描述子---LBD:Line detection and description计算旋转矩阵三焦点张量计算t线特征的初始化ORB_SLAM2的东西差不多讲完了,接下来就讲讲其他开源代码的一些有趣的地方。最近看了以ORB为基础的点线特征的开源代码PL-SLAM( 翻译后论文),其中他利用线特征进行初始化,并在误差构建和PNP上做出了改动,PNP选用了EPNPL。其中为了让我的系统初始化更原创 2021-05-03 15:59:18 · 2967 阅读 · 2 评论 -
淦ORB-SLAM2源码 11--卡尔曼滤波
卡尔曼滤波卡尔曼滤波(KF)简述例子推导一维case转换矩阵H 的引入推广至高维小结一下讨论扩展卡尔曼滤波(EKF)卡尔曼滤波这个在看高博的《视觉SLAM十四讲》就已经接触到了,但是当时并不理解,只是囫囵吞枣的记了一下过程:先是预测,根据上一个状态预测当前状态更新卡尔曼增益最后计算后验概率分布最近又详细的了解了一下具体的过程和原理,虽然现在SLAM 的主流趋势是利用图优化,但卡尔曼滤波仍然为我们提供了一个很好的参考,也算是为解决问题提供一个方法吧。卡尔曼滤波(KF)卡尔曼滤波本质上是一个数原创 2021-04-25 12:56:39 · 527 阅读 · 0 评论 -
淦ORB-SLAM2源码 10--最小二乘问题(最速下降法,牛顿法,高斯牛顿,LM法,鲁棒核函数)
最小二乘问题最小二乘问题最速下降法牛顿法高斯牛顿LM法最小二乘问题最速下降法牛顿法高斯牛顿LM法原创 2021-04-17 15:48:44 · 850 阅读 · 1 评论 -
淦ORB-SLAM2源码 09--SIM(3)算法
SIM3SIM(3)什么是SIM3?3对点计算旋转可以吗?计算SIM3的平移计算SIM3的尺度因子计算SIM3的旋转计算 Sim3 的步骤总结以下内容参考计算机视觉life公众号SIM(3)什么是SIM3?Sim3 (Similarity Transformation)的提出就是为了解决两个坐标系之间的相似变换问题,只要我们能得到3对匹配好的不共线的三维点在两个坐标系下的坐标,我们就能解出Sim3相似变换。这个也是Sim3中数字3的来源。计算Sim3 实际就是计算这三个参数:旋转 、平移 、尺度因子原创 2021-04-12 18:16:47 · 1216 阅读 · 1 评论 -
淦ORB-SLAM2源码 08--PNP(DLT,P3P,EPNP)和ICP(SVD)
PNP和ICPPNPDLTP3PEPNPBAICPSVD法BAPNPDLTP3PEPNPBAICPSVD法BA原创 2021-04-06 19:42:18 · 1420 阅读 · 0 评论 -
淦ORB-SLAM2源码 07--关于基本矩阵F、本质矩阵E、单应矩阵H的计算
关于基本矩阵F、本质矩阵E、单应矩阵H的计算本质矩阵E计算E矩阵基础矩阵F计算F矩阵计算RT单应矩阵H计算H矩阵计算RT本质矩阵E计算E矩阵基础矩阵F计算F矩阵计算RT单应矩阵H计算H矩阵计算RT...原创 2021-03-29 21:27:32 · 725 阅读 · 0 评论 -
淦ORB-SLAM2源码 06--手推Bundle Adjustment优化(BA优化)
手推Bundle AdjustmentBA简介手推BA运算过程(含最小二乘法)BA代码本来是想写一下关于SLAM后端的三种优化方式 卡线曼滤波(KF),扩展卡尔曼滤波(EKF)和基于图优化的Bundle Adjustment(后面简称BA)的,但是前面两个我确实不太懂,所以先占个位置,等我后面研究搞懂了再来填坑。BA简介视觉里程计可以给出一个短时间内的轨迹和地图,但由于不可避免的误差累积,如果时间长了这个地图是不准确的。所以我们希望构建一个尺度、规模更大的优化问题,以考虑长时间内的最优轨迹和地图。实际原创 2021-03-25 17:22:51 · 855 阅读 · 0 评论 -
淦ORB-SLAM2源码 05--tracking.cc干了啥事(流程图)
tracking.cc干了啥事Tracking线程函数主要功能和流程TrackWithMotionModelTrackReferenceKeyFrameRelocalizationTrackLocalMap跟踪过程整体流程图tracking线程可以说是ORB_SLAM2中最重要的一部分,其主要完成两项工作(1)完成相机位姿估计(2)跟踪局部地图tracking的代码非常的繁琐和复杂,所以我建议配合流程图来进行研读,效果是最好的,一边看流程一边看对应函数是如何实现的,能够帮你快速入手。(流程图是来自 这里原创 2021-03-17 09:42:23 · 613 阅读 · 0 评论 -
淦ORB-SLAM2源码 04--单目初始化Initializer.cc 干了啥事
单目的初始化Initializer.cc单目初始化主函数Initialize计算单应矩阵(Homography矩阵)用DLT方法求解单应矩阵H计算基础矩阵(Fundamental矩阵)根据特征点匹配求fundamental matrix(normalized 8点法)对给定的homography matrix和Fundamental matrix打分(需要使用到卡方检验的知识)从F矩阵中求解位姿R,t用H矩阵中求解位姿R,t对匹配的特征点进行三角化初始化是SLAM系统在运行时是都要经历的一步,系统一定要有原创 2021-03-07 17:27:27 · 532 阅读 · 0 评论 -
淦ORB-SLAM2源码 03--DBow词袋
DBow词袋用于ORB-SLAM词袋模型介绍DBoW的原理创建词汇树使用词汇树每个单词(words)都一样重要吗?ORBSLAM2 中的DBowBinary featuresImage databaseLoop detection词袋模型介绍Bag of words模型最初被用在文本分类中,将文档表示成特征矢量。它的基本思想是假定对于一个文本,忽略其词序和语法、句法,仅仅将其看做是一些词汇的集合,而文本中的每个词汇都是独立的。如果文档中猪、马、牛、羊、山谷、土地、拖拉机这样的词汇多些,而银行、大厦、汽原创 2021-03-01 20:13:50 · 738 阅读 · 1 评论 -
德鲁周记13--最小二乘、RANSAC与霍夫变换的区别
最小二乘、RANSAC与霍夫变换最小二乘与RANSAC最小二乘举个最简单的例子理解最小二乘最小二乘的cost function最小二乘法的求解RANSAC霍夫变换基本原理最近看orb-slam2代码和图像处理问题的时候发现了多种处理直线拟合的方法,特此也记录一下。分别是直线拟合的最小二乘法,RANSAC和直线检测的霍夫变换,其本质都是对直接的拟合。最小二乘与RANSAC普通最小二乘是保守派:在现有数据下,如何实现最优。是从一个整体误差最小的角度去考虑,尽量谁也不得罪。RANSAC是改革派:首先假设原创 2021-02-04 22:09:49 · 1756 阅读 · 0 评论 -
德鲁周记12--带有颜色追踪功能的turtlebot(ROS+反向投影+camshift)
带有颜色追踪功能的turtlebot主要技术和算法颜色识别和追踪模块反向投影算法camshift控制板块(ROS)代码算法模块控制模块这个是我前段时间完成的基于turtlebot实现跟随特定颜色的物体实现自主移动的项目,主要目的是为了学习熟悉一下ROS和turtlebot,然后也是基于图像的一个处理方便后续的vslam的应用。运行成功后,turtlebot会跟随相机中的目标实现追踪(自主的转向和移动)。下面来讲一下内部的主要算法:主要技术和算法算法主要是追踪模块和控制模块,都是基于ROS所以可以依靠t原创 2021-01-10 23:49:08 · 589 阅读 · 2 评论 -
淦ORB-SLAM2源码 02--ComputeKeyPointsOctTree函数(四叉树法对特征点进行平均和分发)
ComputeKeyPointsOctTree函数(四叉树法对特征点进行平均和分发)原理提取特征点分发特征点代码ComputeKeyPointsOctTreeDistributeOctTree原理提取特征点首先是提取特征点时就要尽量让特征点分布均匀,所以在提取时会将图片分成30*30(单位像素)的一个一个小格子(cell)来提取特征点,如下图(手绘勿见怪)这里再讲一下这个里面各个颜色对应的是什么区域,里面深灰色是原图像区域,中间绿色是扩展的3像素区域,这里为什么要扩展呢?因为在提取fast角点的时原创 2021-01-08 23:51:38 · 1170 阅读 · 1 评论 -
淦ORB-SLAM2源码 01--IC_Angle函数(灰度质心求角度)
IC_Angle函数(灰度质心求角度)原理角度计算质心的计算方法umax的计算IC_Angle源码解析:具体实现参考链接: https://blog.csdn.net/weixin_46427781/article/details/108755138.原理角度计算灰度质心法:以几何中心和灰度质心的连线作为该特征点方向1、为了保证旋转不变性,所以要在圆内计算;2、为了在圆内计算,故要知道圆的边界,才能去索引;3、为了知道圆的边界,在已知纵坐标的情况下,还需知道横坐标umax;4、最终利用IC_原创 2020-11-16 21:35:47 · 1351 阅读 · 8 评论 -
德鲁周记06--VSLAM从入门到入坟
VSLAM入门介绍基础知识三维空间的刚体运动欧式变换四元数欧拉角李群与李代数线性拟合相机单目相机双目相机深度相机基本框架视觉里程计特征匹配ORB直接法对比后端优化EKFBA(Bundle Adjustment)回环检测建图最后说点因为研究生的工程实践我选择了这个方向,这两周一直在学VSLAM,看完了高翔老师的视频和《视觉SLAM十四讲》,强烈推荐!!!入门必看,神书!!当然我第一遍自我感觉是肯定没看太懂的,只能说知道了一个框架和目前的一些主流算法。正好下周要开题,要做PPT所以也写一篇博客记录一下,算是一原创 2020-11-08 14:51:26 · 512 阅读 · 0 评论