2. 厦门市大数据智能分析与决策重点实验室,福建 厦门 361102;
3. 北京航空航天大学仪器科学与光电工程学院,北京 100191
2. Xiamen Key Lab. of Big Data Intelligent Analysis and Decision, Xiamen 361102, China;
3. School of Instrumentation Science & Opto-electronics Engineering, Beijing University of Aeronautics and Astronautics, Beijing 100191, China
位姿估计是移动机器人必须具备的一项核心功能,是实现地图构建、自主移动等功能的前提和基础[1-3]。现今常用惯性测量单元(IMU)、编码器(encoder)、相机(camera)、激光雷达(LiDAR)等传感器构造移动机器人的位姿估计系统。其中,基于IMU构建的惯性导航系统(INS)的导航误差随时间的增加不断累积,无法单独承担长时间的导航定位任务。全球导航卫星系统(GNSS)的定位精度极易受到电磁干扰、卫星拒止等因素的影响,无法在城市、峡谷等复杂区域内提供连续可靠的位置信息。同时,视觉导航系统与激光导航系统分别会在低纹理环境与长廊环境下出现失效问题[4]。因此使用单一传感器难以在复杂环境下完成移动机器人的位姿估计任务[5]。
近些年,涌现出许多基于多传感器融合的机器人位姿估计算法。例如,IMU/编码器融合算法[6-7]、IMU/卫星/磁力计融合算法[8]、IMU/相机融合算法[9-10]、IMU/相机/激光融合算法[11-12]等。但这些算法均存在以下2个不足:(1) 通用性差,即仅针对特定传感器组或特定平台设计,在跨平台移植、传感器组变更上仍然十分繁琐;(2) 在线配置融合算法结构的能力缺乏,即无法根据可用信息源的变化动态调整算法结构,主要体现在无法在线添加或删除信息源、无法在线进行变量选择等方面。因此,除了利用融合技术提升系统定位精度外,研究人员也希望设计一种不依赖特定平台、可在线配置结构的融合算法。实际上,在物理空间变化复杂的环境中,这种在线配置融合结构的能力对于提高定位系统的可靠性和可用性具有重要的意义,例如,进入黑夜场景时隔离视觉定位子系统,进入隧道场景时仅选择激光定位系统的姿态信息进行融合等。
针对第(1) 个不足,研究人员也提出了一些不依赖于特定传感器、较为通用的融合算法,但并不具备在线变更算法结构的能力。Moore等[13]在ROS(robot operating system)环境下设计了一个通用型多源融合框架robot-localization。该框架可以依照ROS预定义的信息格式,融合任意多个子系统的输出数据。但该算法的融合结构只能进行静态配置,无法在线变更融合结构,例如,一旦选定融合视觉子系统的速度数据,就无法在线变更为融合它的位姿数据。另外,该算法使用欧拉角表示姿态,无法被应用于大俯仰角运动的移动平台,如翼型无人机等。
对于第(2) 个不足,研究人员比较关注的方法是联邦滤波算法和因子图优化算法。联邦滤波器是一种具有良好容错结构的分布式融合框架,在结构上能够有效隔离失效的子滤波器[14],但新传感器需要先与公共参考系统构成子滤波器才能参与融合。并且联邦滤波框架不具备在线选择变量的能力,例如,将视觉子系统由速度融合变更为位置融合时,需要重新编写相关的代码。因子图优化是一种具备即插即用能力的融合算法[15],理论上具备可在线配置结构的能力。Qin等[16]设计了一个通用的IMU/相机紧耦合融合框架,该框架将每一个传感器看作为一般的因子,再将所有因子和待优化变量构建出一个MAP(maximum a posteriori)问题进行非线性优化。该框架可以实现任意多个IMU或相机的融合,但对于其他类型的传感器则需要重新进行残差建模,无法摆脱对传感器测量模型的依赖。另外,因子图优化融合的效果显著依赖于平台的计算能力,目前还难以应用于低功率的运动平台,如小型无人机等。
在理论方面,戴海发[17]从数学的角度将各种导航技术的输出抽象为位置、姿态、速度函数的概念,构建了多源融合估计的统一理论框架,为多源融合系统的设计提供了理论上的指导,但缺少工程上的可操作性。
综上,针对组合导航系统中融合估计算法通用性差和在线配置结构困难的问题,本文基于误差状态扩展卡尔曼滤波算法(ES-EKF)提出了一种通用的、可在线配置结构的多源融合估计框架。为了提高框架的通用性,对常见的观测数据类型进行归纳和建模,建立一个与平台无关的、包含8种标准观测类型的模型库。为了赋予框架在线配置结构的能力,将多源信息的每一种融合方式表示为一种融合模式,通过在线变更融合模式来实现信息源和变量的选择。融合算法会根据当前的融合模式自动地从标准观测模型库中调取对应的观测模型将所选的多源信息进行融合。最后,将该算法应用于IMU/磁力计/编码器/相机/激光雷达组合导航系统,验证其有效性和可行性。
2 总体框架(Overall framework)图 1展示了多源融合估计总体框架,主要由传感器、子系统和融合中心3部分构成。各传感器以相应的导航技术构成彼此独立的子导航系统,各子系统输出在配置模块组织下进入ES-EKF融合估计器中参与融合。
融合中心由ES-EKF融合估计器、配置模块、标准观测模型库组成,是本文主要的研究内容。融合估计器基于ES-EKF实现,信息处理流程依次为全状态预测、误差状态预测、误差状态更新、全状态更新(见第3节)。配置模块根据预先制定的融合模式配置表和子系统失效报告,在线对融合估计器的结构进行变更,主要包括信息源选择和变量选择2项任务(见第5节)。标准观测模型库是一个具有通用性的卡尔曼观测更新库,在编程实现上表现为一个函数库,包括全局位置观测模型(GP)、全局姿态观测模型(GA)、全局位姿观测模型(GPA)、全局速度观测模型(GV)、局部位置增量观测模型(LIP)、局部姿态增量观测模型(LIA)、局部位姿增量观测模型(LIPA)、局部速度观测模型(LV),建模过程见第4节。
3 ES-EKF融合估计器(ES-EKF fusion estimator) 3.1 坐标系与状态变量局部坐标系
设
$ \begin{align} \begin{cases} \mathit{\boldsymbol{R}}= {\rm Exp\, }(\mathit{\boldsymbol{a}}) \\ \mathit{\boldsymbol{a}}= {\rm Log\, }(\mathit{\boldsymbol{R}}) \end{cases} \end{align} $ | (1) |
其中,Exp表示将旋转向量转换为旋转矩阵的函数,Log表示将旋转矩阵转化为旋转向量的函数,具体计算过程请参考文[18] 中的式(3)。
姿态误差的矩阵表示和旋转向量表示分别为
$ \begin{align} \begin{cases} \mathit{\boldsymbol{\delta}}_{\mathit{\boldsymbol{R}}} =\mathit{\boldsymbol{R\hat{R}}}{}^{\rm T} \\ \mathit{\boldsymbol{\delta}}_{\mathit{\boldsymbol{a}}} ={\rm Log\, } (\mathit{\boldsymbol{\delta}}_{\rm R}) \end{cases} \end{align} $ | (2) |
其中,
$ \begin{align} \mathit{\boldsymbol{\delta}}_{\mathit{\boldsymbol{R}}} \approx \mathit{\boldsymbol{I}}+[ \mathit{\boldsymbol{\delta}}_{\mathit{\boldsymbol{a}}} ]_{\times} \end{align} $ | (3) |
其中,
系统的全状态
$ \begin{align} \mathit{\boldsymbol{x}} \triangleq [{\mathit{\boldsymbol{p}}, \mathit{\boldsymbol{v}}, \mathit{\boldsymbol{R}}, \mathit{\boldsymbol{b}}_{\rm f}, \mathit{\boldsymbol{b}}_{\omega}, \mathit{\boldsymbol{g}}}] \end{align} $ | (4) |
其中,位置
$ \begin{align} \hat{\mathit{\boldsymbol{x}}} \triangleq \left[\hat{\mathit{\boldsymbol{p}}}, \hat{\mathit{\boldsymbol{v}}}, \hat{\mathit{\boldsymbol{R}}}, \hat{\mathit{\boldsymbol{b}}}_{\mathrm{f}}, \hat{\mathit{\boldsymbol{b}}}_{\omega}, \hat{\mathit{\boldsymbol{g}}}\right] \end{align} $ | (5) |
其中,
$ \begin{align} {\mathit{\boldsymbol{\varepsilon}}} \triangleq [{\mathit{\boldsymbol{\varDelta}}_{\mathit{\boldsymbol{p}}}^{\rm T}} \; \; {\mathit{\boldsymbol{\varDelta}}_{{\mathit{\boldsymbol{v}}}}^{\rm T}} \; \; {\mathit{\boldsymbol{\delta}}_{\mathit{\boldsymbol{a}}}^{\rm T}} \; \; {\mathit{\boldsymbol{\varDelta}}_{\mathit{\boldsymbol{b}}{\rm f}}^{\rm T}} \; \; {\mathit{\boldsymbol{\varDelta}}_{\mathit{\boldsymbol{b}}{\omega}}^{\rm T}} \; \; {\mathit{\boldsymbol{\varDelta}}_{\mathit{\boldsymbol{g}}}^{\rm T}} ]^{\rm T}\in \mathbb{R}^{18} \end{align} $ | (6) |
这里,
将比力(加速度计的测量对象)和角速度(陀螺仪的测量对象)的测量值分别记为
$ \begin{align} {\mathit{\boldsymbol{x}}}_{k} =\mathscr {{\mathit{\boldsymbol{A}}}} ( \mathit{\boldsymbol{x}}_{k-1}, \mathit{\boldsymbol{u}}_{{\rm m}, k-1}, \mathit{\boldsymbol{w}}_{{\rm{sys}}, k} ) \end{align} $ | (7) |
其中,下标
$ \begin{align*} \begin{cases} \mathit{\boldsymbol{p}}_{k} =\mathit{\boldsymbol{p}}_{k-1} +\mathit{\boldsymbol{v}}_{k-1} {\Delta} t+\frac{1}{2}( \mathit{\boldsymbol{R}}_{k-1} ({\mathit{\boldsymbol{f}}_{{\rm m}, k-1} -\mathit{\boldsymbol{b}}_{{\rm f}, k-1}})+ \\ \qquad\; \; \mathit{\boldsymbol{g}}_{k-1} ){\Delta} t^{2}+\mathit{\boldsymbol{w}}_{{\mathit{\boldsymbol{p}}}, k} \\ \mathit{\boldsymbol{v}}_{k} =\mathit{\boldsymbol{v}}_{k-1} +[{\mathit{\boldsymbol{R}}_{k-1} ({\mathit{\boldsymbol{f}}_{{\rm m}, k-1} -\mathit{\boldsymbol{b}}_{{\rm f}, k-1}})+\mathit{\boldsymbol{g}}_{k-1}}]{\Delta} t\!+\! \mathit{\boldsymbol{w}}_{{\mathit{\boldsymbol{v}}}, k} \\ \mathit{\boldsymbol{R}}_{k} =\mathit{\boldsymbol{R}}_{k-1} {\rm Exp\, } ({({\mathit{\boldsymbol{\omega}}_{{\rm m}, k-1} -\mathit{\boldsymbol{b}}_{{\omega}, k-1}}){\Delta} t+\mathit{\boldsymbol{w}}_{{\mathit{\boldsymbol{a}}}, k}}) \\ \mathit{\boldsymbol{b}}_{{\rm f}, k} =\mathit{\boldsymbol{b}}_{{\rm f}, k-1} +\mathit{\boldsymbol{w}}_{\mathit{\boldsymbol{b}}{\rm f}, k} \\ \mathit{\boldsymbol{b}}_{{\omega}, k} =\mathit{\boldsymbol{b}}_{{\omega}, k-1} +\mathit{\boldsymbol{w}}_{\mathit{\boldsymbol{b}}{\omega}, k} \\ \mathit{\boldsymbol{g}}_{k} =\mathit{\boldsymbol{g}}_{k-1} +\mathit{\boldsymbol{w}}_{{\mathit{\boldsymbol{g}}}, k} \end{cases}\!\!\!\!\!\!\!\! \end{align*} $ |
这里,
假设系统噪声为0,获得全状态的预测方程为
$ \begin{align} \hat{\mathit{\boldsymbol{x}}}_{k}=\mathscr{{\mathit{\boldsymbol{A}}}} (\hat{\mathit{\boldsymbol{x}}}_{k-1}, \mathit{\boldsymbol{u}}_{{\rm m}, k-1}, \mathit{\boldsymbol{0}}) \end{align} $ | (8) |
根据误差状态的定义(6),对比考虑噪声的全状态运动模型(7) 和不考虑噪声的全状态预测方程(8),可得到误差状态的运动模型(详细推导过程参见附录A)。误差状态运动模型的矩阵表示为
$ \begin{align} \mathit{\boldsymbol{\varepsilon}}_{k} =\mathit{\boldsymbol{F}}_{k, k-1} \mathit{\boldsymbol{\varepsilon}}_{k-1} +\mathit{\boldsymbol{w}}_{{\rm{sys}}, k} \end{align} $ | (9) |
其中,
$ \mathit{\boldsymbol{F}}_{k, k-1} =\begin{bmatrix} {\mathit{\boldsymbol{I}}} & {\Delta t{\mathit{\boldsymbol{I}}}} & {-\dfrac{\Delta t^{2}}{2} [{\hat{\mathit{\boldsymbol{R}}}_{k-1} ({\mathit{\boldsymbol{f}}_{{\rm m}, k-1} \!-\!\hat{\mathit{\boldsymbol{b}}}_{{\rm f}, k-1}})} ]_{\times}} & {-\dfrac{\Delta t^{2}}{2}\hat{\mathit{\boldsymbol{R}}}_{k-1}} & {\mathit{\boldsymbol{0}}} & {\dfrac{\Delta t^{2}}{2}{\mathit{\boldsymbol{I}}}} \\ {\mathit{\boldsymbol{0}}} & {\mathit{\boldsymbol{I}}} & {-\Delta t [{\hat{\mathit{\boldsymbol{R}}}_{k-1} ({\mathit{\boldsymbol{f}}_{{\rm m}, k-1} \!-\!\hat{\mathit{\boldsymbol{b}}}_{{\rm f}, k-1}})}]_{\times}} & {-\Delta t\hat{\mathit{\boldsymbol{R}}}_{k-1}} & {\mathit{\boldsymbol{0}}} & {\Delta t{\mathit{\boldsymbol{I}}}} \\ {\mathit{\boldsymbol{0}}} & {\mathit{\boldsymbol{0}}} & {\mathit{\boldsymbol{I}}} & {\mathit{\boldsymbol{0}}} & {-\Delta t\hat{\mathit{\boldsymbol{R}}}_{k-1}} & {\mathit{\boldsymbol{0}}} \\ {\mathit{\boldsymbol{0}}} & {\mathit{\boldsymbol{0}}} & {\mathit{\boldsymbol{0}}} & {\mathit{\boldsymbol{I}}} & {\mathit{\boldsymbol{0}}} & {\mathit{\boldsymbol{0}}} \\ {\mathit{\boldsymbol{0}}} & {\mathit{\boldsymbol{0}}} & {\mathit{\boldsymbol{0}}} & {\mathit{\boldsymbol{0}}} & {\mathit{\boldsymbol{I}}} & {\mathit{\boldsymbol{0}}} \\ {\mathit{\boldsymbol{0}}} & {\mathit{\boldsymbol{0}}} & {\mathit{\boldsymbol{0}}} & {\mathit{\boldsymbol{0}}} & {\mathit{\boldsymbol{0}}} & {\mathit{\boldsymbol{I}}} \end{bmatrix} $ |
记
$ \begin{equation} \begin{aligned} & \hat{\mathit{\boldsymbol{x}}}_{k | k-1}=\mathscr{{\mathit{\boldsymbol{A}}}} (\hat{\mathit{\boldsymbol{x}}}_{k-1 | k-1}, \mathit{\boldsymbol{u}}_{\mathrm{m}, k-1}, \bf{0} ) \\ & \hat{\mathit{\boldsymbol{\varepsilon}}}_{k | k-1}=\mathit{\boldsymbol{F}}_{k, k-1} \hat{\mathit{\boldsymbol{\varepsilon}}}_{k-1 | k-1} \\ & \mathit{\boldsymbol{P}}_{k | k-1}=\mathit{\boldsymbol{F}}_{k, k-1} \mathit{\boldsymbol{P}}_{k-1 | k-1} \mathit{\boldsymbol{F}}_{k, k-1}^{\rm T}+\mathit{\boldsymbol{\varSigma}}_{\mathrm{sys}, k} \end{aligned} \end{equation} $ | (10) |
设
$ \begin{equation} \begin{aligned} & {\mathit{\boldsymbol{z}}}_{k} ={\mathit{\boldsymbol{H}}}_{k} {\mathit{\boldsymbol{\varepsilon}}}_{k} +{\mathit{\boldsymbol{w}}}_{{\rm{meas}}, k} \\ & {\mathit{\boldsymbol{w}}}_{{\rm{meas}}, k} \sim {\mathcal N}(\mathit{\boldsymbol{0}}, {\mathit{\boldsymbol{\varSigma}}}_{{\rm{meas}}, k}) \end{aligned} \end{equation} $ | (11) |
其中,
$ \begin{align} \mathit{\boldsymbol{K}}_{k} & =\mathit{\boldsymbol{P}}_{k | k-1} \mathit{\boldsymbol{H}}_{k}^{\mathrm{T}}\left(\mathit{\boldsymbol{H}}_{k} \mathit{\boldsymbol{P}}_{k | k-1} \mathit{\boldsymbol{H}}_{k}^{\mathrm{T}}+\mathit{\boldsymbol{\varSigma}}_{\rm {meas }, k}\right)^{-1} \\ \hat{\mathit{\boldsymbol{\varepsilon}}}_{k | k} & =\hat{\mathit{\boldsymbol{\varepsilon}}}_{k | k-1}+\mathit{\boldsymbol{K}}_{k}\left(\mathit{\boldsymbol{z}}_{k}-\mathit{\boldsymbol{H}}_{k} \hat{\mathit{\boldsymbol{\varepsilon}}}_{k | k-1}\right) \\ \mathit{\boldsymbol{P}}_{k | k} & =\left(\mathit{\boldsymbol{I}}-\mathit{\boldsymbol{K}}_{k} \mathit{\boldsymbol{H}}_{k}\right) \mathit{\boldsymbol{P}}_{k | k-1} \end{align} $ | (12) |
根据式(6) 的误差定义进行逆向运算,使用误差估计值
$ \begin{align} \hat{\mathit{\boldsymbol{x}}}_{k | k}=\hat{\mathit{\boldsymbol{x}}}_{k | k-1} \oplus \hat{\mathit{\boldsymbol{\varepsilon}}}_{k | k} \end{align} $ | (13) |
最后,对误差状态的最优估计值进行归零,为下一时刻的误差状态估计作准备,归零过程记为
$ \begin{align} \hat{\mathit{\boldsymbol{\varepsilon}}}_{k|k} \leftarrow \bm0 \end{align} $ | (14) |
北斗定位系统和全局视觉测量系统等导航技术通常输出信息为全局位置信息,状态更新时的观测模型记为GP。子系统的全局位置输出值记为
$ \begin{align} \mathit{\boldsymbol{y}}_{{\rm GP}, k} =\mathit{\boldsymbol{p}}_{k} +\mathit{\boldsymbol{w}}_{{\rm GP}, k} \end{align} $ | (15) |
其中,
$ \begin{align} \mathit{\boldsymbol{z}}_{{\rm GP}, k} ={\mathit{\boldsymbol{H}}}_{{\rm GP, }k} {\mathit{\boldsymbol{\varepsilon}}}_{k} +\mathit{\boldsymbol{w}}_{{\rm GP}, k} \end{align} $ | (16) |
其中,
$ \begin{align*} \mathit{\boldsymbol{z}}_{\mathrm{GP}, k} &\triangleq \mathit{\boldsymbol{y}}_{\mathrm{GP}, k}-\hat{\mathit{\boldsymbol{p}}}{}_{k | k-1}\\ \mathit{\boldsymbol{H}}_{\mathrm{GP}, k} &= [\mathit{\boldsymbol{I}} \; \; \mathit{\boldsymbol{0}} \; \; \mathit{\boldsymbol{0}} \; \; \mathit{\boldsymbol{0}} \; \; \mathit{\boldsymbol{0}} \; \; \mathit{\boldsymbol{0}}] \in \mathbb{R}^{3 \times 18} \end{align*} $ |
姿态航向参考系统(AHRS)和双天线GNSS定向系统等导航子系统的输出通常为全局姿态信息,观测更新时的观测模型记为GA。子系统的全局姿态输出值记为
$ \begin{align} \mathit{\boldsymbol{y}}_{{\rm GA}, k} ={\rm Exp\, } (\mathit{\boldsymbol{w}}_{{\rm GA}, k})\mathit{\boldsymbol{R}}_{k} \end{align} $ | (17) |
其中,
$ \begin{align} \mathit{\boldsymbol{z}}_{{\rm GA}, k} ={\mathit{\boldsymbol{H}}}_{{\rm GA}, k} {\mathit{\boldsymbol{\varepsilon}}}_{k} +\mathit{\boldsymbol{w}}_{{\rm GA}, k} \end{align} $ | (18) |
其中,
$ \begin{align*} \mathit{\boldsymbol{z}}_{\mathrm{GA}, k} & \triangleq {\rm Log\, } \left(\mathit{\boldsymbol{y}}_{\mathrm{GA}, k} \hat{\mathit{\boldsymbol{R}}}_{k | k-1}^{\mathrm{T}}\right)\\ \mathit{\boldsymbol{H}}_{\mathrm{GA}, k}& =[ \mathit{\boldsymbol{0}} \; \; \mathit{\boldsymbol{0}} \; \; \mathit{\boldsymbol{I}} \; \; \mathit{\boldsymbol{0}} \; \; \mathit{\boldsymbol{0}} \; \; \mathit{\boldsymbol{0}} ] \in \mathbb{R}^{3 \times 18} \end{align*} $ |
有地图辅助的视觉定位子系统和激光定位子系统等子导航系统通常同步输出全局位置和全局姿态(合称为全局位姿)信息,观测更新时的观测模型记为GPA。联合位置误差观测模型(16) 和姿态误差观测模型(18),则全局位姿观测模型为
$ \begin{align} \mathit{\boldsymbol{z}}_{\rm{GPA}, k} ={\mathit{\boldsymbol{H}}}_{\rm{GPA}, k} {\mathit{\boldsymbol{\varepsilon}}}_{k} +\mathit{\boldsymbol{w}}_{\rm{GPA}, k} \end{align} $ | (19) |
其中,
$ \begin{align*} \mathit{\boldsymbol{z}}_{\mathrm{GA}, k} & \triangleq \begin{bmatrix} \mathit{\boldsymbol{y}}_{\mathrm{GP}, k}-\hat{\mathit{\boldsymbol{p}}}{}_{k | k-1} \\ {\rm Log\, } \left(\mathit{\boldsymbol{y}}_{\mathrm{GA}, k} \hat{\mathit{\boldsymbol{R}}}_{k | k-1}^{\rm T}\right) \end{bmatrix} \in \mathbb{R}^{6} \\ \mathit{\boldsymbol{w}}_{\mathrm{GPA}, k} & \triangleq \begin{bmatrix} \mathit{\boldsymbol{w}}_{\mathrm{GP}, k} \\ \mathit{\boldsymbol{w}}_{\mathrm{GA}, k} \end{bmatrix} \in \mathbb{R}^{6} \\ \mathit{\boldsymbol{H}}_{\mathrm{GPA}, k} &= \begin{bmatrix} \mathit{\boldsymbol{I}} & \mathit{\boldsymbol{0}} & \mathit{\boldsymbol{0}} & \mathit{\boldsymbol{0}} & \mathit{\boldsymbol{0}} & \mathit{\boldsymbol{0}} \\ \mathit{\boldsymbol{0}} & \mathit{\boldsymbol{0}} & \mathit{\boldsymbol{I}} & \mathit{\boldsymbol{0}} & \mathit{\boldsymbol{0}} & \mathit{\boldsymbol{0}} \end{bmatrix} \in \mathbb{R}^{6 \times 18} \end{align*} $ |
卫星/惯性组合导航系统和视觉/惯性组合系统等子导航系统通常可输出全局速度信息,观测更新时的观测模型记为GV。子系统的全局速度输出值记为
$ \begin{align} \mathit{\boldsymbol{y}}_{{\rm GV}, k} =\mathit{\boldsymbol{v}}_{k} +\mathit{\boldsymbol{w}}_{{\rm GV}, k} \end{align} $ | (20) |
其中,
$ \begin{align} \mathit{\boldsymbol{z}}_{{\rm GV}, k} ={\mathit{\boldsymbol{H}}}_{{\rm GV, }k} {\mathit{\boldsymbol{\varepsilon}}}_{k} +\mathit{\boldsymbol{w}}_{{\rm GV}, k} \end{align} $ | (21) |
其中,
$ \begin{align*} \mathit{\boldsymbol{z}}_{{\rm GV}, k} & \triangleq \mathit{\boldsymbol{y}}_{{\rm GV}, k}-\hat{\mathit{\boldsymbol{v}}}_{k | k-1}\\ \mathit{\boldsymbol{H}}_{{\rm GV}, k} & = [\mathit{\boldsymbol{0}} \; \; \mathit{\boldsymbol{I}} \; \; \mathit{\boldsymbol{0}} \; \; \mathit{\boldsymbol{0}} \; \; \mathit{\boldsymbol{0}} \; \; \mathit{\boldsymbol{0}} ] \in \mathbb{R}^{3 \times 18} \end{align*} $ |
视觉里程计和激光雷达里程计等里程计通常输出局部位置增量和局部姿态增量信息。当融合里程计的局部位置增量时,所建立的观测模型记为LIP。在时间区间
$ \begin{align} \mathit{\boldsymbol{y}}_{\rm{LIP}, k} \mathit{\boldsymbol{=}}\mathit{\boldsymbol{R}}_{k-1}^{\rm T} ({\mathit{\boldsymbol{p}}_{k} -\mathit{\boldsymbol{p}}_{k-1}})+\mathit{\boldsymbol{w}}_{\rm{LIP}, k} \end{align} $ | (22) |
其中,
$ \begin{align} \mathit{\boldsymbol{z}}_{\rm{LIP}, k} ={\mathit{\boldsymbol{H}}}_{\rm{LIP}, k} {\mathit{\boldsymbol{\varepsilon}}}_{k} +\mathit{\boldsymbol{w}}_{\rm{LIP}, {k}} \end{align} $ | (23) |
其中,
$ \begin{align*} \mathit{\boldsymbol{z}}_{\rm{LIP}, k} & \triangleq \mathit{\boldsymbol{y}}_{\rm{LIP}, k}-\hat{\mathit{\boldsymbol{R}}}{}^{\rm T}_{k-1 | k-1}\left(\hat{\mathit{\boldsymbol{p}}}{}_{k | k-1}-\hat{\mathit{\boldsymbol{p}}}{}_{k-1 | k-1}\right)\\ \mathit{\boldsymbol{H}}_{\rm{LIP}, k} & = [\hat{\mathit{\boldsymbol{R}}}{}_{k-1 | k-1}^{\rm T} \; \; \mathit{\boldsymbol{0}} \; \; \mathit{\boldsymbol{0}} \; \; \mathit{\boldsymbol{0}} \; \; \mathit{\boldsymbol{0}} \; \; \mathit{\boldsymbol{0}} ] \in \mathbb{R}^{3 \times 18} \end{align*} $ |
当融合局部姿态增量时,所建立的观测模型记为LIA。子系统输出的姿态增量记为
$ \begin{align} \mathit{\boldsymbol{y}}_{\rm{LIA}, k} ={\rm E}{\rm{xp}}({\mathit{\boldsymbol{w}}_{\rm{LIA}, k}})\mathit{\boldsymbol{R}}_{k-1}^{\rm T} \mathit{\boldsymbol{R}}_{k} \end{align} $ | (24) |
其中,
$ \begin{align} \mathit{\boldsymbol{z}}_{\rm{LIA}, k} ={\mathit{\boldsymbol{H}}}_{\rm{LIA}, k} {\mathit{\boldsymbol{\varepsilon}}}_{k} +\mathit{\boldsymbol{w}}_{\rm{LIA}, k} \end{align} $ | (25) |
其中,
$ \begin{align*} \mathit{\boldsymbol{z}}_{{\rm LIA}, k} & \triangleq {\rm Log\, } \left(\mathit{\boldsymbol{y}}_{{\rm LIA}, k} \hat{\mathit{\boldsymbol{R}}}{}_{k | k-1}^{\rm T} \hat{\mathit{\boldsymbol{R}}}_{k-1 | k-1}\right)\\ \mathit{\boldsymbol{H}}_{{\rm LIA}, k} & = [\mathit{\boldsymbol{0}} \; \; \mathit{\boldsymbol{0}} \; \; \hat{\mathit{\boldsymbol{R}}}{}_{k-1 | k-1}^{\rm T} \; \; \mathit{\boldsymbol{0}} \; \; \mathit{\boldsymbol{0}} \; \; \mathit{\boldsymbol{0}} ] \in \mathbb{R}^{3 \times 18} \end{align*} $ |
当同时融合局部位置增量和局部姿态增量时(合称为局部位姿增量),所建立的观测模型记为LIPA。联合LIP的观测模型(23) 和LIA的观测模型(25),则局部位姿增量观测模型为
$ \begin{align} \mathit{\boldsymbol{z}}_{\rm{LIPA}, k} ={\mathit{\boldsymbol{H}}}_{\rm{LIPA}, k} {\mathit{\boldsymbol{\varepsilon}}}_{k} +\mathit{\boldsymbol{w}}_{\rm{LIPA}, k} \end{align} $ | (26) |
其中,
$ \begin{align*} \mathit{\boldsymbol{z}}_{\rm{LIPA}, k} & \triangleq \begin{bmatrix} \mathit{\boldsymbol{y}}_{{\rm LIP}, k}-\hat{\mathit{\boldsymbol{R}}}{}_{k-1 | k-1}^{\rm T}\left(\hat{\mathit{\boldsymbol{p}}}{}_{k | k-1}-\hat{\mathit{\boldsymbol{p}}}{}_{k-1 | k-1}\right) \\ {\rm Log\, } \left(\mathit{\boldsymbol{y}}_{{\rm LIA}, k} \hat{\mathit{\boldsymbol{R}}}{}_{k | k-1}^{\rm T} \hat{\mathit{\boldsymbol{R}}}_{k-1 | k-1}\right) \end{bmatrix} \\ &\quad \in \mathbb{R}^{6} \\ \mathit{\boldsymbol{w}}_{\rm{LIPA}, {\rm k}} & \triangleq \begin{bmatrix} \mathit{\boldsymbol{w}}_{\rm{LIP}, k} \\ \mathit{\boldsymbol{w}}_{\rm{LIA}, k} \end{bmatrix} \in \mathbb{R}^{6} \\ \mathit{\boldsymbol{H}}_{\rm{LIPA}, k} & = \begin{bmatrix} \hat{\mathit{\boldsymbol{R}}}{}_{k-1 | k-1}^{\rm T} & \mathit{\boldsymbol{0}} & \mathit{\boldsymbol{0}} & \mathit{\boldsymbol{0}} & \mathit{\boldsymbol{0}} & \mathit{\boldsymbol{0}} \\ \mathit{\boldsymbol{0}} & \mathit{\boldsymbol{0}} & \hat{\mathit{\boldsymbol{R}}}{}_{k-1 | k-1}^{\rm T} & \mathit{\boldsymbol{0}} & \mathit{\boldsymbol{0}} & \mathit{\boldsymbol{0}} \end{bmatrix} \\ & \in \mathbb{R}^{6 \times 18} \end{align*} $ |
超声波测速系统和编码器测速系统等测速子系统通常输出局部速度信息。融合局部速度所建立的观测模型记为LV。子系统输出的局部速度值记为
$ \begin{align} \mathit{\boldsymbol{y}}_{{\rm LV}, k} =\mathit{\boldsymbol{R}}_{k}^{\rm T} \mathit{\boldsymbol{v}}_{k} +\mathit{\boldsymbol{w}}_{{\rm LV}, k} \end{align} $ | (27) |
其中,
$ \begin{align} \mathit{\boldsymbol{z}}_{{\rm LV}, k} ={\mathit{\boldsymbol{H}}}_{{\rm LV}, k} {\mathit{\boldsymbol{\varepsilon}}}_{k} +\mathit{\boldsymbol{w}}_{{\rm LV}, k} \end{align} $ | (28) |
其中,
$ \begin{align*} \mathit{\boldsymbol{z}}_{{\rm LV}, k} & \triangleq \mathit{\boldsymbol{y}}_{{\rm LV}, k}-\hat{\mathit{\boldsymbol{R}}}{}_{k | k-1}^{\rm T} \hat{\mathit{\boldsymbol{v}}}_{k | k-1} \in \mathbb{R}^{3}\\ {\mathit{\boldsymbol{H}}}_{{\rm LV}, k} & = [{0\mathit{\boldsymbol{}}} \; \; \hat{\mathit{\boldsymbol{R}}}{}_{k | k-1}^{\rm T} \; \; \hat{\mathit{\boldsymbol{R}}}{}_{k | k-1}^{\rm T}[\hat{\mathit{\boldsymbol{v}}}_{k | k-1}]_{\times} \; \; {0\mathit{\boldsymbol{}}} \; \; {0\mathit{\boldsymbol{}}} \; \; {0\mathit{\boldsymbol{}}}]\\ &\in \mathbb{R}^{3\times18} \end{align*} $ |
融合结构配置是指在估计器内部选择哪些信息源及哪些类型的变量参与融合估计,包括2个层面:(1) 根据子系统失效报告,确定使用哪些子导航系统的输出进行融合估计,即寻找最优的子系统组合;(2) 根据所选子系统组合,确定使用各子系统的哪些输出量进行融合。配置模块的作用是在线地根据子系统失效报告和融合模式配置表为ES-EKF融合估计器选择出合适的融合模式,通过变更融合模式来实现融合算法结构的在线配置。
5.1 子系统失效报告在本框架中,各子系统使用现有的失效检测方法独立地进行失效判别,例如,激光子系统可使用特征值分析法[19]进行失效检测,视觉子系统常用的失效检测方法为特征点数目阈值法[20],卫星定位常用卡方检测法[21]进行异常值诊断。各子系统周期性地完成失效检测并向配置模块发送失效报告,报告内容有4种可能:(1) 子系统发生失效,即由正常状态变为失效状态;(2) 子系统恢复正常,即由失效状态变为正常状态;(3) 子系统保持失效,即继续保持失效状态;(4) 子系统保持正常,即继续保持正常状态。
5.2 融合模式配置表及其制定一个导航子系统可能会有多种类型的输出。例如,视觉定位子系统既可以输出位姿变量也可以输出速度变量,因此需要综合考虑各个子系统的特点为它们分配合适的观测模型。融合模式配置表是一个2维表格,每一种融合模式表示各子系统观测更新的一种组合方式,对应着一种融合结构。表 1制定了
$ \begin{align} {{\mathit{\boldsymbol{M}}}}_{i} =[ c_{i1}, c_{i2}, \cdots, c_{im} ] \end{align} $ | (29) |
其中,
在状态更新阶段,ES-EKF融合估计器根据选定的融合模式自动从标准观测模型库调用相应的观测模型,从而实现子系统输出的有效融合。
在复杂环境中,固定使用一种融合模式通常无法获得稳定、可靠的定位结果,需要根据子系统的失效报告进行模式的变更。当某一个子系统发生失效时,很可能存在多种模式可供选择,因此在制定融合模式配置表时需要预先为每种融合模式分配一个优先级——表征该模式优先使用的级别。当有多个融合模式可供使用时,系统会选用优先级最高的模式进行多源融合。通常,需要对每一种融合模式进行定位精度测试,精度越高就分配越高的优先级。
5.3 融合模式在线变更流程导航任务开始前,根据工作环境设置初始的融合模式,如果在导航任务中某些子系统出现失效,配置模块会根据融合模式配置表和失效报告在线变更ES-EKF融合估计器的融合模式,实现失效信息源的删除或新信息源的添加。例如,当移动机器人运动到非常昏暗的环境时,视觉子系统出现失效,为了保证导航定位功能正常,需要根据优先级删除视觉子系统,具体操作为:依据模式配置表找出不使用视觉子系统的融合模式,再将优先级最高的候选模式设定为新的融合模式;反之可实现视觉子系统的添加。图 2展示了ES-EKF融合估计器的融合模式在线变更的一般流程。
为了验证该融合框架的有效性和可行性,基于本文融合框架实现一个惯性测量单元/磁力计/编码器/双目相机/激光雷达组合导航系统,分别进行固定融合模式试验、精度对比试验和在线变更融合模式试验。
6.1 试验平台如图 3所示,试验的硬件平台由3部分构成,四轮独立驱动越野型移动机器人、工控机、传感器组。硬件平台的各产品及其型号如表 2所示,系统的软件架构如图 4所示。整个导航系统在ROS环境下使用C++ 语言实现,包含如下3个导航子系统:(1) 基于编码器和AHRS系统的位姿估计子系统,简称EO(encoder odometer);(2) 基于IMU和双目视觉的位姿估计子系统,简称VO(visual odometer),改编自VINS-Fusion算法[16];(3) 基于激光雷达的位姿估计子系统,简称LO(laser odometer),改编自LeGO-LOAM算法[22]。
实验场地为野外土山,跑车时间为下午2时30分。以RTK定位数据为定位参考值(水平精度为10 mm
为了对同一跑车试验过程中不同融合模式的定位结果进行比较,本文采用ROS-BAG工具包记录试验过程中的各项传感器数据,再在ROS环境下进行数据集回放和融合测试,从而验证本文融合框架的有效性与可配置性。
6.3 固定融合模式试验子系统EO输出位姿增量和全局速度数据,因此EO参与融合时可选择所使用的标准观测模型为LIPA或GV。子系统VO输出位姿增量和局部速度数据,对应的观测模型分别为LIPA和LV。子系统LO仅输出位姿增量,观测模型选为LIPA。针对图 4所示的导航系统,依据5.1节模式配置规则,制定出7种融合模式,详情见表 3。
所谓固定融合模式试验,即在整个系统运行过程中,固定使用一种融合模式进行子系统输出数据的融合,该试验的目的是为了确定每种融合模式的定位精度,以便为每一种模式分配合适的优先级。图 6为各融合模式下系统的定位曲线,表 4为各融合模式下导航系统的定位平均误差和相对误差。
对比7种融合模式下的定位误差情况,制定出各融合模式的优先级,定位误差越低,分配的优先级越高,详情见表 3第1列。
6.4 精度对比试验为了验证本算法的定位精度,开展精度对比试验。试验内容:以robot-localization算法融合IMU、EO、VO和LO,计算其平均定位误差和相对误差,并与本文算法(模式7)进行精度对比。
选择robot-localization算法作为对比对象,主要是因为:(1) 与本文框架类似,它也是基于EKF的松耦合融合框架。(2) 它是ROS系统上非常流行、被广泛使用的一种定位算法包。图 7展示了本文算法(模式7)和robot-localization算法的定位轨迹,表 5统计了2种算法的平均误差和相对误差。量化结果表明,在融合相同信息源时,本文算法具有更高的定位精度。
为了进一步验证本框架的在线配置融合结构的能力,进行半仿真试验,试验内容为:初始融合模式设置为模式7,第101 s时LO出现异常,算法根据表 3中的优先级在线变更融合模式为模式3,隔离子系统LO;第183 s时LO又恢复正常,算法再次在线变更融合模式为模式7,继续融合LO的输出信息。本试验的目的是验证该算法的在线配置能力,LO并未真正出现异常,因此该试验是一种半仿真试验。
图 8展示了动态配置测试的定位轨迹;定位误差量化值为:平均定位误差为2.788 6 m,相对平均误差为0.5282%。试验结果表明,当出现失效信息源时,本算法能够有效地进行融合模式变更,隔离开失效信息源,维持系统的定位性能;当被隔离的信息源恢复正常时,通过再次变更融合模式,添加该信息源,继续增强系统的定位性能。
基于扩展卡尔曼滤波和标准观测模型库,提出一种不依赖特定平台、可在线配置结构的多源融合估计框架,赋予组合导航系统在线变更组合方式的能力,并通过试验验证了该算法的有效性和可行性。试验表明,本文提出的融合估计框架具有以下显著优势:(1) 不依赖于特定平台,可以方便地应用到无人车、无人机等各类运动平台上;(2) 在精度上优于robot-localization算法;(3) 无需复杂的系统设计便可快速地将现有的单一传感器算法集成在一块,配置简单、高效;(4) 具有动态配置功能,可以从软件层面实现信息源的动态添加和删除,为复杂场景下移动机器人的韧性定位提供一种可行的融合框架。
本文的融合框架尽管可以赋予组合导航系统动态删除或添加信息源的能力,但需要环境感知信息和健康检测报告才能发挥其价值。因此,将来的工作重点是:建立起工作场景和传感模态的关联,自适应地实现组合导航系统的结构调整,更可靠地完成融合估计和导航定位。
附录(Appendix) 误差状态运动模型推导式(7) 为考虑噪声时全状态的运动模型;式(8) 为全状态的预测方程,即不考虑噪声时的全状态运动模型。具体公式如下:
$ \begin{align*} \mathit{\boldsymbol{x}}_{k} & =\mathscr{{\mathit{\boldsymbol{A}}}}\left(\mathit{\boldsymbol{x}}_{k-1}, \mathit{\boldsymbol{u}}_{{\rm m}, k-1}, \mathit{\boldsymbol{w}}_{{\rm sys}, k}\right) \Leftrightarrow \begin{cases} \mathit{\boldsymbol{p}}_{k}=\mathit{\boldsymbol{p}}_{k-1}+\mathit{\boldsymbol{v}}_{k-1} \Delta t+\dfrac{1}{2}\left[\mathit{\boldsymbol{R}}_{k-1}\left(\mathit{\boldsymbol{f}}_{{\rm m}, k-1}-\mathit{\boldsymbol{b}}_{{\rm f}, k-1}\right)+\mathit{\boldsymbol{g}}_{k-1}\right] \Delta t^{2}+\mathit{\boldsymbol{w}}_{\mathit{\boldsymbol{p}}, k} \\ \mathit{\boldsymbol{v}}_{k}=\mathit{\boldsymbol{v}}_{k-1}+\left[\mathit{\boldsymbol{R}}_{k-1}\left(\mathit{\boldsymbol{f}}_{{\rm m}, k-1}-\mathit{\boldsymbol{b}}_{{\rm f}, k-1}\right)+\mathit{\boldsymbol{g}}_{k-1}\right] \Delta t+\mathit{\boldsymbol{w}}_{{{\mathit{\boldsymbol{v}}}}, k} \\ \mathit{\boldsymbol{R}}_{k}=\mathit{\boldsymbol{R}}_{k-1} {\rm Exp\, }\left(\left(\mathit{\boldsymbol{\omega}}_{{\rm m}, k-1}-\mathit{\boldsymbol{b}}_{\omega, k-1}\right) \Delta t+\mathit{\boldsymbol{w}}_{\mathit{\boldsymbol{a}}, k}\right) \\ \mathit{\boldsymbol{b}}_{{\rm f}, k}=\mathit{\boldsymbol{b}}_{{\rm f}, k-1}+\mathit{\boldsymbol{w}}_{\mathit{\boldsymbol{b}} {\rm f}, k} \\ \mathit{\boldsymbol{b}}_{\omega, k}=\mathit{\boldsymbol{b}}_{\omega, k-1}+\mathit{\boldsymbol{w}}_{{{\mathit{\boldsymbol{b}}}} \omega, k} \\ \mathit{\boldsymbol{g}}_{k}=\mathit{\boldsymbol{g}}_{k-1}+\mathit{\boldsymbol{w}}_{\mathit{\boldsymbol{g}}, k} \end{cases}\\ \hat{\mathit{\boldsymbol{x}}}_{k} & =\mathscr{{\mathit{\boldsymbol{A}}}}\left(\hat{\mathit{\boldsymbol{x}}}_{k-1}, \mathit{\boldsymbol{u}}_{{\rm m}, k-1}, \mathit{\boldsymbol{0}}\right) \Leftrightarrow \begin{cases}\hat{\mathit{\boldsymbol{p}}}{}_{k}=\hat{\mathit{\boldsymbol{p}}}{}_{k-1}+\hat{\mathit{\boldsymbol{v}}}_{k-1} \Delta t+\dfrac{1}{2}\left[\hat{\mathit{\boldsymbol{R}}}_{k-1}\left(\mathit{\boldsymbol{f}}_{{\rm m}, k-1}-\hat{\mathit{\boldsymbol{b}}}_{{\rm f}, k-1}\right)+\hat{\mathit{\boldsymbol{g}}}_{k-1}\right] \Delta t^{2} \\ \hat{\mathit{\boldsymbol{v}}}_{k}=\hat{\mathit{\boldsymbol{v}}}_{k-1}+\left[\hat{\mathit{\boldsymbol{R}}}_{k-1}\left(\mathit{\boldsymbol{f}}_{{\rm m}, k-1}-\hat{\mathit{\boldsymbol{b}}}_{{\rm f}, k-1}\right) + \hat{\mathit{\boldsymbol{g}}}_{k-1}\right] \Delta t \\ \hat{\mathit{\boldsymbol{R}}}_{k}=\hat{\mathit{\boldsymbol{R}}}_{k-1} {\rm Exp\, }\left(\left(\mathit{\boldsymbol{\omega}}_{{\rm m}, k-1}-\hat{\mathit{\boldsymbol{b}}}_{\omega, k-1}\right) \Delta t\right) \\ \hat{\mathit{\boldsymbol{b}}}_{{\rm f}, k}=\hat{\mathit{\boldsymbol{b}}}_{{\rm f}, k-1} \\ \hat{\mathit{\boldsymbol{b}}}_{\omega, k}=\hat{\mathit{\boldsymbol{b}}}_{\omega, k-1} \\ \hat{\mathit{\boldsymbol{g}}}_{k}=\hat{\mathit{\boldsymbol{g}}}_{k-1} \end{cases} \end{align*} $ |
结论(1):
结论(2):
结论(3):
根据位置误差的定义有:
$ \begin{align*} \mathit{\boldsymbol{\varDelta}}_{{{\mathit{\boldsymbol{p}}}}, k}& =\mathit{\boldsymbol{p}}_{k}-\hat{\mathit{\boldsymbol{p}}}{}_{k} \\ & =\left\{\mathit{\boldsymbol{p}}_{k-1}+\mathit{\boldsymbol{v}}_{k-1} \Delta t+\frac{1}{2}\left[\mathit{\boldsymbol{R}}_{k-1}\left(\mathit{\boldsymbol{f}}_{{\rm m}, k-1}-\mathit{\boldsymbol{b}}_{{\rm f}, k-1}\right)+\mathit{\boldsymbol{g}}_{k-1}\right] \Delta t^{2}+\mathit{\boldsymbol{w}}_{{{\mathit{\boldsymbol{p}}}}, k}\right\}- \\ &\quad \left\{\hat{\mathit{\boldsymbol{p}}}{}_{k-1}+\hat{\mathit{\boldsymbol{v}}}_{k-1} \Delta t+\frac{1}{2}\left[\hat{\mathit{\boldsymbol{R}}}_{k-1}\left(\mathit{\boldsymbol{f}}_{{\rm m}, k-1}-\hat{\mathit{\boldsymbol{b}}}_{{\rm f}, k-1}\right)+\hat{\mathit{\boldsymbol{g}}}_{k-1}\right] \Delta t^{2}\right\} \\ & =\left(\mathit{\boldsymbol{p}}_{k-1}-\hat{\mathit{\boldsymbol{p}}}{}_{k-1}\right)+\left(\mathit{\boldsymbol{v}}_{k-1}-\hat{\mathit{\boldsymbol{v}}}_{k-1}\right) \Delta t+\frac{1}{2}\left[\mathit{\boldsymbol{R}}_{k-1}\left(\mathit{\boldsymbol{f}}_{{\rm m}, k-1}-\mathit{\boldsymbol{b}}_{{\rm f}, k-1}\right)-\hat{\mathit{\boldsymbol{R}}}_{k-1}\left(\mathit{\boldsymbol{f}}_{{\rm m}, k-1}-\hat{\mathit{\boldsymbol{b}}}_{{\rm f}, k-1}\right)\right] \Delta t^{2}+\\ &\quad \frac{1}{2}\left(\mathit{\boldsymbol{g}}_{k-1}-\hat{\mathit{\boldsymbol{g}}}_{k-1}\right) \Delta t^{2}+\mathit{\boldsymbol{w}}_{{\mathit{\boldsymbol{p}}}, k} \end{align*} $ |
对第3项进行展开,并忽略二次小量(需利用A.1中的已知结论(1)(2)),得到如下近似关系:
$ \begin{align*} & \; \mathit{\boldsymbol{R}}_{k-1} ({\mathit{\boldsymbol{f}}_{{\rm m}, k-1} -\mathit{\boldsymbol{b}}_{{\rm f}, k-1}})-\hat{\mathit{\boldsymbol{R}}}_{k-1} ({\mathit{\boldsymbol{f}}_{{\rm m}, k-1} -\hat{\mathit{\boldsymbol{b}}}_{{\rm f}, k-1}}) \\ =&\; {\rm Exp\, } ({\mathit{\boldsymbol{\delta}}_{{\mathit{\boldsymbol{a}}}, k-1}})\hat{\mathit{\boldsymbol{R}}}_{k-1} ({\mathit{\boldsymbol{f}}_{{\rm m}, k-1} -\mathit{\boldsymbol{b}}_{{\rm f}, k-1}})-\hat{\mathit{\boldsymbol{R}}}_{k-1} ({\mathit{\boldsymbol{f}}_{{\rm m}, k-1} -\hat{\mathit{\boldsymbol{b}}}_{{\rm f}, k-1}}) \\ \overset{(1)}{\approx} &\; (\hat{\mathit{\boldsymbol{R}}}_{k-1} +[{\mathit{\boldsymbol{\delta}}_{{\mathit{\boldsymbol{a}}}, k-1}}]_{\times} \hat{\mathit{\boldsymbol{R}}}_{k-1})({\mathit{\boldsymbol{f}}_{{\rm m}, k-1} -\mathit{\boldsymbol{b}}_{{\rm f}, k-1}})-\hat{\mathit{\boldsymbol{R}}}_{k-1} ({\mathit{\boldsymbol{f}}_{{\rm m}, k-1} -\hat{\mathit{\boldsymbol{b}}}_{{\rm f}, k-1}}) \\ =&\; \hat{\mathit{\boldsymbol{R}}}_{k-1} \mathit{\boldsymbol{f}}_{{\rm m}, k-1} -\hat{\mathit{\boldsymbol{R}}}_{k-1} \mathit{\boldsymbol{b}}_{{\rm f}, k-1} +[{\mathit{\boldsymbol{\delta}}_{{\mathit{\boldsymbol{a}}}, k-1}}]_{\times} \hat{\mathit{\boldsymbol{R}}}_{k-1} \mathit{\boldsymbol{f}}_{{\rm m}, k-1} -[{\mathit{\boldsymbol{\delta}}_{{\mathit{\boldsymbol{a}}}, k-1}} ]_{\times} \hat{\mathit{\boldsymbol{R}}}_{k-1} \mathit{\boldsymbol{b}}_{{\rm f}, k-1} -\hat{\mathit{\boldsymbol{R}}}_{k-1} \mathit{\boldsymbol{f}}_{{\rm m}, k-1} +\hat{\mathit{\boldsymbol{R}}}_{k-1} \hat{\mathit{\boldsymbol{b}}}_{{\rm f}, k-1} \\ =&\; -\hat{\mathit{\boldsymbol{R}}}_{k-1} ({\mathit{\boldsymbol{b}}_{{\rm f}, k-1} -\hat{\mathit{\boldsymbol{b}}}_{{\rm f}, k-1}})+[{\mathit{\boldsymbol{\delta}}_{{\mathit{\boldsymbol{a}}}, k-1}}]_{\times} \hat{\mathit{\boldsymbol{R}}}_{k-1} \mathit{\boldsymbol{f}}_{{\rm m}, k-1} -[{\mathit{\boldsymbol{\delta}}_{{\mathit{\boldsymbol{a}}}, k-1}} ]_{\times} \hat{\mathit{\boldsymbol{R}}}_{k-1} \hat{\mathit{\boldsymbol{b}}}_{{\rm f}, k-1} -[{\mathit{\boldsymbol{\delta}}_{{\mathit{\boldsymbol{a}}}, k-1}}]_{\times} \hat{\mathit{\boldsymbol{R}}}_{k-1} \mathit{\boldsymbol{\varDelta}}_{\mathit{\boldsymbol{b}}{\rm f}, k-1} \\ \approx &\; -\hat{\mathit{\boldsymbol{R}}}_{k-1} \mathit{\boldsymbol{\varDelta}}_{\mathit{\boldsymbol{b}}{\rm f}, k-1} +[{\mathit{\boldsymbol{\delta}}_{{\mathit{\boldsymbol{a}}}, k-1}}]_{\times} \hat{\mathit{\boldsymbol{R}}}_{k-1} ({\mathit{\boldsymbol{f}}_{{\rm m}, k-1} -\hat{\mathit{\boldsymbol{b}}}_{{\rm f}, k-1}}) \\ \overset{(2)}{=}&\; -[{\hat{\mathit{\boldsymbol{R}}}_{k-1} ({\mathit{\boldsymbol{f}}_{{\rm m}, k-1} -\hat{\mathit{\boldsymbol{b}}}_{{\rm f}, k-1}})}]_{\times} \mathit{\boldsymbol{\delta}}_{{\mathit{\boldsymbol{a}}}, k-1} -\hat{\mathit{\boldsymbol{R}}}_{k-1} \mathit{\boldsymbol{\varDelta}}_{\mathit{\boldsymbol{b}}{\rm f}, k-1} \end{align*} $ |
整理可得:
$ \begin{align*} & \mathit{\boldsymbol{\varDelta}}_{{\mathit{\boldsymbol{p}}}, k} \approx \mathit{\boldsymbol{\varDelta}}_{{\mathit{\boldsymbol{p}}}, k-1} +\mathit{\boldsymbol{\varDelta}}_{{\mathit{\boldsymbol{v}}}, k-1} {\Delta} t+\frac{1}{2} ({- [{\hat{\mathit{\boldsymbol{R}}}_{k-1} ({\mathit{\boldsymbol{f}}_{{\rm m}, k-1} -\hat{\mathit{\boldsymbol{b}}}_{{\rm f}, k-1}})} ]_{\times} \mathit{\boldsymbol{\delta}}_{{\mathit{\boldsymbol{a}}}, k-1} -\hat{\mathit{\boldsymbol{R}}}_{k-1} \mathit{\boldsymbol{\varDelta}}_{\mathit{\boldsymbol{b}}{\rm f}, k-1}} ){\Delta} t^{2}+\frac{1}{2}\mathit{\boldsymbol{\varDelta}}_{{\mathit{\boldsymbol{g}}}, k-1} {\Delta} t^{2}+\mathit{\boldsymbol{w}}_{{\mathit{\boldsymbol{p}}}, k} \\ \Rightarrow \quad & \mathit{\boldsymbol{\varDelta}}_{\mathit{\boldsymbol{p}}} =\mathit{\boldsymbol{\varDelta}}_{{\mathit{\boldsymbol{p}}}, k-1} +{\Delta} t\mathit{\boldsymbol{\varDelta}}_{{\mathit{\boldsymbol{v}}}, k-1} -\frac{1}{2}{\Delta} t^{2} [{\hat{\mathit{\boldsymbol{R}}}_{k-1} ({\mathit{\boldsymbol{f}}_{{\rm m}, k-1} -\hat{\mathit{\boldsymbol{b}}}_{{\rm f}, k-1}})} ]_{\times} \mathit{\boldsymbol{\delta}}_{{\mathit{\boldsymbol{a}}}, k-1} -\frac{1}{2}{\Delta} t^{2}\hat{\mathit{\boldsymbol{R}}}_{k-1} \mathit{\boldsymbol{\varDelta}}_{\mathit{\boldsymbol{b}}{\rm f}, k-1} +\frac{1}{2}{\Delta} t^{2}\mathit{\boldsymbol{\varDelta}}_{{\mathit{\boldsymbol{g}}}, k-1} +\mathit{\boldsymbol{w}}_{{\mathit{\boldsymbol{p}}}, k} \end{align*} $ |
根据速度误差定义有:
$ \begin{align*} \mathit{\boldsymbol{\varDelta}}_{{\mathit{\boldsymbol{v}}}, k} & =\mathit{\boldsymbol{v}}_{k} -\hat{\mathit{\boldsymbol{v}}}_{k} \\ & =\{{\mathit{\boldsymbol{v}}_{k-1} +[{\mathit{\boldsymbol{R}}_{k-1} ({\mathit{\boldsymbol{f}}_{{\rm m}, k-1} -\mathit{\boldsymbol{b}}_{{\rm f}, k-1}})+\mathit{\boldsymbol{g}}_{k-1}}]{\Delta} t+\mathit{\boldsymbol{w}}_{{\mathit{\boldsymbol{v}}}, k}}\}-\{{\hat{\mathit{\boldsymbol{v}}}_{k-1} +[{\hat{\mathit{\boldsymbol{R}}}_{k-1} ({\mathit{\boldsymbol{f}}_{{\rm m}, k-1} -\hat{\mathit{\boldsymbol{b}}}_{{\rm f}, k-1}})+\hat{\mathit{\boldsymbol{g}}}_{k-1}}]{\Delta} t}\} \\ & =({\mathit{\boldsymbol{v}}_{k-1} -\hat{\mathit{\boldsymbol{v}}}_{k-1}})+[{\mathit{\boldsymbol{R}}_{k-1} ({\mathit{\boldsymbol{f}}_{{\rm m}, k-1} -\mathit{\boldsymbol{b}}_{{\rm f}, k-1}})-\hat{\mathit{\boldsymbol{R}}}_{k-1} ({\mathit{\boldsymbol{f}}_{{\rm m}, k-1} -\hat{\mathit{\boldsymbol{b}}}_{{\rm f}, k-1}})}]{\Delta} t+({\mathit{\boldsymbol{g}}_{k-1} -\hat{\mathit{\boldsymbol{g}}}_{k-1}}){\Delta} t+\mathit{\boldsymbol{w}}_{{\mathit{\boldsymbol{v}}}, k} \end{align*} $ |
忽略二次小量,整理可得:
$ \begin{align*} & \mathit{\boldsymbol{\varDelta}}_{{\mathit{\boldsymbol{v}}}, k} \approx \mathit{\boldsymbol{\varDelta}}_{{\mathit{\boldsymbol{v}}}, k-1} +({-[{\hat{\mathit{\boldsymbol{R}}}_{k-1} ({\mathit{\boldsymbol{f}}_{{\rm m}, k-1} -\hat{\mathit{\boldsymbol{b}}}_{{\rm f}, k-1}})} ]_{\times} \mathit{\boldsymbol{\delta}}_{{\mathit{\boldsymbol{a}}}, k-1} -\hat{\mathit{\boldsymbol{R}}}_{k-1} \mathit{\boldsymbol{\varDelta}}_{\mathit{\boldsymbol{b}}{\rm f}, k-1}}){\Delta} t+{\Delta} t\mathit{\boldsymbol{\varDelta}}_{{\mathit{\boldsymbol{g}}}, k-1} +\mathit{\boldsymbol{w}}_{{\mathit{\boldsymbol{v}}}, k} \\ \Rightarrow \quad & \mathit{\boldsymbol{\varDelta}}_{{\mathit{\boldsymbol{v}}}, k} =\mathit{\boldsymbol{\varDelta}}_{{\mathit{\boldsymbol{v}}}, k-1} -{\Delta} t[{\hat{\mathit{\boldsymbol{R}}}_{k-1} ({\mathit{\boldsymbol{f}}_{{\rm m}, k-1} -\hat{\mathit{\boldsymbol{b}}}_{{\rm f}, k-1}})}]_{\times} \mathit{\boldsymbol{\delta}}_{{\mathit{\boldsymbol{a}}}, k-1} -{\Delta} t\hat{\mathit{\boldsymbol{R}}}_{k-1} \mathit{\boldsymbol{\varDelta}}_{\mathit{\boldsymbol{b}}{\rm f}, k-1} +{\Delta} t\mathit{\boldsymbol{\varDelta}}_{{\mathit{\boldsymbol{g}}}, k-1} +\mathit{\boldsymbol{w}}_{{\mathit{\boldsymbol{v}}}, k} \end{align*} $ |
使用姿态误差定义,并忽略二次小量(需利用A.1中的已知结论(1)(3)),可得:
$ \begin{align*} \mathit{\boldsymbol{\delta}}_{\mathit{\boldsymbol{R}}, k} & ={\mathit{\boldsymbol{R}}}_{k} \hat{\mathit{\boldsymbol{R}}}{}_{k}^{\rm T} \\ &=[{\mathit{\boldsymbol{R}}_{k-1} {\rm E}{\rm{xp}}({({\mathit{\boldsymbol{\omega}}_{{\rm m}, k-1} -\mathit{\boldsymbol{b}}_{{\omega}, k-1}}){\Delta} t+\mathit{\boldsymbol{w}}_{{\mathit{\boldsymbol{a}}}, k}})}][{\hat{\mathit{\boldsymbol{R}}}_{k-1} {\rm E}{\rm{xp}}({({\mathit{\boldsymbol{\omega}}_{{\rm m}, k-1} -\hat{\mathit{\boldsymbol{b}}}_{{\omega}, k-1}}){\Delta} t})}]^{\rm T} \\ & =\mathit{\boldsymbol{R}}_{k-1} {\rm E}{\rm{xp}}({({\mathit{\boldsymbol{\omega}}_{{\rm m}, k-1} -\mathit{\boldsymbol{b}}_{{\omega}, k-1}}){\Delta} t+\mathit{\boldsymbol{w}}_{{\mathit{\boldsymbol{a}}}, k}}){\rm Exp\, } ({({\mathit{\boldsymbol{\omega}}_{{\rm m}, k-1} -\hat{\mathit{\boldsymbol{b}}}_{{\omega}, k-1}}){\Delta} t})^{\rm T}\hat{\mathit{\boldsymbol{R}}}{}_{k-1}^{\rm T} \\ & \overset{(1)}{\approx} \mathit{\boldsymbol{\delta}}_{\mathit{\boldsymbol{R}}, k-1} \hat{\mathit{\boldsymbol{R}}}_{k-1} ({{\mathit{\boldsymbol{I}}}+[{({\mathit{\boldsymbol{\omega}}_{{\rm m}, k-1} -\mathit{\boldsymbol{b}}_{{\omega}, k-1}}){\Delta} t+\mathit{\boldsymbol{w}}_{{\mathit{\boldsymbol{a}}}, k}}]_{\times}})({{\mathit{\boldsymbol{I}}}-[{({\mathit{\boldsymbol{\omega}}_{{\rm m}, k-1} -\hat{\mathit{\boldsymbol{b}}}_{{\omega}, k-1}}){\Delta} t} ]_{\times}})\hat{\mathit{\boldsymbol{R}}}{}_{k-1}^{\rm T} \\ & \approx \mathit{\boldsymbol{\delta}}_{\mathit{\boldsymbol{R}}, k-1} \hat{\mathit{\boldsymbol{R}}}_{k-1} ({{\mathit{\boldsymbol{I}}}+[{-{\Delta} t\mathit{\boldsymbol{\varDelta}}_{\mathit{\boldsymbol{b}}{\omega}, k-1} +\mathit{\boldsymbol{w}}_{{\mathit{\boldsymbol{a}}}, k}}]_{\times}})\hat{\mathit{\boldsymbol{R}}}{}_{k-1}^{\rm T} \\ & \overset{(3)}{=} \mathit{\boldsymbol{\delta}}_{\mathit{\boldsymbol{R}}, k-1} ({{\mathit{\boldsymbol{I}}}+[{-{\Delta} t\hat{\mathit{\boldsymbol{R}}}_{k-1} \mathit{\boldsymbol{\varDelta}}_{\mathit{\boldsymbol{b}}{\omega}, k-1} +\hat{\mathit{\boldsymbol{R}}}_{k-1} \mathit{\boldsymbol{w}}_{{\mathit{\boldsymbol{a}}}, k}}]_{\times}}) \\ & \overset{(1)}{\approx} ({\mathit{\boldsymbol{I}}+[{\mathit{\boldsymbol{\delta}}_{{\mathit{\boldsymbol{a}}}, k-1}}]_{\times}})({{\mathit{\boldsymbol{I}}}+[{-{\Delta} t\hat{\mathit{\boldsymbol{R}}}_{k-1} \mathit{\boldsymbol{\varDelta}}_{\mathit{\boldsymbol{b}}{\omega}, k-1} +\hat{\mathit{\boldsymbol{R}}}_{k-1} \mathit{\boldsymbol{w}}_{{\mathit{\boldsymbol{a}}}, k}}]_{\times}}) \\ & \approx {\mathit{\boldsymbol{I}}}+[{\mathit{\boldsymbol{\delta}}_{{\mathit{\boldsymbol{a}}}, k-1} -{\Delta} t\hat{\mathit{\boldsymbol{R}}}_{k-1} \mathit{\boldsymbol{\varDelta}}_{\mathit{\boldsymbol{b}}{\omega}, k-1} +\hat{\mathit{\boldsymbol{R}}}_{k-1} \mathit{\boldsymbol{w}}_{{\mathit{\boldsymbol{a}}}, k}} ]_{\times} \end{align*} $ |
假设姿态噪声协方差为数量矩阵,则姿态误差运动模型进一步表示为
$ \begin{align*} \mathit{\boldsymbol{\delta}}_{{\mathit{\boldsymbol{a}}}, k} ={\rm Log\, } ({\mathit{\boldsymbol{\delta}}_{\mathit{\boldsymbol{R}}, k}})\approx \mathit{\boldsymbol{\delta}}_{{\mathit{\boldsymbol{a}}}, k-1} -{\Delta} t\hat{\mathit{\boldsymbol{R}}}_{k-1} \mathit{\boldsymbol{\varDelta}}_{\mathit{\boldsymbol{b}}{\omega}, k-1} +\hat{\mathit{\boldsymbol{R}}}_{k-1} \mathit{\boldsymbol{w}}_{{\mathit{\boldsymbol{a}}}, k} \quad\Rightarrow \quad \mathit{\boldsymbol{\delta}}_{{\mathit{\boldsymbol{a}}}, k} =\mathit{\boldsymbol{\delta}}_{{\mathit{\boldsymbol{a}}}, k-1} -{\Delta} t\hat{\mathit{\boldsymbol{R}}}_{k-1} \mathit{\boldsymbol{\varDelta}}_{\mathit{\boldsymbol{b}}{\omega}, k-1} +\mathit{\boldsymbol{w}}_{{\mathit{\boldsymbol{a}}}, k} \end{align*} $ |
根据加速度计零偏误差、陀螺仪零偏误差和重力加速度误差的定义,可得:
$ \begin{align*} & \mathit{\boldsymbol{\varDelta}}_{\mathit{\boldsymbol{b}}{\rm f}, k} =\mathit{\boldsymbol{b}}_{{\rm f}, k} -\hat{\mathit{\boldsymbol{b}}}_{{\rm f}, k} =\mathit{\boldsymbol{b}}_{{\rm f}, k-1} +\mathit{\boldsymbol{w}}_{\mathit{\boldsymbol{b}}{\rm f}, k} -\hat{\mathit{\boldsymbol{b}}}_{{\rm f}, k-1} =\mathit{\boldsymbol{\varDelta}}_{\mathit{\boldsymbol{b}}{\rm f}, k-1} +\mathit{\boldsymbol{w}}_{\mathit{\boldsymbol{b}}{\rm f}, k} \quad\Rightarrow \quad \mathit{\boldsymbol{\varDelta}}_{\mathit{\boldsymbol{b}}{\rm f}, k} =\mathit{\boldsymbol{\varDelta}}_{\mathit{\boldsymbol{b}}{\rm f}, k-1} +\mathit{\boldsymbol{w}}_{\mathit{\boldsymbol{b}}{\rm f}, k} \\ & \mathit{\boldsymbol{\varDelta}}_{{{\mathit{\boldsymbol{b}}}} \omega, k} =\mathit{\boldsymbol{b}}_{\omega, k}-\hat{\mathit{\boldsymbol{b}}}_{\omega, k}=\mathit{\boldsymbol{b}}_{\omega, k-1}+\mathit{\boldsymbol{w}}_{{{\mathit{\boldsymbol{b}}}} \omega, k}-\hat{\mathit{\boldsymbol{b}}}_{\omega, k-1}=\mathit{\boldsymbol{\varDelta}}_{{{\mathit{\boldsymbol{b}}}} \omega, k-1}+\mathit{\boldsymbol{w}}_{{{\mathit{\boldsymbol{b}}}} \omega, k} \quad\Rightarrow \quad \mathit{\boldsymbol{\varDelta}}_{{{\mathit{\boldsymbol{b}}}} \omega, k}=\mathit{\boldsymbol{\varDelta}}_{{{\mathit{\boldsymbol{b}}}} \omega, k-1}+\mathit{\boldsymbol{w}}_{{{\mathit{\boldsymbol{b}}}} \omega, k}\\ & \mathit{\boldsymbol{\varDelta}}_{\mathit{\boldsymbol{g}}, k} =\mathit{\boldsymbol{g}}_{k}-\hat{\mathit{\boldsymbol{g}}}_{k}=\mathit{\boldsymbol{g}}_{k-1}+\mathit{\boldsymbol{w}}_{\mathit{\boldsymbol{g}}, k}-\hat{\mathit{\boldsymbol{g}}}_{k-1}=\mathit{\boldsymbol{\varDelta}}_{\mathit{\boldsymbol{g}}, k-1}+\mathit{\boldsymbol{w}}_{\mathit{\boldsymbol{g}}, k} \quad\Rightarrow \quad \mathit{\boldsymbol{\varDelta}}_{\mathit{\boldsymbol{g}}, k}=\mathit{\boldsymbol{\varDelta}}_{\mathit{\boldsymbol{g}}, k-1}+\mathit{\boldsymbol{w}}_{\mathit{\boldsymbol{g}}, k} \end{align*} $ |
误差运动模型的矩阵表示为
$ \begin{align*} \mathit{\boldsymbol{\varepsilon}}_{k} &= \begin{bmatrix} \mathit{\boldsymbol{\varDelta}}_{{\mathit{\boldsymbol{p}}}, k} \\ \mathit{\boldsymbol{\varDelta}}_{{\mathit{\boldsymbol{v}}}, k} \\ \mathit{\boldsymbol{\delta}}_{{\mathit{\boldsymbol{a}}}, k} \\ \mathit{\boldsymbol{\varDelta}}_{\mathit{\boldsymbol{b}}{\rm f}, k} \\ \mathit{\boldsymbol{\varDelta}}_{\mathit{\boldsymbol{b}}{\omega}, k} \\ \mathit{\boldsymbol{\varDelta}}_{{\mathit{\boldsymbol{g}}}, k} \end{bmatrix} \mathit{\boldsymbol{F}}_{k, k-1}\\ &=\begin{bmatrix} {\mathit{\boldsymbol{I}}} & {{\Delta} t{\mathit{\boldsymbol{I}}}} & {-\dfrac{1}{2}{\Delta} t^{2}[{\hat{\mathit{\boldsymbol{R}}}_{k-1} ({\mathit{\boldsymbol{f}}_{{\rm m}, k-1} \!\!-\!\!\hat{\mathit{\boldsymbol{b}}}_{{\rm f}, k-1}})} ]_{\times}} & {-\dfrac{1}{2}{\Delta} t^{2}\hat{\mathit{\boldsymbol{R}}}_{k-1}} & {\mathit{\boldsymbol{0}}} & {\dfrac{1}{2}{\Delta} t^{2}{\mathit{\boldsymbol{I}}}} \\ {\mathit{\boldsymbol{0}}} & {\mathit{\boldsymbol{I}}} & {-{\Delta} t[{\hat{\mathit{\boldsymbol{R}}}_{k-1} ({\mathit{\boldsymbol{f}}_{{\rm m}, k-1} -\hat{\mathit{\boldsymbol{b}}}_{{\rm f}, k-1}})}]_{\times}} & {-{\Delta} t\hat{\mathit{\boldsymbol{R}}}_{k-1}} & {\mathit{\boldsymbol{0}}} & {{\Delta} t{\mathit{\boldsymbol{I}}}} \\ {\mathit{\boldsymbol{0}}} & {\mathit{\boldsymbol{0}}} & {\mathit{\boldsymbol{I}}} & {\mathit{\boldsymbol{0}}} & {-{\Delta} t\hat{\mathit{\boldsymbol{R}}}_{k-1}} & {\mathit{\boldsymbol{0}}} \\ {\mathit{\boldsymbol{0}}} & {\mathit{\boldsymbol{0}}} & {\mathit{\boldsymbol{0}}} & {\mathit{\boldsymbol{I}}} & {\mathit{\boldsymbol{0}}} & {\mathit{\boldsymbol{0}}} \\ {\mathit{\boldsymbol{0}}} & {\mathit{\boldsymbol{0}}} & {\mathit{\boldsymbol{0}}} & {\mathit{\boldsymbol{0}}} & {\mathit{\boldsymbol{I}}} & {\mathit{\boldsymbol{0}}} \\ {\mathit{\boldsymbol{0}}} & {\mathit{\boldsymbol{0}}} & {\mathit{\boldsymbol{0}}} & {\mathit{\boldsymbol{0}}} & {\mathit{\boldsymbol{0}}} & {\mathit{\boldsymbol{I}}} \end{bmatrix} \mathit{\boldsymbol{w}}_{{\rm{sys}}, k} = \begin{bmatrix} \mathit{\boldsymbol{w}}_{{\mathit{\boldsymbol{p}}}, k} \\ \mathit{\boldsymbol{w}}_{{\mathit{\boldsymbol{v}}}, k} \\ \mathit{\boldsymbol{w}}_{{\mathit{\boldsymbol{a}}}, k} \\ \mathit{\boldsymbol{w}}_{\mathit{\boldsymbol{b}}{\rm f}, k} \\ \mathit{\boldsymbol{w}}_{\mathit{\boldsymbol{b}}{\omega}, k} \\ \mathit{\boldsymbol{w}}_{{\mathit{\boldsymbol{g}}}, k} \end{bmatrix} \end{align*} $ |
[1] |
丁文东, 徐德, 刘希龙, 等. 移动机器人视觉里程计综述[J]. 自动化学报, 2018, 44(3): 385-400. Ding W D, Xu D, Liu X L, et al. Review on visual odometry for mobile robots[J]. Acta Automatica Sinica, 2018, 44(3): 385-400. |
[2] |
Khattak S, Nguyen H, Mascarich F, et al. Complementary multi-modal sensor fusion for resilient robot pose estimation in subterranean environments[C]//International Conference on Unmanned Aircraft Systems. Piscataway, USA: IEEE, 2020: 1024-1029.
|
[3] |
Liu Y X, Zuo L, Zhang C H, et al. Fast and accurate robot localization through multi-layer pose correction[C]//IEEE International Conference on Mechatronics and Automation. Piscataway, USA: IEEE, 2019: 2487-2492.
|
[4] |
Zhang J, Kaess M, Singh S. On degeneracy of optimization-based state estimation problems[C]//IEEE International Conference on Robotics and Automation. Piscataway, USA: IEEE, 2016: 809-816.
|
[5] |
Wan G W, Yang X L, Cai R L, et al. Robust and precise vehicle localization based on multi-sensor fusion in diverse city scenes[C]//IEEE International Conference on Robotics and Automation. Piscataway, USA: IEEE, 2018: 4670-4677.
|
[6] |
Hartley R, Ghaffari M, Eustice R M, et al. Contact-aided invariant extended Kalman filtering for robot state estimation[J]. International Journal of Robotics Research, 2020, 39(4): 402-430. DOI:10.1177/0278364919894385 |
[7] |
Sutoh M, Iijima Y, Sakakieda Y, et al. Motion modeling and localization of skid-steering wheeled rover on loose terrain[J]. IEEE Robotics Automation Letters, 2018, 3(4): 4031-4037. DOI:10.1109/LRA.2018.2861427 |
[8] |
Li X, Chen W, Chan C Y, et al. Multi-sensor fusion methodology for enhanced land vehicle positioning[J]. Information Fusion, 2019, 46: 51-62. DOI:10.1016/j.inffus.2018.04.006 |
[9] |
Qin T, Li P L, Shen S J. VINS-Mono: A robust and versatile monocular visual-inertial state estimator[J]. IEEE Transactions on Robotics, 2018, 34(4): 1004-1020. DOI:10.1109/TRO.2018.2853729 |
[10] |
周璠, 郑伟, 汪增福. 基于多异类传感器信息融合的微型多旋翼无人机实时运动估计[J]. 机器人, 2015, 37(1): 94-101. Zhou F, Zheng W, Wang Z F. Real-time motion estimation for UAVs based on dissimilar multi-sensor data fusion[J]. Robot, 2015, 37(1): 94-101. |
[11] |
Zhang J, Singh S. Enabling aggressive motion estimation at low-drift and accurate mapping in real-time[C]//IEEE International Conference on Robotics and Automation. Piscataway, USA: IEEE, 2017: 5051-5058.
|
[12] |
Zhang J, Singh S. Laser-visual-inertial odometry and mapping with high robustness and low drift[J]. Journal of Field Robotics, 2018, 35(8): 1242-1264. DOI:10.1002/rob.21809 |
[13] |
Moore T, Stouch D. A generalized extended Kalman filter implementation for the robot operating system[M]//Advances in Intelligent Systems and Computing, Vol. 302. Berlin, Germany: Springer, 2016: 335-348.
|
[14] |
Mai Z Z, Xiong H L, Yang G Q, et al. Mobile target localization and tracking techniques in harsh environment utilizing adaptive multi-modal data fusion[J]. IET Communications, 2021, 15(5): 736-747. DOI:10.1049/cmu2.12116 |
[15] |
Xu J, Yang G L, Sun Y D, et al. A multi-sensor information fusion method based on factor graph for integrated navigation system[J]. IEEE Access, 2021, 9: 12044-12054. DOI:10.1109/ACCESS.2021.3051715 |
[16] |
Qin T, Pan J, Cao S Z, et al. A general optimization-based framework for local odometry estimation with multiple sensors[DB/OL]. (2019-01-11)[2020-10-10]. https://arxiv.org/abs/1901.03638v1.
|
[17] |
戴海发, 卞鸿巍, 马恒, 等. 全源定位与导航的统一理论框架构建[J]. 导航定位与授时, 2018, 5(6): 9-16. Dai H F, Bian H W, Ma H, et al. Unified theoretical framework construction of all source positioning and navigation[J]. Navigation Positioning and Timing, 2018, 5(6): 9-16. |
[18] |
Ma J, Bajracharya M, Susca S, et al. Real-time pose estimation of a dynamic quadruped in GPS-denied environments for 24-hour operation[J]. International Journal of Robotics Research, 2016, 35(6): 631-653. DOI:10.1177/0278364915587333 |
[19] |
Li C. Multi-sensor fusion for robust simultaneous localization and mapping[D]. Pittsburgh, USA: Robotics Institute, Carnegie Mellon University, 2019.
|
[20] |
Shan T X, Englot B, Ratti C, et al. LVI-SAM: Tightly-coupled lidar-visual-inertial odometry via smoothing and mapping[C]//IEEE International Conference on Robotics and Automation. Piscataway, USA: IEEE, 2021: 5692-5698.
|
[21] |
Simanek J, Kubelka V, Reinstein M. Improving multi-modal data fusion by anomaly detection[J]. Autonomous Robots, 2015, 39: 139-154. DOI:10.1007/s10514-015-9431-6 |
[22] |
Shan T X, Englot B. LeGO-LOAM: Lightweight and ground-optimized lidar odometry and mapping on variable terrain[C]//IEEE/RSJ International Conference on Intelligent Robots and Systems. Piscataway, USA: IEEE, 2018: 4758-4765.
|