知识主要来源于对Barfoot教授“机器人学中的状态估计”的分析总结理解以及工程实践,感谢高翔博士及其他译者。

今天写了2篇基础文,决定认真抽时间写一篇干货,是整个系列的第一篇,也是整个团队过去这大半年对整个VSLAM、VIO的全面理解与落地,同时也为后续DIO/VDIO相关的工作做一些记录与整理。

全项工作的起源来自于我们过去6年对整个机器视觉领域的研究和我过去19年对整个EEE相关工作的感悟,其实整个CV领域行进到今天,已经在很多地方堵住了。学术界不断的卷论文,产业界中游不断卷市场,上游不断卷Consumer方向,产能与供应开始远远大于需求,实际的技术进步远远比人类真正的能力要弱。宛如三体中的智子,突然我们就来到了2022无力再前行的元宇宙。近年来CV侧唯二能打动人心的,也只是通用SOC侧的进步带来的廉价算力开销,以及即将面世量产的事件摄像机芯片636与更有趣的459。

那究竟什么是对科学与工程的热爱?

至少在我看来,如何将我们现有的科学成果,不断地向工程推进,并立志以其在某些方面,改变人类的生活生产方式。有这样的理想,才能体现对科学与工程的热爱。

闲谈结束,进入正题:

为何将高斯分布作为第一章?

高翔博士的VSLAM十四讲是一本非常生动和工程的书籍,有助于初学者快速掌握相关的知识。但如果仅从14讲就切入行业的话,实际的困难有2方面,一方面是在真正的工程和商业落地中,硬件与PCBA的总体设计/供应链/大厂/方案商/生产商/商业竞争会带来一系列的问题(后续文章中会时不时提到)。另一方面是十四讲本身实在是写得太好和简单,容易让同学们自认为这个学科的简单快速的跳入工程,以忽略数理和基础知识的重要性。这个系列的文章主要是从一个从业19年的老工程师(华为通信9年,港科机器视觉4年,特种机器视觉6年)的角度来分析应该如何掌握此类知识。

进入正题(理解如下部分与系列文章的后续部分需要较为扎实的线性代数基础,对概率导论中的Bayes法则清晰,熟悉高等数学中的求导/积分与链式法则):整个讲解会以非常通俗甚至偏低智的方式完成,其目的是让大家能更简单的了解VSLAM与机器人状态估计领域并提起兴趣,可能会存在不少错误欢迎大家斧正。因为这个学科以及后续的多传感器融合融态的本质学习曲线确实是相当的陡峭。。。

1.高斯分布的2个重要概念

期望值(expectation)与方差/标准差(variance/standard deviation)

分别对应到整个高斯在概率密度函数上的均值,在高斯分布上我们也可以将其理解为极小值或极大值,以及对应高斯分布这座小山的陡度或者斜率。

简单带一嘴全概率公理:整个事件概率终值为1,也可以理解为概率密度/概率密度函数设值为1(其实是完全不同的概念,有兴趣的话可阅读MIT的概率导论),可以理解为在x/y2轴平面图上通过积分反解出的面积。概率密度的零阶矩正好是整个全事件的概率

个人理解的是,高斯分布在机器人状态估计中在大量应用,其期望与协方差的本质可以确定为状态估计本身的2种输入,分别以概率一阶矩与概率二阶矩来进行表述(对应泰勒展开),直接对应于期望与方差/协方差(这2个其实是有差异的,但是初学者无需过多理会)

高斯概率密度函数中的均值μ的英文表述为mean,与高斯分布的期望值是不同的概念

2.线性与非线性

实际机器人运动中所有涉及的状态估计均为非线性

线性比较好理解,如在一个完全无风的篮球馆进行投篮触框之前的曲线(仅受重力影响,不要纠结地球自转行星引力了),在一个材质完全一样的表面(又是一种假设)对底部材质完全一样的质量块给予一个推力带来的运动到停止的过程。

从如上的2个小例子大家就会明白,纯粹的线性运动,实际几乎是不可能存在的理想状态。

