Tech Station

理论基础 › 📡 状态估计与感知

📡

状态估计与感知 State Estimation & Perception

控制器和策略都假设「知道当前状态」,但传感器只给出带噪声的间接观测。状态估计就是用概率把模型预测和观测融合起来:从传感器建模与标定、卡尔曼滤波,到因子图与 SLAM、视觉里程计与感知,再到足式机器人的腿-IMU 融合。Tim Barfoot 的免费教材是这一模块的主线。

5 个主题 约 115 小时 先修:🦾 运动学与动力学建模
已掌握 0/5

学完你将能够

1传感器模型与标定 Sensor Models & Calibration

⏱ 约 15 小时

估计的质量上限由传感器模型决定。IMU 有偏置、随机游走与噪声(用 Allan 方差刻画);相机有内参、畸变与曝光 / 运动模糊;编码器与力矩传感器有量化与偏移;多传感器还要做外参与时间同步。标定是真机工作的第一步,也是最常被低估的一步。

核心要点

  • IMU 模型:加速度计 / 陀螺偏置、白噪声、偏置随机游走;Allan 方差确定噪声参数
  • 相机模型:针孔、畸变(Brown / 鱼眼),内参标定;立体与深度相机(ToF / 结构光)的误差特性
  • LiDAR、力 / 力矩传感器、关节编码器、接触传感器的特性
  • 外参标定(相机-IMU、相机-机器人手眼、LiDAR-IMU)与时间同步(硬件触发、时间偏移估计)
  • 运动学标定:连杆参数误差与末端精度

关键公式

ω~=ω+bg+ng,b˙g=nbg,a~=R⊤(a−g)+ba+na\tilde{\omega} = \omega + b_g + n_g,\qquad \dot b_g = n_{b_g},\qquad \tilde a = R^{\top}(a - g) + b_a + n_a
IMU 测量模型
s [uv1]=K [R  ∣  t][XYZ1]s\,\begin{bmatrix} u \\ v \\ 1\end{bmatrix} = K\,[R\;|\;t]\begin{bmatrix} X \\ Y \\ Z \\ 1\end{bmatrix}
针孔相机投影
自测:学完应该能回答
  1. 为什么 IMU 偏置必须作为状态一起估计而不能标定一次了事?
  2. 相机-IMU 之间 5 ms 的时间偏移对 VIO 会造成什么后果?

推荐资料(全部免费)

2贝叶斯滤波与卡尔曼滤波家族 Bayes Filter, KF / EKF / UKF / PF

⏱ 约 30 小时

贝叶斯滤波用「预测-更新」两步递推地维护状态的后验分布。线性高斯情形下就是卡尔曼滤波(KF);非线性系统靠线性化(EKF)或采样(UKF、粒子滤波)。理解卡尔曼增益如何在模型与观测之间权衡,是所有后续方法的基础。

核心要点

  • 贝叶斯滤波的预测(运动模型)与更新(观测模型)两步
  • KF:高斯下的闭式解,卡尔曼增益、创新(innovation)、协方差更新;KF 是最优线性估计器
  • EKF:雅可比线性化,一致性问题;误差状态 EKF(ESKF)与旋转的正确处理
  • UKF / sigma 点:不求雅可比的非线性传播;粒子滤波:非高斯、多模态;直方图滤波
  • 可观性:哪些状态从观测中「看得见」,为什么纯 IMU 无法估计绝对位置

关键公式

bel‾(xt)=∫p(xt∣ut,xt−1) bel(xt−1) dxt−1,bel(xt)=η p(zt∣xt) bel‾(xt)\overline{\text{bel}}(x_t) = \int p(x_t\mid u_t, x_{t-1})\,\text{bel}(x_{t-1})\,dx_{t-1},\qquad \text{bel}(x_t) = \eta\, p(z_t\mid x_t)\,\overline{\text{bel}}(x_t)
贝叶斯滤波:预测 → 更新
K=PˉH⊤(HPˉH⊤+R)−1,x^=xˉ+K(z−Hxˉ),P=(I−KH)PˉK = \bar P H^{\top}(H\bar P H^{\top} + R)^{-1},\quad \hat x = \bar x + K(z - H\bar x),\quad P = (I - KH)\bar P
卡尔曼滤波更新步
自测:学完应该能回答
  1. 卡尔曼增益趋于 0 和趋于 H⁻¹ 分别对应什么情形?
  2. EKF 处理旋转时为什么要用误差状态而不是直接对四元数做加法?

推荐资料(全部免费)

