SLAM
文章平均质量分 90
SLAM算法学习
RuiH.AI
学习ing
展开
-
视觉SLAM十四讲学习6 Ceres Solver (2) Motion BA
视觉SLAM十四讲学习6 Ceres Solver (2) Motion BA前言Ceres Motion BA重投影误差ceres::CostFunction构建思路cere::Problem构建思路Motion BA整体:后记前言本篇继续记录Ceres Solver的学习。使用Ceres实现PnP的BA方法。Ceres Motion BA重投影误差基于BA的PnP,就是通过匹配的特征点,构建关于位姿的重投影误差,并只优化位姿。重投影误差为:e=∣∣p1−K(RP2+t)∣∣2e=||p_1原创 2022-01-07 21:11:01 · 2715 阅读 · 1 评论 -
视觉SLAM十四讲学习6 Ceres Solver (1) 入门
视觉SLAM十四讲学习6 Ceres Solver (1)入门前言Hello World!构建问题求解设置求解完整代码多维函数优化前言本篇开始学习SLAM的实际操作,从Ceres Solver开始。Hello World!构建问题Ceres Solver是C++常用的非线性优化库。Ceres Solver解非线性优化的流程包含三步:构建优化问题,设置求解条件,求解。考虑一个简单的最小二乘问题ceres求解:min12∣∣10−x∣∣2\min \frac {1}{2} ||10-x||^2原创 2021-12-30 21:21:23 · 1811 阅读 · 0 评论 -
视觉SLAM十四讲学习5 位姿估计(8)直接法
视觉SLAM十四讲学习5 位姿估计(8)直接法前言直接法原理直接法优缺点前言本篇是SLAM前端的最后一节,直接法。直接法原理上篇提到的光流法,用于特征点的快速匹配,然后再通过重投影误差优化估计位姿。这是一种“两步走”的位姿估计法,即先匹配,再优化直接法基于光度不变假设,将匹配步骤省略,直接构建重投影误差优化位姿。首先给出相机模型,假设空间中某点PPP:P′=(TP)[1:3]p=1Z′KP′P'=(TP)_{[1:3]} \\p= \frac{1}{Z'} KP'P′=(TP)[1:3]原创 2021-12-28 20:49:22 · 1796 阅读 · 0 评论 -
视觉SLAM十四讲学习5 位姿估计(7)光流法,光流跟踪
视觉SLAM十四讲学习5 位姿估计(7)光流法前言LK光流光流金字塔前言本篇继续位姿估计,光流法,光流跟踪。LK光流基于特征点的位姿估计中,特征匹配是比较耗时的过程。因此,光流法常被用来替换特征匹配法,来加速特征点的跟踪。假设相机的相邻位姿之间,空间点的亮度(像素灰度值)是不变的,则:I(x+dx,y+dy,t+dt)=I(x,y,t)I(x+dx,y+dy,t+dt)=I(x,y,t) \\I(x+dx,y+dy,t+dt)=I(x,y,t)上面这个式子表示,空间点在dtdtdt的时间内原创 2021-12-28 14:43:23 · 1939 阅读 · 0 评论 -
视觉SLAM十四讲学习5 位姿估计(6)ICP
视觉SLAM十四讲学习5 位姿估计(6)ICP前言SVD方法BA方法前言本篇继续学习3D-3D的方法,ICPSVD方法基于RGBD相机或者Lidar的SLAM前端常用ICP。已知匹配点在上一帧的世界坐标P′P'P′,以及在当前帧的相机坐标PPP,则可以把问题转化为最小二乘:e=P′−(RP+t)arg minR,t∑i=1n12∣∣P′−(RP+t)∣∣22e=P'-(RP+t) \\\argmin_{R,t} \sum_{i=1}^n \frac {1}{2} || P'-(RP+t)原创 2021-12-27 17:18:42 · 653 阅读 · 0 评论 -
视觉SLAM十四讲学习5 位姿估计(5)PNP方法,BA
视觉SLAM十四讲学习5 位姿估计(5)PNP方法,BA前言重投影误差重投影误差关于位姿的梯度重投影误差关于点的梯度BA后记前言本篇记录PnP中的BA光束平差法。重投影误差对于3D-2D的位姿估计,还可以通过最小化重投影误差实现。重投影误差公式如下:∑∣∣e∣∣=∑∣∣x−1sKTP∣∣P=[X,Y,Z]\sum ||e||=\sum ||x-\frac{1}{s}KTP|| \\P=[X,Y,Z]∑∣∣e∣∣=∑∣∣x−s1KTP∣∣P=[X,Y,Z]一般,对于向量范数的最小化,可以转原创 2021-12-27 12:10:30 · 2349 阅读 · 0 评论 -
视觉SLAM十四讲学习5 位姿估计(4)PNP方法,DLT,P3P
视觉SLAM十四讲学习5 位姿估计(4)PNP方法,DLT,P3P,BA前言PnPDLTP3P前言上篇记录了本质矩阵,基础矩阵,单应矩阵的求解。本篇学习3D-2D点的匹配方法PnP(Perspective-n-Point),DLT,P3P。PnP已知某相邻帧之间匹配点的2D和3D坐标(世界坐标),求当前的位姿,称为PnP。在这里,已知匹配点的3D坐标往往是上一帧的点坐标,2D坐标是当前帧与上一帧匹配到的点坐标。DLT直接线性变换(DLT)是直接通过相机运动模型求解。假设P是3D点,P’是2D原创 2021-12-25 22:39:07 · 2156 阅读 · 0 评论 -
视觉SLAM十四讲学习5 位姿估计(3)三角测量,单应矩阵
视觉SLAM十四讲学习5 位姿估计(2)三角测量,单应矩阵前言三角测量单应变换与单应矩阵单应矩阵计算前言本篇继续位姿估计章节,记录三角测量的原理和单应矩阵的计算。三角测量上篇计算得到本质矩阵EEE以及相机位姿R,tR,tR,t后,就可以通过三角测量获得匹配点与相机的距离。如上图所示O1,O2O_1,O_2O1,O2是相机经过的两个相邻位置,以O1O_1O1为参考,O2O_2O2的位姿为R,tR,tR,t,空间上的一点PPP在归一化物理成像面上的位置为p1,p2p_1,p_2p1,p2原创 2021-12-15 20:25:59 · 3041 阅读 · 0 评论 -
视觉SLAM十四讲学习5 位姿估计(2)本质矩阵的计算
视觉SLAM十四讲学习5 位姿估计(2)本质矩阵的计算前言本质矩阵的性质本质矩阵计算五点法八点法位姿计算对极几何计算本质矩阵的问题后记前言本篇详细推导对极几何中,本质矩阵的计算。本质矩阵的性质根据上篇的内容,由对极几何约束获得相邻帧相对位姿与匹配点坐标的关系:P2Tt∧RP1=0p2TK−Tt∧RK−1p1=0P_2^Tt^\land RP_1 = 0 \\ \quad \\p_2^TK^{-T}t^\land R K^{-1}p_1 = 0P2Tt∧RP1=0p2TK−Tt∧RK−1原创 2021-12-14 16:27:42 · 3336 阅读 · 1 评论 -
视觉SLAM十四讲学习5 位姿估计(1)ORB特征,对极几何与本质矩阵
视觉SLAM十四讲学习5 (1)ORB特征,对极几何与本质矩阵前言ORB特征对极几何后记前言《十四讲》基础篇还剩下非线性优化,不过我在数值计算中已经把牛顿法、LM法这些记录过了,因此先跳过非线性优化,从位姿估计开始。ORB特征通过图像还原相机相邻位姿之间的变化,首先需要确定相邻图像上哪一对点是空间中的同一点,通常采用特征点匹配的方法,比如FAST、SIFT、SURF、ORB等。特征点匹配包括特征点提取,描述子计算,特征匹配三个步骤。目前,ORB(Oriented FAST and Rotated原创 2021-12-13 16:28:15 · 3210 阅读 · 0 评论 -
视觉SLAM十四讲学习4 (2)李代数求导
视觉SLAM十四讲学习4 (2)李代数求导原创 2021-12-05 22:37:56 · 1039 阅读 · 0 评论 -
视觉SLAM十四讲学习4 (1)刚体变换与李群,李代数
视觉SLAM十四讲学习4 刚体变换与李群,李代数前言群定义李群与李代数的引出正交群与欧式群李代数的引出李代数so(3)so(3)so(3)的几何意义李群与李代数的转换后记前言本篇记录SLAM十四讲中的,李群与李代数。本篇与群论相关,因此相当不是很好理解。我反复看了五遍以上才稍微弄懂这一章。群定义群是一个集合GGG与一种运算◊\Diamond◊的复合,满足:1.封闭性:∀a,b∈G,a◊b∈G\forall a,b\in G, a\Diamond b\in G∀a,b∈G,a◊b∈G2.结合律:∀原创 2021-12-04 18:36:48 · 747 阅读 · 0 评论 -
视觉SLAM十四讲学习3 相机模型,齐次坐标,畸变原理
视觉SLAM十四讲学习3 相机模型,畸变原理前言针孔相机模型畸变原理去畸变方法前言《十四讲》书中的顺序是李群、李代数,然后相机模型。本篇调换一下顺序,首先讲相机模型和畸变原理。针孔相机模型针孔相机模型是最常用的相机模型。计算时,假设成像平面在相机前方。对于相机坐标系下的一个点P=(X,Y,Z)P=(X,Y,Z)P=(X,Y,Z),在物理成像平面上的坐标P′P'P′为(x,y,z)(x,y,z)(x,y,z),根据相似三角形有:xX=yY=fZx=fXZy=fYZz=f\frac{x}{X}原创 2021-12-01 20:12:26 · 1987 阅读 · 0 评论 -
视觉SLAM十四讲学习2 旋转矩阵,轴角,欧拉角,四元数
视觉SLAM十四讲学习2 旋转矩阵,旋转向量,欧拉角,四元数前言坐标,基与旋转矩阵内积和外积变换矩阵旋转矩阵与变换矩阵的自由度旋转向量与旋转角欧拉角四元数前言视觉SLAM十四讲这本书我应该已经看过四五遍了。前两遍看起来比较吃力,因为SLAM涉及到了比较广泛的数学理论,包括线性代数、概率论、随机过程、优化理论等。因此我先将SLAM相关的一些数学基础在数值计算专栏里总结下来。据说高博曾经说过:数学学不好,Demo跑到老~笑:)。数学能力过关后,再回到十四讲这本书,看起来就有种说不出的爽感,越读越有劲。本原创 2021-11-29 22:20:30 · 930 阅读 · 0 评论 -
视觉SLAM十四讲学习1 环境配置
视觉SLAM十四讲学习1 环境配置目录视觉SLAM十四讲学习1 环境配置前言一、系统设置二、SLAM常用包配置1.Debian常用软件包2.OpenCV和opencv_contrib包3.SLAM代码与第三方包Kdevelop安装Eigen安装Sophus安装Pangolin安装PCL安装Ceres-solver安装g2o安装Meshlab安装Octomap安装DBoW3安装总结前言这里将记录一些我学习SLAM十四讲的总结心得以及实际操作,包括数学公式和理论推导,以及代码调试等,会持续不定时的更新原创 2021-06-28 22:39:15 · 4335 阅读 · 3 评论