但凡事都有2个方面,极端非线性运动的情况,其实在机器人实际运动和操作中也是稀少的。绝大部分的机器人状态估计,在工业与民用范畴,都偏向于轻度或中度非线性(在这不要纠结于军事或作战类UAV/AGV)。

3.大量地将线性高斯系统假设进实际工程

从1和2大家就能看出来,实际真实的VSLAM与多传感器融合融态工程中,就是将大量实际非线性运动的状态估计,以线性高斯系统模拟和假设出来,并作出最接近的状态估计。这里面最常用的数学工具就是矩阵与最小二乘(基础知识匮乏的话可以学习MIT线性代数36讲),因为第一篇主要讨论高斯分布,就不在这赘述了。后续会详解的以卡尔曼滤波/扩展卡尔曼滤波进行的状态估计也会与这块相关。

4.统计独立性与不相关性

在这里我们只需要牢记在高斯系统或高斯概率密度函数中,统计独立性和不相关性是等价的。其实这2种特性在概率导论中有清晰的描述,就不赘述了。

5.香农信息与互信息

此处我们需要牢记,这2种信息对应的均为以定量来刻画不确定性,且香农信息和互信息可以实现换算关系。香农信息H以求概率密度函数负ln对数的期望值方式实现。(ln和exp也广泛应用在机器人状态估计中,涉及李群李代数部分详解)。互信息表述2个随机变量x与y之间的当一个已知后另一个的不确定性减少了多少。在联合高斯分布估计状态信息时广泛应用。香农信息与互信息具备换算关系。

6.克拉美罗下界(CRLB)与Fisher information matrix

又是2个听起来很难懂的术语?

克拉美罗下界是一种方法,定义为:大家可以理解为一个界限,界定了一个参数的真实值的无偏估计(机器人状态估计本质)的协方差Σ,可以由费歇尔信息矩阵I来定义边界(机器人状态估计学习与工程中最容易搞错的就是符号和矩阵名称,不同的书籍体系中用的对应描述都有区别,一定要注意)。最终起的结果是利用了已有观测值估计参数效果和估计方式好坏的标准。

此处有一重要的关系:如果我们从高斯概率密度函数中进行了K次采样(即传感器测量),且均为统计独立,则其费歇尔信息矩阵正好是高斯协方差Σ逆的K倍。其CRLB大于等于1/K*Σ。表明在CRLB处我们状态估计量的期望等于高斯概率密度函数的均值μ

通俗说就是:在高斯概率密度函数下,状态估计值的不确定下界,随测量/观测值增加变得越来越小,正符合我们的要求与标准。

7.为何要使用联合高斯分布与联合高斯概率密度函数?

这里有一个和工程紧密结合的通俗直观的解释:

在机器人状态估计的过程中,我们需要得到的状态估计至少涉及空间中的2种关键变量:相机位置姿态C与路标位置姿态L,这样我们才能在完成相机位置姿态估计的同时完成建图。因为坐标系实际都是相对的。另外我们的测量值在多传感器融合融态中也有多种观测与测量,比如相机给予的观测值与视觉重投影误差,陀螺仪给予的测量值,轮速计或GPS/RTK给予的位置姿态测量值。 因此大量的使用联合高斯分布与联合高斯概率密度是常态。如经典卡尔曼的基础形式:旧的估计综合预测+测量,导入卡尔曼增益与革新量,输出新的估计。

此处还需要注意归一化积,这是个很简单的概念就不赘述了,就是把多个高斯分布用某种数学形式加入一个归一化常数进行归一。大家只需要知道多个pdf(高斯概率密度函数)归一化后的结果仍然是pdf即可

8.在卡尔曼滤波与BA(光束平差法)中联合高斯概率密度应用的体现

应用的方面很多,因为今天主题写的是高斯分布,就在后续的系列更新中去做吧,而且很多部分涉及工程。总体来说就是当我们面对复杂的非线性系统的状态估计时,处处都会涉及线性高斯的假设,如最速下降法到牛顿法,到高斯牛顿法与LM法的递进,尤其是高斯分布中Σ与其的逆会在关键的H矩阵中起到一系列的作用。