真实面经题目 · 原创解析
多传感器数据如何融合,卡尔曼滤波如何解释?
这题考多传感器融合和卡尔曼滤波基本功,重点是状态预测、观测更新、噪声协方差、异步数据和异常值处理。
真实面经题目 · 原创解析
这题考多传感器融合和卡尔曼滤波基本功,重点是状态预测、观测更新、噪声协方差、异步数据和异常值处理。
多传感器融合的核心是先定义系统状态,比如位置、速度、姿态、角速度、bias 等,再定义每种传感器能观测状态的哪一部分以及噪声水平。卡尔曼滤波可以理解成预测和更新两步:预测阶段用运动模型和上一时刻状态估计当前状态,同时协方差变大;更新阶段用传感器观测和观测模型计算残差,根据预测不确定性和观测噪声得到 Kalman Gain,再修正状态和协方差。多传感器场景下,高频 IMU 可做预测,低频 GPS、视觉、编码器或磁力计按时间戳异步更新。工程重点是时间同步、坐标系和外参、Q/R 协方差设置、异常观测 gating、丢帧处理和数值稳定。线性系统用 KF,非线性用 EKF/UKF 或误差状态滤波,最后用日志回放和真值对比验证误差、漂移和延迟。
不能一上来就说套滤波器。要先定义需要估计的状态,例如位置、速度、姿态、角速度、传感器 bias 或尺度,再定义每个传感器的观测模型和噪声。
预测阶段用运动模型从上一时刻推到当前时刻,例如匀速模型、IMU 积分或系统动力学。过程噪声 Q 表示模型不确定性,Q 越大代表越不相信预测,协方差会增大。
更新阶段比较预测观测和真实观测的残差,用观测噪声 R 和预测协方差计算 Kalman Gain。观测越可信、预测越不确定,更新权重越大;观测噪声大时,滤波器更相信模型预测。
实际系统中 IMU 高频、GPS 或视觉低频,传感器延迟也不同。常见做法是按时间戳维护状态预测,某个观测到来时执行对应观测更新,必要时插值、外推或做延迟补偿。
传感器会跳变、遮挡、磁干扰或通信异常。更新前要检查残差、协方差、物理边界和数据新鲜度,异常观测要拒绝、降权或触发故障状态,否则一次坏观测就可能把状态拉偏。
Q/R 调参要结合传感器标定、静态噪声、动态残差和真值轨迹。验证看估计误差、协方差一致性、收敛速度、漂移、延迟和失效恢复,不能只看曲线变平滑。
predict(dt):
x = f(x, u, dt)
P = F * P * F^T + Q
update(z, sensor):
y = z - h_sensor(x)
S = H * P * H^T + R_sensor
if y^T * S^-1 * y > gate: reject z
K = P * H^T * S^-1
dx = K * y
x = boxplus(x, dx) # pose/orientation states use manifold update
P = (I - K*H) * P * (I - K*H)^T + K * R_sensor * K^T 先根据传感器静态噪声、标定数据和模型误差给初值,再看动态残差、协方差一致性和真值误差。Q 大更相信观测,R 大更相信预测。
普通 KF 假设线性状态转移和观测模型;EKF 用非线性模型,并在当前估计附近线性化,用雅可比矩阵近似传播协方差。
按时间戳驱动状态预测,哪个传感器观测到来就用对应观测模型更新;延迟观测需要缓存状态、回溯更新或做时间补偿。