一、整体介绍 这部分是整个系统的核心,因为这个系统就是建图的呀,建图的核心就是综合所有信息进行优化呀。我们前面几节介绍的所有的信息都会发送到这个节点中来供它使用。这部分的代码在文件apps/hdl_graph_slam_nodelet.cpp中。 这部分的代码看着挺多,如果我们能够对它所有的函数分类,就很容易梳理它的内容了。 我们刚才提到,它需要接收之前几节介绍的所有的信息,并加入概率图中,
做slam怎么能少得了闭环。 闭环检测的代码在文件include/hdl_graph_slam/loop_detector.hpp中,整个流程分布的很清晰,我们直接进入看代码的环节了 1. 整体流程 在调用闭环检测功能时,实际是调用的函数detect,所以我们直接看这个函数,就可以看出它的流程 std::vector<Loop::Ptr> detect(const std::v
地面检测的作用我们在第一节就讲过了,它为建图提供一个约束,可以提高建图精度。 地面检测的代码全都在apps/floor_detection_nodelet.cpp文件中,这是一个节点文件,里面关于订阅和发布数据的内容我们不讲了,只介绍关于检测的核心算法。 地面检测共分为三个步骤:1)根据高度参数把地面分割出来,由函数plane_clip完成 2)把地面点云中,去掉法向量和地面实际法向量差别较
一、整体介绍 在图优化中,关键帧的作用是不言而喻的,一个关键帧就对应一个顶点。在这个系统中,关键中对应的文件有两类: src/hdl_graph_slam/keyframe.cpp 和include/hdl_graph_slam/keyframe.hpp 它包含KeyFrame和KeyFrameSnapshot两个类。 KeyFrame类对应的所有优化相关的信息,包括gps、imu
前端里程计的主要代码在apps/scan_matching_odometry_nodelet.cpp中,它的主要作用是订阅点云、匹配得到位姿,并以odom形式发布位姿。 对于订阅发布数据之类的,属于ros的基础内容,我们不在这里介绍了,我们介绍核心内容,即点云配准这部分。 点云匹配包括两方面内容,一是根据配置文件选择点云匹配方法,二是根据订阅得到的点云去匹配得到位姿。 我们把这两方面内容分别
点云滤波的内容主要在apps/prefiltering_nodelet.cpp中,主要包括两步滤波,一是降采样,而是滤除离群点,我们分别介绍。 1. 降采样滤波 降采样滤波的代码如下 // select a downsample method (VOXELGRID, APPROX_VOXELGRID, NONE) std::string downsample_method = pn
论文名称:Loam livox: A fast, robust, high-precision LiDAR odometry and mapping package for LiDARs of small FoV 开源代码:https://github.com/hku-mars/loam_livox 一、整体概述 做激光slam的应该都知道loam,原版loam是基于机械雷达的,当我们使
我自己看代码习惯农村包围城市,即先看各个模块的代码,等了解得差不多了,再去看主流程。所以就先分析g2o顶点和边、关键帧、点云滤波、前端里程计、闭环检测等功能,再去看hdl_graph_slam_nodelet.cpp中主流程是怎样进行的。 我们这篇就先从g2o顶点和边的管理开始看。 一、整体分析 通过上一篇分析我们知道,在整个系统中,需要用来构建g2o的顶点或边的信息包括: 帧间匹配的
hdl_graph_slam是一套激光slam系统,可融合gps、imu、lidar三种传感器,同时具有闭环检测功能。开源代码地址为: hdl_graph_slam激光雷达建图系统github.com/koide3/hdl_graph_slam 一、优缺点分析 通过实测和阅读代码,它有如下优缺点:1. 优点 1)简洁的流程和代码结构。 激光slam虽然相对简单,但是目前开源的算法里,能
优化逃不过两部分,残差项和雅可比,而此处由于滑窗的存在,又多了一项,即边缘化,所以关于DSO的后端优化部分也按照这三部分来讲。(本篇文章主要参考高翔博士的博客https://zhuanlan.zhihu.com/p/29177540) 1. 残差项 在VO过程中,DSO会维护一个滑动窗口,通常由5-7个关键帧组成,流程如前所述。DSO试图将每个先前关键帧中的地图点投影到新关键帧中,形成残差项。
话不多说,直接上流程图吧,一图胜千言(这张图是高翔博士博客里的,链接:https://zhuanlan.zhihu.com/p/29177540) 有了这张图,我们就对前端里程计有了清晰的整体认识,下面我们看具体的流程。 DSO的前端和后端在文件结构上分的比较清楚,前端里程计全在文件夹src/FullSystem中,其中里程计的主流程管理在FullSystem.cpp中,管理主流程的函数是
DSO属于稀疏直接法,它是视觉里程计,不包括地图复用和回环检测。本篇文章重点梳理它的代码的文件结构和工作流程。在网上查资料的时候,高翔博士的解读清晰明了,提供了很大的帮助,本系列文章也会从其中借鉴部分内容,所以在这里给出他的文章连接 半闲居士:DSO详解659 我们先看DSO的整体框架,这张图来自高翔博士的文章 可以看出,代码共包括四个主要部分: 1)src/FullSystem:系统
深度滤波器主要是计算地图点的深度,供Feature Alignment使用。 深度滤波器是一个收敛过程,观测量是每次三角化计算的深度值,高翔《视觉SLAM十四讲》第二版把这个过程概括为四步: 1)假设所有像素的深度满足某个初始的高斯分布 2)当新数据产生时,通过极线搜索确定投影点位置 3)根据几何关系计算三角化后的深度及不确定性 4)将当前观测融合进上一次的估计中,若收敛,则停止计算,否
为什么要做这一步? 通过上一步Feature Alignment我们能够得到优化后的特征点预测位置,它比之前通过相机位姿预测的位置更准,所以反过来,我们利用这个优化后的特征位置,能够进一步去优化相机位姿以及特征点的三维坐标。 怎样做这一步? 在一开始的直接法匹配中,我们是使用的光度误差,这里由于优化后的特征位置和之前预测的特征位置存在差异,这个能用来构造新的优化目标函数。 上式中误差变
为什么要做这一步? 通过上一步sparse model-based image alignment我们已经能够估计位姿了,但是这个位姿肯定不是完美的。导致重投影预测的特征点在IkIk中的位置并不和真正的吻合,也就是还会有残差的存在。如下图所示,图中灰色的特征块为真实位置,蓝色特征块为预测位置。 怎样做这一步? 从上图中可以看出,虽然真实位置和预测位置有偏差,但是偏差不大,可以构造残差
论文题目:VoxelNet: End-to-End Learning for Point Cloud Based 3D Object Detection 开源代码:https://github.com/qianguih/voxelnet VoxelNet是一个端到端利用点云进行3D目标检测的网络,它的最大特征是把点云转成体素(voxel,所谓体素,其实就是网格,三维空间中的网格)形式再进行
论文题目:PointFusion: Deep Sensor Fusion for 3D Bounding Box Estimation 一、整体介绍 这篇论文所提出的网络模型都很简洁,作者的文笔也很清晰,所以我们就不废话了,都在图里了 图中A、B、C、D、E都标好了,我们逐个讲解就是了 A)使用PointNet提取点云的特征,包括全局特征和单个点的特征 B)使用ResNet提取图
论文题目:Frustum PointNets for 3D Object Detection from RGB-D Data 开源代码:https://github.com/charlesq34/frustum-pointnets 一、基本思路 这篇文章是PointNet和PointNet++的作者写的,其目的是在使用PointNet进行点云处理之前,先使用图像信息得到一些先验搜索范围,
在上一篇文章,我们通过AVOD的论文介绍了它的原理,这一次我们介绍它的代码 代码介绍会分多篇文章进行,本篇文章先介绍怎样搭建环境,把程序run起来,后续的文章会介绍程序的结构和代码的详细内容。 话不多说,进主题 一、环境搭建 我使用的系统是ubuntu 16.04,用anaconda搭建的虚拟环境,至于anaconda在ubuntu上怎样安装,大家可以自己在网上查,教程很多。 安装完an
这部分作用可以用一句话概括为:使用直接法最小化图像块重投影残差来获取位姿。 已知:假设的相邻帧位姿 Tk−1 (先初始化为上一帧或单位矩阵),k-1帧观测量:特征点2D投影位置及其深度。 目标:利用直接法最小化图像块重投影误差来获取当前帧位姿 Tk ,其中,红色的为位姿,即优化变量。 直接法基本思想:空间中一空间点在各个视角下成像的灰度短时间内不变。 直接法具体过程如下: 1)准
论文题目:Joint 3D Proposal Generation and Object Detection from View Aggregation 开源代码:https://github.com/kujason/avod AVOD和MV3D-Net比较像,前者算是后者的加强版,由于之前我们已经详细介绍了MV3D-Net,所以我们就不对AVOD做完整介绍了,只介绍它做的改进部分,之前MV3
本篇文章先系统介绍下SVO的原理,方便后面对代码的理解 系统流程可以用下面这张图概括 其实这张图少了系统中一个步骤,就是初始化,所以我们以列表形式列出系统流程如下: 1. 初始化:得到相机初始位姿和特征深度值 没太多可讲,多数slam系统的初始化都差不多。 2. 运动跟踪(Motion Estimation) 1)Sparse Model-based Image Alignment
论文题目:Multi-View 3D Object Detection Network for Autonomous Driving 开源代码:https://github.com/leeyevi/MV3D_TF MV3D-Net是2017年发表的一篇论文,它融合了视觉和雷达点云信息,同时,和以往基于voxel的方法不同,它只用了点云的俯视图和前视图,这样既能减少计算量,又不至于丧失过多的
FeatureTracker的主要作用是跟踪特征并三角化恢复深度以后发给后端去优化。 FeatureTracker功能相关的代码不只是存放在一个文件中,它存放在VINS-Mono/feature_tracker/src文件夹下的所有文件中,这包括: feature_tracker_node.cpp:特征跟踪功能的可执行文件,也就是main函数所在的文件 feature_tracker
闭环检测的主要流程如下图: 这个功能在一个独立的节点中,在VINS-Mono/pose_graph文件夹下面,具体的文件包括: pose_graph_node.cpp ROS 节点函数、回调函数、主线程 keyframe.cpp 构建关键帧类、描述子计算、匹配关键帧与回环帧 pose_graph.cpp 位姿图的建立与图优化、回环检测与闭环 节点文件()负责管理整个闭环的
为什么需要滑动窗口? 在SLAM问题中,状态估计问题被建模为最大后验概率问题,在假设为高斯分布的情况下即为最小化损失函数的一个最小二乘问题,并通过泰勒展开转化为增量迭代求解问题: 随着SLAM系统的运行,状态变量规模不断增大,如果使用滑动窗口,只对窗口内的相关变量进行优化便可以大大减小计算量。 为什么需要边缘化? 对于滑窗外的状态,我们不去进行优化,但也不能直接丢掉,这样会破坏原有
优化的内容包括三部分,分别是特征点深度、IMU误差、关键帧姿态。所以优化的残差函数为 具体解释为: 1)marginalization residual 为边缘化计算得到的先验误差 2)IMU residual 是运动模型的误差, 每相邻的两帧IMU之间产生一个residual. 3)visual residual 是视觉的误差, 单个特征点l在相机cj下的投影会产生一个resid
直接上图,哈哈 从上面的流程图中可以看出,初始化共分为两大步,第一是纯视觉初始化,第二是视觉惯性联合初始化。另外,如果没有提供相机和IMU之间的外参,VINS-Mono还提供了相应的标定程序。因此我们梳理代码就按照这三部分来梳理。 首先看文件结构,初始化流程相关的代码在vins_estimator/src/estimator.cpp中,具体讲就是initialStructure这个函数
预积分的公式网上有很多推导过程的讲解,这里就不详细介绍了,放出一个连接,供参考: VINS-Mono理论学习——IMU预积分 Pre-integration (Jacobian 协方差)blog.csdn.net/qq_41839222/article/details/86290941 程序文件里关于IMU与积分具体实现的文件一共有两个: VINS-Mono/vins_estima
LoopClosing是专门负责做闭环的类,它的主要功能就是检测闭环,计算闭环帧的相对位姿病以此做闭环修正。 老规矩,先上一张图,清晰明了 从图里可以看出,这个类最主要的就是三个函数,下面分别介绍 1. DetectLoop:检测闭环 它的主要流程包括: 1)如果地图中的关键帧数小于10,那么不进行闭环检测 2)获取共视关键帧,并计算他们和当前关键帧之间的BoW分数,求得最低分
LocalMapping是管理局部地图的类,管理的内容包括关键帧和地图点,所谓管理就是增加、删除和修正位姿。具体的方法在下图中 上图是功能上的概括,下图可以详细的看出它的工作流程 一图胜千言,有了上面这两张图,其实这个类的内容就了解的差不多了,下面我们详细看一下几个主要函数的内容 1. ProcessNewKeyFrame:插入新的关键帧 主要流程: 1)从缓冲队列中取出一帧
Tracking类的主要功能是初始化、更新当前帧位姿、跟踪关键帧和局部地图、重定位等。由于Tracking类的代码比较长,而且它里面用到的算法内容都在解析其他几个类的时候解释过了,所以本篇文章就不详细解释所有的代码了,而是重点梳理它的流程。 先上一张图,列出这个类的基本流程和主要函数。 这张图已经很好的概括了这个类的主要内容了,为了更详细的了解这个类的工作流程,我们祭出下面这张图
Initializer是用来初始化的,初始化的方法是根据当前帧和参考帧匹配得到的特征点对,利用RANSAC方法去计算单应性矩阵H和基础矩阵F,然后根据重投影误差大小决定选择哪个矩阵,最后使用SFM方法利用矩阵计算旋转R和平移T。 这里之所以要同时计算单应性矩阵H和基础矩阵F,是因为当特征点在同一个平面上时,基础矩阵F会出现退化现象,导致位姿计算错误。这也导致这个类的代码中,所有关于恢复矩阵的
Optimizer是用来优化的类,ORB SLAM2中所有优化的方法都存放在这个类中。 优化的目的是调整位姿,如果不只想知道优化包含哪些东西,还想弄明白为什么包含这些东西,就要先弄清楚有哪些地方需要计算位姿,位姿计算按复杂程度由低到高一共包含以下四种: 1)当前帧位姿计算 2)闭环检测时两帧之间相对位姿计算 3)局部地图关键帧位姿和地图点位置调整 4)全局地图关键帧位姿和地图点位置调整
Map类比较简单,主要功能就是增删关键帧和地图点,此处直接列出主要函数列表 直接上代码 //添加关键帧 void Map::AddKeyFrame(KeyFrame *pKF) { unique_lock<mutex> lock(mMutexMap); mspKeyFrames.insert(pKF); if(pKF->mnId&
该类的主要作用就是利用词袋数据,在已有的关键帧中查找和当前帧最接近的帧。 这个功能有两个作用,一是重定位时候,通过检测当前帧和哪个关键帧最接近,来确定相机当前的位置和姿态,对应的检测函数是DetectRelocalizationCandidates。二是在闭环检测时,通过检测来确定当前关键帧需要和哪些关键帧建立闭环修正的边,对应的检测函数是DetectLoopCandidates。 二者
一、原理分析 KeyFrame为关键帧,关键帧之所以存在是因为优化需要,所以KeyFrame的几乎所有内容都是位优化服务的。该类中的函数较多,我们需要归类梳理一下,明白其功能原理,才能真正弄懂它的内容。 图优化需要构建节点和变,节点很好理解,就是关键帧的位姿,所以需要有读写位姿的功能,边分为两种,第一种边是和MapPoint之间的,所以需要有管理和MapPoint之间关系的函数,第二种边是
Frame是帧,也就是对应一帧图像,可以是单目、双目、RGBD,所以该类所包含的操作就是slam中以帧为单位进行的处理,主要包括以下方面: 1)读写该帧对应的相机位姿 2)处理帧和特征点之间的关系,包括判断特征点是否在视野内、获取该帧一定区域内的特征点、特征点校正等 3)恢复深度,如果有RGBD就直接读取深度值,如果有双目,就用SAD进行深度恢复 这些功能对应的函数如下图所示 下
MapPoint是地图中的特征点,它自身的参数是三维坐标和描述子,在这个类中它需要完成的主要工作有以下方面: 1)维护关键帧之间的共视关系 2)通过计算描述向量之间的距离,在多个关键帧的特征点中找最匹配的特征点 3)在闭环完成修正后,需要根据修正的主帧位姿修正特征点 4)对于非关键帧,也产生MapPoint,只不过是给Tracking功能临时使用 它的主要功能梳理完以后,我们就可
代码解读主要是自己梳理代码过程中的记录,和网上各位大神的解读水平比不了。 ORB SLAM的大名和介绍就不需要在这里多介绍了,直接进入代码解读环节吧。 一、系统代码结构 ORB SLAM的代码结构非常清晰,直接看下面这张图就可以 这张图里可以看出orb一共有三个线程,分别负责跟踪(TRACKING)、局部建图(LOCAL MAPPING)和闭环(LOOP CLOSING)功能,同时
论文题目:Enhanced free space detection in multiple lanes based on single CNN with scene identification 开源代码:https://github.com/fabvio/ld-lsi/ ——————重要的事情要框住—————— 这是一篇很奇特的论文,作者骨骼清奇,脑回路与众不同,我也不清楚应该怎样去评价
论文题目:Spatial As Deep: Spatial CNN for Traffic Scene Understanding 开源代码:XingangPan/SCNN 一、概述 本篇论文提出了一种新的神经网络结构用于提取车道线,相比于传统网络在各个层之间直接进行卷积的方法不同的是,该网络按照一定方向(上、下、左、右)按照顺序进行卷积,作者认为这样更符合真实世界中物体结构的延伸,尤其是车
文章题目:Traffic Sign Classification Using Deep Inception Based Convolutional Networks 开源代码地址:https://github.com/vxy10/p2-TrafficSigns 一、概述 本篇文章提出了一种基于深度学习的交通标志识别方法,网络以Google Inception网络模型为基础,做了一些改进,并增
论文题目:End-to-end Lane Detection through Differentiable Least-Squares Fitting 开源代码:https://github.com/wvangansbeke/LaneDetection_End2End 一、概述 本篇论文是一篇关于车道线检测的文章,该文章的创新点在于实现了端到端的车道线拟合,输入图片,输出车道线曲线模型参数。
1. 概述 本篇文章和大家一起讨论SuperPoint系列文章的第三篇,也就是真正提出SuperPoint的一篇文章。 论文地址:http://arxiv.org/pdf/1712.07629 开源代码地址:https://github.com/MagicLeapResearch/SuperPointPretrainedNetwork SuperPoint是作者经过前面两篇文章的工作,经过总
1. 概述 这次我们一起讨论SuperPoint系列文章的第二篇Toward Geometric Deep SLAM,这篇文章延续了作者清晰的写作思路,读起来很顺畅。 本文是针对SLAM设计的基于深度学习的特征提取方法,主要包括两部分,一是特征点提取网络MagicPoint,二是基于提取的特征点进行位姿估计的网络MagicWarp。特别指出的是,改方法不需要学习描述子,而只提取特征点位置。由于训练
0. 写在前面 SuperPoint 是基于自监督训练的特征点检测和描述符提取方法,是2018年MagicLeap发表的一篇文章中提出的。MagicLeap是一个备受争议的做VR的公司,大家如果对他的八卦有兴趣可以看这篇文章: 年度盘点,一文详解Magic Leap 2018年热搜高居不下的原因baijiahao.baidu.com/s?id=1617826608054524938&
概述 上一篇文章我们一起学习了GCN网络,它的作用是提取特征点和描述子,用于匹配得到位姿。本次我们一起学习它的改进版GCNv2,改进版在速度上大幅度提升,精度上和原网络性能相当。并且改进版所提取的特征点具有和ORB一样的格式,因此作者把它在ORB-SLAM中替换掉了ORB特征,也就是GCN-SLAM。 论文链接:https://arxiv.org/abs/1902.11046v1 代码链
概述 GCN(Geometric Correspondence Network)是一个用于从图像中提取特征点和描述子的深度神经网络,所提的特征点和描述子可以用于位姿更新和闭环检测。GCNv2是GCN的改进版,提高了运行效率,把原来需要在GPU上运行的算法改进到可以在TX2上运行。GCN-SLAM就是基于GCNv2的实时SLAM系统。因此我们需要按照GCN->GCNv2->GC
这个专栏第一大部分主要是slam方面的论文和源码解读,从技术领域可分为激光slam和视觉slam,同时视觉slam中语义slam已经成为一个重要的分支,所以我们把它单独提出来作为一部分。激光slam虽然也有很多结合语义的,但是它在方法上和论文数量上还没有像视觉那样丰富,所以暂时不把激光语义slam单独提出来。 第二大部分是我自己会写一套从零开始做定位的系列博客,以及相关的一些我对定位这件事的
经过了漫长的周期,终于把这个阶段写完了。中间经历了重写,希望没有对看过重写之前的那些烂文章的朋友造成误导,也再次对大家道个歉,没有把好质量关,惭愧不已! 一、主题回顾 这一系列的文章本质是围绕“优化”和“滤波”这两种融合方式来写的,其中在优化方案中,为了达到实时性,优化要使用滑动窗口。剩余大部分章节都是对这两个主题的基础知识补充。 优化与滤波的关系是什么,区别是什么?下面这张图可以给出很好的解释。
一、概述 在第十和第十一这两篇文章中,虽然一直在介绍融合,但是各位应该也注意到了一点,就是这个融合是建图任务下的融合,主要原因是因为,那种一次性优化所有内容的融合方法(结构图如下),效率太低了,执行一次优化所需要的时间太长,所以它不适合用来做实时的定位,而建图任务是离线的,所以无所谓。 那么问题来了,在实时的定位中,这个融合该怎么做嘞? 二、滑动窗口简介 要解决上面的问题,有一个简单的思路,就是
一、概述 多传感器的外参标定和时间同步(统称时空标定)是融合的重要前提条件,前面介绍的所有融合都是默认已经标定好了的。但实际上,标定当然是需要在融合之前做的,之所以放在后面讲,是因为标定所用到的知识比融合多,或者可以讲,标定是一种更高级别的融合。 由于标定的方法多种多样,要标定的内容也十分的多,所以本篇文章无法对每一种方法进行详细的介绍,索性我们在这里把常见方法的思路汇总梳理一下,弄清楚什么情况下
一、概述 在上一篇文章中,我们给出了下面的框图中实现框图对应的理论部分,但是也提到,虚线对应的部分太过复杂,当时没有介绍。 下面来分析一下具体的原因。带IMU的融合模型中的优化问题可以表示为 三种约束分别通过以下方式获得: 1) 激光里程计约束:使用激光里程计,计算每个关键帧位姿,进而得到相对位姿; 2) IMU约束:在上一个关键帧位姿基础上,进行惯性积分,从而得到两关键帧相对位姿; 3) R
为了把本篇文章的任务讲清楚,定好核心方向,我们需要把该算法所引用的场景任务梳理一下。 任务用一句话描述就是融合建图嘛,融合的传感器包括: 1)组合导航系统(输出绝对位姿) 2)雷达里程计(输出相邻帧间相对位姿) 3)回环检测系统(输出再次走到同一场景时,当前帧与历史帧之间的相对位姿) 综合以上各种信息,整个系统的结构图大概应该长这个样子 如果对这些东西做融合的具体实现还不清楚,可以再回头去看一下
一、概述 在目前主流的融合框架里,基本就分为优化和滤波两大类,滤波我们在前面通过大量的篇幅已经介绍过了,这里就介绍基于优化的方法。 优化的方法仍然是一个包含复杂内容的东西,一篇文章肯定也介绍不完,所以我们在本篇文章里,同样只介绍基础知识部分,基于优化的融合放在下一篇文章介绍。 二、优化问题定义 为了避免后续内容陷入繁杂的公式推导中摸不着方向,所以我们得先搞清楚优化是在做什么,也就是先定义什么是优化
一、概述 上一篇文章说到kalman滤波就是用预测的位姿(一般imu提供)和观测的位姿(一般由gps或者雷达和点云地图匹配得到)进行加权融合,并针对kalman的五个公式说明了整个加权过程,但这只是理解,要真正实现一整套融合系统,就需要把刚才那简单的几句话再展开成具体的实现步骤,做到这一点,除了kalman以外,还需要用到更早之前介绍的imu解算、imu误差模型等知识,如果已经忘了,还是需要翻一翻
一、概述 kalman滤波是一个重要的融合手段,虽然最近几年,随着基于优化的方法不断推广,基于滤波的方法逐渐式微,但是,由于二者各有优缺点,滤波方法现在及将来都仍然是重要的融合手段之一。 在多传感器融合定位系统中,kalman解决的其实是这样一个任务 它的本质是,结合预测与观测,得到最“精确”的后验值。实际中,预测与观测均从传感器而来(预测往往从IMU、编码器等传感器递推而来,观测往往从GPS、
一、概述 在定位领域的几乎所有多传感器融合系统中,都有IMU存在,而且,IMU是定位系统的主线与核心(对此可能很多人并不同意,但是我仍然坚定地坚持这一观点)。 对于IMU参与的融合系统(无论是基于滤波还是基于优化),它的误差分析就既是核心内容,也是基础内容,是必须要掌握的。如果要简单解释,所谓融合,就是根据观测误差去反推状态误差,而误差分析就是给出观测误差与状态误差之间的关系,让这个“反推”不再是
一、 概述 标定的本质是参数辨识。首先明确哪些参数可辨识,其次弄清怎样辨识。 参数包括陀螺仪和加速度计各自的零偏、标度因数、安装误差。 辨识就比较丰富了,如果让各位先不局限于标定任务,想一想你了解的辨识方法有哪些,常见的回答应该有这样几个: 1)解析法或最小二乘 2)滤波(kalman等) 3)梯度下降迭代优化 确实没错,标定里用的就是这些方法。这说明标定其实就是一个普通的参数辨识问题,它和你遇到
一、概念及意义 拿到一个IMU,首要任务是对其器件误差进行分析,包括陀螺仪的误差和加速度计的误差。由于陀螺仪与加速度计的误差特性类似,仅是测量的物理量含义不同,因此我们就以陀螺仪为准来介绍随机误差成分、原理及分析方法。加速度计的误差分析直接照葫芦画瓢就行。 陀螺仪的误差主要包括这样几项: 1. 量化噪声 量化噪声是数字传感器必然出现的噪声,我们通过AD采集把连续时间信号采集成离散信号,在这个过程中
时隔多日,开始填坑,催稿催的我心慌慌~~~ 一、概述 惯性导航的解算是一个实现起来非常简单,但是理解起来要费一番功夫的东西,所谓“实现”就是把公式变成代码,所谓“理解”,就是要弄明白几个公式是怎么推导出来的。 鉴于这种情况,我们先把本篇文章的核心思路捋清楚,然后再去搞细节,不然很容易稀里糊涂地陷入繁琐的公式推导当中去,相信各位以前应该都有过这种体会,每一个公式都看得懂,但是连在一起就不知道它为什么
1. 前言 在自动驾驶或机器人领域,我们目前接触最多的惯性器件就是MEMS了,偶尔会接触到采集车里的光纤惯导。这是我们处在这个行业所看到的情况,但其实它只是惯性领域的局部,把局部放在全局里去看,会对它有更深的理解。为了做到这一点,我们需要在横向上了解还有哪些其它的惯性器件,在纵向上了解每种器件的发展历史。 2. 发展历史 惯性技术的发展史,本质上就是惯性器件的发展史。惯导系统的每一次突破,都是从惯
《多传感器融合定位理论基础》是《从零开始做自动驾驶定位》系列的第二阶段,这一阶段的文章是根据我之前在《泡泡机器人》公众号上写的《组合导航系列文章》重新修改而来。 在这里必须向《泡泡机器人》的读者道歉,当时写那几篇系列文章时,我的认真度不够,尤其到了后期,交了几篇潦草的稿子,干货太少,浪费了各位读者的宝贵时间。这件事后来让我非常自责,这是我在那段时间里,在技术上做过的最后悔的一件事,一直耿耿于怀,心
古月居优秀创作者
积分
粉丝
勋章
TA还没有专栏噢
第三方账号登入
看不清?点击更换
第三方账号登入
QQ 微博 微信