- 博客(12)
- 收藏
- 关注
原创 最近邻搜索问题的体素,K-D树,八叉树方法
暴力最近邻搜索(Brute-force Nearest Neighbour Search)是最简单直观的最近邻计算方法,无需辅助数据结构。如果只搜索单个最近邻,则算法称为暴力单点最近邻搜索;如果搜索k点最近邻,则算法称为暴力k点近邻搜索,暴力近邻搜索准确率和召回率都为100%,但计算时间过长。应用暴力k点最近邻搜索方法查找点x在点集Yy1⋯yn中的kxYk。
2024-05-28 17:06:52
1833
原创 C++: 枚举
不论是哪种形式的枚举,它们都定义了一种独特的数据类型,可以用来创建变量,这些变量只能取预先定义好的枚举成员之一作为值。中枚举类型分为弱枚举类型和强枚举类型,不论是哪种形式的枚举,它们都定义了一种独特的数据类型,可以用来创建变量,这些变量只能取预先定义好的枚举成员之一作为值。强枚举类型的值不会自动转换为整数或其他枚举类型,避免了无意中的类型混淆和错误的算术运算,增强了类型安全性。:强枚举类型的枚举成员被限定在其定义的作用域内,不会污染全局命名空间,减少了命名冲突的可能性。强枚举类型和弱枚举类型。
2024-05-28 16:48:03
453
原创 卫星导航概要
全球卫星导航系统(Global Navigation Satellite System, GNSS)是室外车辆定位的主要信息来源之一。传统的GNSS通过测量使用者与地球周围各卫星的距离确定使用者的位置,而距离的测定是通过测量时间间隔的方式进行的。一个卫星信号从卫星发出时,带有一个发送时间,GNSS接受器接受到它时,又有一个接收时间,比较接收时间与发送时间就能估算卫星离使用者的距离。
2024-05-28 16:35:02
1989
原创 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
476
原创 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
417
原创 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
540
原创 C++: 移动语义
移动构造函数是一种特殊的构造函数,它用于创建一个新对象,并将一个已存在的对象的所有资源转移到新对象上。移动语义是 C++11 引入的一种新特性,移动的意思是转移所有权,它允许资源的所有权从一个对象转移到另一个对象,而不需要进行昂贵的拷贝操作。由于右值都是临时的值,临时值释放后也就不再持有属性的所有权,因此右值引用相当于转移资源所有权的行为。lambda表达式可以创建一个匿名函数对象,是右值,可以作为参数传递给其他函数。:表达式结束后就不再存在的临时对象,不可取地址。引入了一种新的引用类型,称为。
2024-05-24 20:37:53
491
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
586
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
891
1
原创 C++: lambda表达式全解析
lambda表达式与普通函数类似,也有参数列表、返回值类型和函数体,只是它的定义方式更简洁,并且可以在函数内部定义。值捕获时,编译器会把捕获到的值作为类的成员变量,并且变量是以值的方式传递的。需要注意的时,如果所有的参数都是值捕获的方式,那么生成的。表达式的可捕获的量的是在其定义点周围可见的局部变量和静态变量,以及非静态成员函数的。表达式外部的变量,如果想要在函数内修改捕获的值,需要加上关键字。,后面加的具体的参数必须以引用的方式来捕获,否则会报错。函数的,是无法修改捕获的值的,哪怕这个修改不会改变。
2024-05-23 15:03:08
860
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人