自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(35)
  • 收藏
  • 关注

原创 淦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 1723 2

原创 淦VINS-MONO源码 03--openCV与VINS中去畸变方法的不同

openCV与VINS中去畸变方法的不同畸变畸变参数和去畸变公式径向畸变:切向畸变畸变模型openCV去畸变函数cv::undistortPoints()源码VINS-MONO去畸变函数liftProjective()源码畸变透镜由于制造精度以及组装工艺的偏差会引入畸变,导致原始图像的失真。镜头的畸变分为径向畸变和切向畸变两类。畸变参数和去畸变公式径向畸变:顾名思义,径向畸变就是沿着透镜半径方向分布的畸变,产生原因是光线在原理透镜中心的地方比靠近中心的地方更加弯曲,这种畸变在短焦镜头中表现更加明显

2021-06-05 17:14:11 898

原创 淦VINS-MONO源码 02--VIO中的预积分推导

VIO中的预积分推导VIO中的预积分推导为什么要预积分呢?预积分误差之前两周一直在准备考试,外加预积分的东西格外复杂,所以自己一直没有梳理好,这周考完自己把笔记和网上的博客又看了看了,梳理了一下具体的过程。本文主要参考自下面这篇文章及其参考文章:VINS-Mono关键知识点总结——预积分和后端优化IMU部分.VIO中的预积分推导为什么要预积分呢?首先积分是肯定需要的,因为IMU的频率通常是远高于Camera的,而IMU获得的是每一时刻的加速度和角速度,我们通过积分获得两帧之间的由IMU测出的位移

2021-05-30 21:38:17 207

原创 德鲁周记15--一文刷通并查集(leetcode并查集题目集合)

并查集并查集并查集的介绍及引入并查集的三个基本组成未经过优化时经过优化带权并查集(进阶)基本定义例题列表并查集并查集是一种树形结构,主要用于解决元素的分组问题(比如有多少个帮派、有多少个朋友圈),它管理一系列不相交的集合。并查集主要实现以下几个功能查询某个元素属于哪个集合(属于哪一个连通分量)合并两个集合为一个大集合在一张无向图中维护节点之间的连通性,擅长动态维护许多具有传递性的关系并查集的介绍及引入并查集的重要思想,用集合中的一个元素来代表该集合初始状态,对于只有一个元素的集合,代

2021-05-20 20:18:04 135

原创 淦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 934

原创 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 2971 2

原创 淦ORB-SLAM2源码 11--卡尔曼滤波

卡尔曼滤波卡尔曼滤波(KF)简述例子推导一维case转换矩阵H 的引入推广至高维小结一下讨论扩展卡尔曼滤波(EKF)卡尔曼滤波这个在看高博的《视觉SLAM十四讲》就已经接触到了,但是当时并不理解,只是囫囵吞枣的记了一下过程:先是预测,根据上一个状态预测当前状态更新卡尔曼增益最后计算后验概率分布最近又详细的了解了一下具体的过程和原理,虽然现在SLAM 的主流趋势是利用图优化,但卡尔曼滤波仍然为我们提供了一个很好的参考,也算是为解决问题提供一个方法吧。卡尔曼滤波(KF)卡尔曼滤波本质上是一个数

2021-04-25 12:56:39 527

原创 淦ORB-SLAM2源码 10--最小二乘问题(最速下降法,牛顿法,高斯牛顿,LM法,鲁棒核函数)

最小二乘问题最小二乘问题最速下降法牛顿法高斯牛顿LM法最小二乘问题最速下降法牛顿法高斯牛顿LM法

2021-04-17 15:48:44 851 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 1217 1

原创 淦ORB-SLAM2源码 08--PNP(DLT,P3P,EPNP)和ICP(SVD)

PNP和ICPPNPDLTP3PEPNPBAICPSVD法BAPNPDLTP3PEPNPBAICPSVD法BA

2021-04-06 19:42:18 1422

原创 淦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

原创 淦ORB-SLAM2源码 06--手推Bundle Adjustment优化(BA优化)

