- 博客(18)
- 收藏
- 关注
原创 IEKF&IESKF:卡尔曼滤波器如何迭代?
卡尔曼滤波器和误差状态卡尔曼滤波器都可以在每轮更新内部对进行迭代,这种迭代能够大幅提升算法稳定性。本文详细分析迭代扩展卡尔曼滤波器和迭代误差状态扩展卡尔曼滤波器,并给出算法步骤和等价最优化方程。
2024-11-10 22:36:22
1817
原创 图优化之边缘化
图优化中的边缘化是SLAM中的重点和难点,其理论性复杂,不易理解,尤其是海森矩阵与协方差矩阵的关系更令人费解,从概率角度和矩阵消元角度解释图优化中的边缘化过程,并从数学上严格论证这两个理解角度的高度内在一致性。
2024-11-10 22:12:47
364
原创 点云配准之点到点,点到面,点到线ICP,NDT算法介绍
点云配准在人工智能,自动驾驶,SLAM等任务中具有十分关键的作用,本文将介绍点云配准的点到点,点到线,点到面ICP和NDT算法
2024-11-10 21:43:58
2815
原创 四元数几何
本文从罗德里格斯公式出发,详细介绍四元数的定义,运算,并给出四元数在旋转表示中的应用和四元数的运动学表示,同时给出旋转向量,旋转矩阵和四元数间的转换,在最后,还本文还写明了SLerp插值方式。
2024-11-10 21:23:18
884
原创 视觉SLAM数学基础
本文系统梳理从相机成像模型,通过不同图像帧之间的构造几何约束求解位姿变换,再根据位姿变换和匹配点还原三维坐标的过程,可以作为基于特征点法的视觉SLAM的数学基础。1、相机成像模型1.1、针孔相机模型实际相机的成像方式通常很复杂,针孔模型是对这种复杂成像方式的简化描述,其原理如下图图中,O−x−y−zO-x-y-zO−x−y−z为相机坐标系{C}\{C\}{C},其xxx轴,yyy轴位于针孔平面上,一般要求从相机后方看去xxx轴向右,yyy轴向下,OOO是针孔模型中的针孔,也称为摄像机的光心;O′−
2024-11-10 20:43:12
735
原创 最近邻搜索问题的体素,K-D树,八叉树方法
暴力最近邻搜索(Brute-force Nearest Neighbour Search)是最简单直观的最近邻计算方法,无需辅助数据结构。如果只搜索单个最近邻,则算法称为暴力单点最近邻搜索;如果搜索k点最近邻,则算法称为暴力k点近邻搜索,暴力近邻搜索准确率和召回率都为100%,但计算时间过长。应用暴力k点最近邻搜索方法查找点x在点集Yy1⋯yn中的kxYk。
2024-05-28 17:06:52
2247
原创 C++: 枚举
不论是哪种形式的枚举,它们都定义了一种独特的数据类型,可以用来创建变量,这些变量只能取预先定义好的枚举成员之一作为值。中枚举类型分为弱枚举类型和强枚举类型,不论是哪种形式的枚举,它们都定义了一种独特的数据类型,可以用来创建变量,这些变量只能取预先定义好的枚举成员之一作为值。强枚举类型的值不会自动转换为整数或其他枚举类型,避免了无意中的类型混淆和错误的算术运算,增强了类型安全性。:强枚举类型的枚举成员被限定在其定义的作用域内,不会污染全局命名空间,减少了命名冲突的可能性。强枚举类型和弱枚举类型。
2024-05-28 16:48:03
545
原创 卫星导航概要
全球卫星导航系统(Global Navigation Satellite System, GNSS)是室外车辆定位的主要信息来源之一。传统的GNSS通过测量使用者与地球周围各卫星的距离确定使用者的位置,而距离的测定是通过测量时间间隔的方式进行的。一个卫星信号从卫星发出时,带有一个发送时间,GNSS接受器接受到它时,又有一个接收时间,比较接收时间与发送时间就能估算卫星离使用者的距离。
2024-05-28 16:35:02
2090
原创 IMU预积分推导(三)
5.1、先验残差对状态增量的雅可比矩阵(31)(31)(31)中,只有先验旋转残差对增量δϕi0\delta\boldsymbol\phi_{i_0}δϕi0的雅可比矩阵不能直接看出,需要求解,其他雅可比容易看出rRi0(Ri0Exp(δϕi0))=Log(Rˇi0TRi0Exp(δϕi0))=Log(Rˇi0TRi0)+Jr−1(Log(Rˇi0TRi0))δϕi0\begin{align*}\mathbf{r}_{\mathbf{R}_{i_0}}(\mathbf{R}_{i_0}\math
2024-05-26 11:15:39
527
原创 IMU预积分推导(二)
4、零偏更新对预积分观测量的影响在前面的噪声分离和误差传播过程中,假设了第iii时刻陀螺仪零偏bg,i\mathbf{b}_{g,i}bg,i加速度计零偏ba,i\mathbf{b}_{a,i}ba,i是固定的,但实际上零偏作为优化变量是不断更新的。第iii时刻,假设更新前加速度计和陀螺仪零偏的值分别为bg,i\mathbf{b}_{g,i}bg,i和ba,i\mathbf{b}_{a,i}ba,i,更新小量分别用δba,i\delta\mathbf{b}_{a,i}δba,i和δbg,i\de
2024-05-26 11:04:12
479
原创 IMU预积分推导(一)
Pre Integration1、预积分的引入1.1、IMU积分第iii时刻,系统的状态量为IMU相对世界坐标系的旋转矩阵,速度,位置和偏置xi=[Ri,vi,pi,bg,i,ba,i]T\mathbf{x}_{i}=[\mathbf{R}_{i},\mathbf{v}_{i},\mathbf{p}_{i},\mathbf{b}_{g,i},\mathbf{b}_{a,i}]^Txi=[Ri,vi,pi,bg,i,ba,i]T在一次积分的基础上,对IMU数据进行二次积分,从iii时
2024-05-26 11:02:31
690
原创 C++: 移动语义
移动构造函数是一种特殊的构造函数,它用于创建一个新对象,并将一个已存在的对象的所有资源转移到新对象上。移动语义是 C++11 引入的一种新特性,移动的意思是转移所有权,它允许资源的所有权从一个对象转移到另一个对象,而不需要进行昂贵的拷贝操作。由于右值都是临时的值,临时值释放后也就不再持有属性的所有权,因此右值引用相当于转移资源所有权的行为。lambda表达式可以创建一个匿名函数对象,是右值,可以作为参数传递给其他函数。:表达式结束后就不再存在的临时对象,不可取地址。引入了一种新的引用类型,称为。
2024-05-24 20:37:53
719
1
原创 图优化理论框架
Graph Optimization1、非线性最小二乘问题SLAM问题通常可以表述为非线性最小二乘问题F(x)=12∑(xi,xj)∈Ceij(xi,xj,zij)TΩijeij(xi,xj,zij)x∗=argminx F(x)\begin{align*}F(\mathbf{x})&=\frac{1}{2}\sum_{(\mathbf{x}_{i},\mathbf{x}_{j})\in{C}}\mathbf{e}_{ij}(\mathbf{x}_{i},\mathbf{x}_{j}
2024-05-24 20:02:54
700
1
原创 误差状态卡尔曼滤波器推导
Error State Kalman Filter前置知识:卡尔曼滤波器详细推导1、误差状态卡尔曼滤波器误差状态卡尔曼滤波器(ESKF)全称误差状态扩展卡尔曼滤波器(ESEKF),其将IMU视为运动模型,将其他传感器(如RTK,轮速计等)视为观测模型,并将状态变量的真值分为名义状态变量和误差状态变量,在滤波过程中,仅对误差状态变量进行预测和更新。设ESKF的真值状态变量为xt=[pt,vt,Rt,bat,bgt,gt]\mathbf{x}_{t}=[\mathbf{p}_{t},\mathbf{v}
2024-05-24 19:43:32
1697
5
原创 C++: lambda表达式全解析
lambda表达式与普通函数类似,也有参数列表、返回值类型和函数体,只是它的定义方式更简洁,并且可以在函数内部定义。值捕获时,编译器会把捕获到的值作为类的成员变量,并且变量是以值的方式传递的。需要注意的时,如果所有的参数都是值捕获的方式,那么生成的。表达式的可捕获的量的是在其定义点周围可见的局部变量和静态变量,以及非静态成员函数的。表达式外部的变量,如果想要在函数内修改捕获的值,需要加上关键字。,后面加的具体的参数必须以引用的方式来捕获,否则会报错。函数的,是无法修改捕获的值的,哪怕这个修改不会改变。
2024-05-23 15:03:08
919
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人