3非线性最小二乘、因子图与 SLAM 后端 Nonlinear Least Squares, Factor Graphs & SLAM

⏱ 约 30 小时

滤波只保留当前状态,平滑则同时优化一段轨迹的所有状态。把 MAP 估计写成非线性最小二乘,用因子图表示变量与测量的关系,利用稀疏性高效求解——这是现代 SLAM、视觉惯性里程计(VIO)、多传感器融合的统一框架。

核心要点

  • MAP 估计 = 非线性最小二乘;高斯-牛顿与 Levenberg–Marquardt;鲁棒核函数处理外点
  • 因子图:变量节点 + 因子节点;稀疏信息矩阵与消元顺序;iSAM2 增量求解;滑动窗口与边缘化
  • IMU 预积分:在因子图里高效使用高频 IMU
  • 位姿图优化与回环检测;地图表示(稀疏点、稠密体素 / TSDF、高斯泼溅)
  • 在流形上优化:SE(3) 的 ⊞ 参数化,避免过参数化与奇异

关键公式

x∗=arg⁡min⁡x∑i∥hi(x)−zi∥Σi2,∥e∥Σ2=e⊤Σ−1ex^{*} = \arg\min_x \sum_i \big\|h_i(x) - z_i\big\|_{\Sigma_i}^2,\qquad \|e\|_\Sigma^2 = e^{\top}\Sigma^{-1}e
MAP 估计写成加权非线性最小二乘
(J⊤Σ−1J) δx=−J⊤Σ−1e(x)(J^{\top}\Sigma^{-1}J)\,\delta x = -J^{\top}\Sigma^{-1} e(x)
高斯-牛顿法的正规方程(稀疏)
自测:学完应该能回答
  1. 为什么平滑(批量估计)比滤波精度更高?代价是什么?
  2. 因子图的信息矩阵为什么稀疏?稠密化(fill-in)从哪里来?

推荐资料(全部免费)

4视觉里程计、VIO 与机器人感知 Visual Odometry, VIO & Perception for Robots

⏱ 约 25 小时

相机是最便宜、信息最丰富的传感器。视觉里程计从特征匹配 / 光流与多视几何恢复运动,加上 IMU 就是 VIO(VINS-Mono、ORB-SLAM3);操作与导航还需要物体位姿估计、分割与深度估计——如今大多由学习模型(DINOv2、SAM 2、FoundationPose)提供。这里把几何与学习两条线接起来。

核心要点

  • 多视几何:本质矩阵 / 单应、PnP、三角化、光束法平差(BA);直接法 vs 特征法
  • VIO 系统结构:前端(特征跟踪、关键帧)、后端(滑动窗口 BA / 因子图)、初始化与尺度可观性
  • 深度估计与三维表示:立体匹配、单目深度、TSDF、NeRF / 3D 高斯泼溅在机器人中的用途
  • 感知模型:分割(SAM 2)、开放词汇检测、6D 位姿估计(FoundationPose)、视觉基础模型特征(DINOv2)作为策略输入
  • 感知的不确定性如何进入估计与控制
自测:学完应该能回答
  1. 单目 VO 为什么没有尺度?加 IMU 后尺度为什么可观(在什么运动下不可观)?
  2. 为什么机器人策略常用冻结的 DINOv2 特征而不是端到端训练视觉主干?

推荐资料(全部免费)

5足式机器人状态估计与本体感受融合 Legged-Robot State Estimation

⏱ 约 15 小时

足式机器人的控制器需要 kHz 级的基座速度与姿态估计,而 GPS 不可用、视觉可能失效。标准做法是把 IMU 与腿部运动学(「触地的脚不动」这一假设)融合,用 EKF 或不变 EKF(InEKF)实现。这是把前面的动力学、李群与滤波知识汇聚在一起的绝佳案例。

核心要点

  • 腿部里程计:接触脚速度为零的约束;接触检测(力传感器 / 概率接触估计)
  • IMU 传播 + 腿运动学更新的 EKF(Bloesch 2012);漂移的不可观方向
  • 不变 EKF:在李群 SE_{2+N}(3) 上做滤波,收敛性与一致性更好
  • 与学习结合:用网络估计速度 / 接触,或把估计器与 RL 策略端到端训练
自测:学完应该能回答
  1. 为什么仅用 IMU + 腿运动学,基座的绝对位置与偏航角不可观?
  2. 接触检测出错(脚在打滑)时估计器会发生什么?如何缓解?

推荐资料(全部免费)