手推Bundle AdjustmentBA简介手推BA运算过程(含最小二乘法)BA代码本来是想写一下关于SLAM后端的三种优化方式 卡线曼滤波(KF),扩展卡尔曼滤波(EKF)和基于图优化的Bundle Adjustment(后面简称BA)的,但是前面两个我确实不太懂,所以先占个位置,等我后面研究搞懂了再来填坑。BA简介视觉里程计可以给出一个短时间内的轨迹和地图,但由于不可避免的误差累积,如果时间长了这个地图是不准确的。所以我们希望构建一个尺度、规模更大的优化问题,以考虑长时间内的最优轨迹和地图。实际

2021-03-25 17:22:51 857

原创 淦ORB-SLAM2源码 05--tracking.cc干了啥事(流程图)

tracking.cc干了啥事Tracking线程函数主要功能和流程TrackWithMotionModelTrackReferenceKeyFrameRelocalizationTrackLocalMap跟踪过程整体流程图tracking线程可以说是ORB_SLAM2中最重要的一部分,其主要完成两项工作(1)完成相机位姿估计(2)跟踪局部地图tracking的代码非常的繁琐和复杂,所以我建议配合流程图来进行研读,效果是最好的,一边看流程一边看对应函数是如何实现的,能够帮你快速入手。(流程图是来自 这里

2021-03-17 09:42:23 613

原创 淦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

原创 淦ORB-SLAM2源码 03--DBow词袋

DBow词袋用于ORB-SLAM词袋模型介绍DBoW的原理创建词汇树使用词汇树每个单词(words)都一样重要吗?ORBSLAM2 中的DBowBinary featuresImage databaseLoop detection词袋模型介绍Bag of words模型最初被用在文本分类中,将文档表示成特征矢量。它的基本思想是假定对于一个文本,忽略其词序和语法、句法,仅仅将其看做是一些词汇的集合,而文本中的每个词汇都是独立的。如果文档中猪、马、牛、羊、山谷、土地、拖拉机这样的词汇多些,而银行、大厦、汽

2021-03-01 20:13:50 739 1

原创 德鲁周记14--树状数组详解(Leetcode-307详解)

树状数组详解树状数组介绍如何建立树状数组树状数组的几种变式(区间更新,区间查询)单点更新、单点查询单点更新、区间查询区间更新、单点查询区间更新、区间查询最近在刷LC时遇到了这样一道题:这题我第一反应就是前缀和,修改时更新前缀和就行,但是一直超时,最好通过题解才知道了这一种数据结构–树状数组,今天也来给大家介绍一下。这里给出这道题的代码class NumArray {public: int n; vector<int> tree; vector<int&g

2021-02-25 14:31:14 161

原创 德鲁周记13--最小二乘、RANSAC与霍夫变换的区别

最小二乘、RANSAC与霍夫变换最小二乘与RANSAC最小二乘举个最简单的例子理解最小二乘最小二乘的cost function最小二乘法的求解RANSAC霍夫变换基本原理最近看orb-slam2代码和图像处理问题的时候发现了多种处理直线拟合的方法,特此也记录一下。分别是直线拟合的最小二乘法,RANSAC和直线检测的霍夫变换,其本质都是对直接的拟合。最小二乘与RANSAC普通最小二乘是保守派:在现有数据下,如何实现最优。是从一个整体误差最小的角度去考虑,尽量谁也不得罪。RANSAC是改革派:首先假设

2021-02-04 22:09:49 1760

原创 德鲁周记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

原创 德鲁周记11--Kaggle比赛 Bike Sharing Demand

Kaggle Bike Sharing Demand 报告文章目录Kaggle Bike Sharing Demand 报告一、问题定义二、获取数据三、研究数据四、准备数据五、模型研究六、模型融合一、问题定义该问题来源于kaggle,这是一个关于共享单车租赁预测的题目,通过对数据的预测,可以观测到共享单车在某个时间段的租赁数量,如果预测值和实际租赁值存在很大差异,就应该去调查情况,从而保证共享单车的正常运营。训练集提供了一个月的前19天的数据和使用情况,提供的数据集包括日期、季节、节假日、工作日、天气

2020-12-30 17:15:18 1289 3

原创 德鲁周记10--15天从0开始刷动态规划(leetcode动态规划题目类型总结)

动态规划什么是动态规划题目类型基本一维动态规划基本二维动态规划分割类问题子序列问题背包问题字符串编辑问题股票问题什么是动态规划这里我们引用维建百科的描述:“动态规划在查找有很多重叠子问题的情况的最优解时有效。它将问题重新组合成子问题,为了避免多次解决这些子问题,它们的结果都是逐渐被计算并被保存,从简单的问题直到整个问题都被解决。因此,动态规划保存递归的结果,因而不会在解决同样的问题上花费时间。动态规划只能应用于有最优子结构的问题。最优子结构的意思是局部最优解能决定全局最优解(对有些问题这个要求并不能完全

2020-12-20 16:44:12 253

原创 德鲁周记09--Kaggle比赛 TMDB Box Office Prediction

Kaggle TMDB Box Office Prediction 报告一.问题定义:二.获取数据:三.研究数据:四.准备数据五.模型研究六.模型微调和模型融合一.问题定义:该问题来源于kaggle,在这个世界上,2018年电影收入估计达到417亿美元,电影业比以往任何时候都更受欢迎。但是什么电影票房收入最高?一个导演有多重要?还是预算?本题将通过电影数据库中7000多部电影的数据,以尝试预测它们在全球的总票房收入。提供的数据点包括演员、剧组、剧情关键词、预算、海报、发行日期、语言、制作公司和国家。该

2020-12-14 19:49:14 770

原创 德鲁周记08--Leetcode回溯算法题目类型总结

回溯算法什么是回溯法回溯法解决的问题回溯法的解题办法思维代码模板回溯法的对应题目本文参考自公众号代码随想录什么是回溯法回溯法也可以叫做回溯搜索法,它是一种搜索的方式。我理解的回溯就是对N叉树深度搜索的过程,回溯法解决的问题都是抽象为树状结构来解决 。(这也是思维层面最重要的过程,一旦画出了抽象树,剩下就是代码的问题了),因为回溯法解决的都是在集合中递归查找子集,集合的大小就构成了树的宽度,递归的深度,都构成的树的深度。回溯是递归的副产品,只要有递归就会有回溯。递归就要有终止条件,所以必然是一颗高度有

2020-12-01 15:15:06 127

原创 淦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 1353 8

原创 德鲁周记07--千奇百怪的排序算法(排序算法总结)持续更新补充

千奇百怪的排序算法快速排序归并排序插入排序冒泡排序选择排序快速选择排序桶排序荷兰国旗问题排序快速排序C++可以直接通过std::sort()快速排序,但是能够手写快排也是一件很重要的基础。void quick_sort(vector<int> &nums,int l,int r){ if(l+1>=r) { return; } int first=l,last=r-1,key=nums[first]; while(first<last) { whil

2020-11-16 16:20:27 280

原创 德鲁周记06--VSLAM从入门到入坟

VSLAM入门介绍基础知识三维空间的刚体运动欧式变换四元数欧拉角李群与李代数线性拟合相机单目相机双目相机深度相机基本框架视觉里程计特征匹配ORB直接法对比后端优化EKFBA(Bundle Adjustment)回环检测建图最后说点因为研究生的工程实践我选择了这个方向,这两周一直在学VSLAM,看完了高翔老师的视频和《视觉SLAM十四讲》,强烈推荐!!!入门必看,神书!!当然我第一遍自我感觉是肯定没看太懂的,只能说知道了一个框架和目前的一些主流算法。正好下周要开题,要做PPT所以也写一篇博客记录一下,算是一

2020-11-08 14:51:26 512

原创 德鲁周记05--C++ enum 用法(附:数据库自制思维导图)

C++ enum 用法(附:数据库自制思维导图)步骤(一)——枚举量的声明和定义步骤(二)——自定义枚举量的值步骤(三)——枚举的取值范围简述强类型枚举附:数据库自制思维导图转载博客地址: https://blog.csdn.net/bruce_0712/article/details/54984371.步骤(一)——枚举量的声明和定义众所周知,C/C++语言可以使用#define和const创建符号常量,而使用enum工具不仅能够创建符号常量,还能定义新的数据类型,但是必须按照一定的规则进行,下面我

2020-11-01 21:29:15 150

原创 德鲁周记04--QT折线图(HDF5文件读取官方文档,Qchart框选放大,多Y轴,OpenGL画曲线莫名BUG)

QT多功能折线图需求具体要求难点解决方法从HDF5中读取数据(double和string)框选放大其他BUG(折线阻挡了chartview的鼠标事件)需求实习末期接到一个项目,要我从后台发过来的HDF5文件中读取数据将其画成图表。一听,简单啊,Qchart画就好了啊,上手开干。一天后,HDF5是啥啊,咋读数据呢?怎么读字符串呢?于是开始全网找攻略,我发现非常非常的少,还好最后找到了文档,慢慢摸索终于解决了问题具体要求具体要求:从中台读取已经处理过用HDF5保存的一维数组,其中包括每个一维数据的名字集

2020-11-01 20:46:15 648

原创 德鲁周记03--机器学习项目初探(房价预测)

德鲁周记03--机器学习项目初探(房价预测)项目介绍机器学习流程获取数据研究数据准备数据研究模型微调模型项目介绍这周刷的leetcode比较简单,所以没有太多特别值得记录的点,但是这周学校的人工智能课的大作业我却是收获满满,让我从0到1体会了一个机器学习的项目,所以和大家分享一下,这个项目也在下面这本《sklearn与tensorflow机器学习实用指南》里面 如果需要电子版的书可以私聊我。机器学习流程这里就开门见山直接介绍一下一个项目代码的流程,就不说什么前期的需求分享,划定问题选择性能指标了,

2020-10-18 22:23:31 146

原创 德鲁周记02 --Leetcode二分查找题目类型总结

德鲁周记02 --Leetcode二分查找题目类型总结二分查找Leetcode题目1552. 两球之间的磁力LCP 12. 小张刷题计划410. 分割数组的最大值二分查找上周因为国庆放假,家人来学校看我所以没有太多时间学习,就把在leetcode上刷到的二分查找的三到类型题和大家分享一下。二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。算法查找过程很简单,相信大家都玩过猜数的游戏,玩家说猜一个数,游戏会告诉你大了还是小了,根据这个再继续猜数。原理类似,这里就不再介绍了

2020-10-11 21:56:36 1614

原创 德鲁周记01 -- STL 中map和unordered_map区别,vector添加元素push_back()和emplace_back()区别

德鲁周记01 -- STL 中map和unordered_map区别 vector添加元素push_back和emplace_back区别map和unordered_map区别vector添加元素push_back()和emplace_back()区别map和unordered_map区别这周在刷leetcode的时候发现高赞题解的代码和我几乎一模一样,但性能却比我好很多,唯一的区别就是他用了一个unordered_map,而我用的是map,于是我专门去研究了一下这两个容器的差别。内部实现机理不同:

2020-09-27 22:51:35 1702

原创 研究生入学前 学长的读研建议 附干货【408(计算机网络+数据结构+操作系统+计算机组成原理)自制思维导图】

研究生入学前 学长的读研建议 附干货【408(计算机网络+数据结构+操作系统+计算机组成原理)自制思维导图】前言学习方向篇日常学习篇思维导图计算机组成原理操作系统数据结构计算机网络前言研究生马上开始上课了,和一个即将毕业入职华为算法岗的学长吃了饭,他给了我几点关于读研期间的一些建议,今天和大家分享一下。因为学长目前也是C++方向,所以他的建议还是对我比较有帮助。学习方向篇学习方向上,他主要从两个方面给了我提出了建议,分别是基础学习和专业方向学习。总体来讲基础为主,方向为辅,无论是人工智能什么模型

2020-09-20 20:17:43 1283 39

原创 我的coding之路--实习第一个月的感悟 和 QT 入门方法

实习第一个感悟QT快速入门方法

2020-07-19 01:13:31 1178 1

原创 我的coding之路--从研究生跨考开始(从0基础到入门) 附考研经验和学习路线

慢慢求学路自我介绍如何从0基础到入门关于考研学习路线后续Hello, 大家好,这是我的第一篇博客,希望能通过博客和大家相互交流学习,共同进步。自我介绍我本科是北京一所高校的材料化学专业,在大三的寒假之前,可以说,我和编程唯一的交集便是大一的C语言课程,甚至连C语言课都是由逃课和考前突击组成,最多会打印一个Hello World。大三寒假我决定要当一名程序员,为什么呢?当然是因为我对程序员行业的热爱和对编程的行业的敬仰之情(其实是因为钱多和工作环境还不错)。下定决心以后,我便制定了三步走计划——第一步

2020-06-03 22:25:39 2022 3

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除