多IMU扩展卡尔曼滤波在足式机器人状态估计中的应用
1. 多IMU扩展卡尔曼滤波系统架构解析
在足式机器人状态估计领域,传统方法通常仅依赖安装在机器人躯干的单个IMU(惯性测量单元)结合腿部运动学进行位姿推算。这种架构存在两个根本性局限:首先,当足部与地面发生滚动接触时,零速度假设(Zero Velocity Update, ZUPT)会失效;其次,快速旋转运动时,陀螺仪偏差估计容易发散。我们提出的多IMU EKF框架通过系统性重构状态空间和观测模型,从根本上解决了这些问题。
1.1 状态空间扩展设计
传统EKF的状态向量通常仅包含身体位姿、速度和IMU偏差:
x_body = [p, v, q, b_a, b_g]^T其中p为位置,v为速度,q为姿态四元数,b_a和b_g分别为加速度计和陀螺仪偏差。
在多IMU框架中,我们将每个足部的IMU状态也纳入估计范畴。对于四足机器人,完整状态向量扩展为:
x = [x_body; s_1; ˙s_1; q_f1; b_s1; b_t1; ...; s_4; ˙s_4; q_f4; b_s4; b_t4]^T这里s_i表示足部i的位置,˙s_i为足部速度,q_fi是足部姿态,b_si和b_ti分别是足部IMU的加速度计和陀螺仪偏差。这种设计使得身体与各足部形成独立的刚体运动链,在数学上表现为分块对角矩阵,保持了计算效率。
关键洞察:状态空间的扩展不是简单堆砌传感器数据,而是通过物理连接关系建立状态变量间的自然约束。例如足部位置s_i与身体位置p通过运动学模型关联,这种结构化设计是保持算法实时性的关键。
1.2 多速率传感器融合机制
系统需要处理不同采样率的传感器数据:
- 身体IMU:500Hz
- 足部IMU:200Hz
- 关节编码器:500Hz
- 视觉数据:15Hz
我们采用分层滤波架构:
- 高速层(1kHz):处理IMU原始数据的预积分
- 中速层(500Hz):执行EKF预测和关节测量更新
- 低速层(100Hz):融合视觉观测信息
这种设计既保证了控制回路所需的500Hz状态更新,又避免了高频视觉处理带来的计算负担。实验表明,在Intel i7-1165G7处理器上,完整滤波流程仅需1.69ms,满足实时性要求。
2. 过程模型创新与实现细节
2.1 分块对角过程模型
扩展后的过程模型保持与原单IMU版本相似的结构,但对身体和足部进行独立建模:
ˆx' = f(ˆx) = [f_body(ˆx); f_foot1(ˆx); ...; f_foot4(ˆx)]其中身体部分f_body与传统EKF相同:
p' = p + Δt·v v' = v + Δt·(R(q)(a_b - b_a) - g_w) q' = M(q)·Exp((ω_b - b_g)Δt)足部部分f_footi引入创新性的枢轴接触模型:
s_i' = s_i + Δt·˙s_i ˙s_i' = ˙s_i + Δt·(R(q_fi)(a_fi - b_si) - g_w) q_fi' = M(q_fi)·Exp((ω_fi - b_ti)Δt)该模型的雅可比矩阵F呈现稀疏分块对角形式,使得计算复杂度仅随足部数量线性增长,而非指数级增长。实测表明,四足机器人的状态更新耗时仅为单足情况的1.8倍。
2.2 枢轴接触模型详解
传统方法假设接触足部速度为零,这在滚动接触场景会产生显著误差。我们提出的枢轴模型基于刚体运动学原理:
˙s = ω_p × d_p其中:
- ω_p = R(q_f)(ω_f - b_t) 是世界坐标系下的足部角速度
- d_p = -d0·n/||n|| 是从接触点到足部中心的向量
- d0为足部几何参数,可从CAD模型获取
- n = R(q)g(α) 是接触面法向量
该模型物理意义明确:无论足部与地面发生纯滑动还是滚动接触,其瞬时速度都等于接触点处的旋转线速度。图3实验数据表明,在斜坡地形行走时,枢轴模型将足部速度估计误差从传统方法的0.12m/s降至0.03m/s。
3. 测量模型设计与优化
3.1 多模态测量融合
测量残差定义为y = ¯z - h(ˆx),其中创新性地融合了五类观测:
运动学约束:
h_kin = R(q)^T(s - p) // 足部位置约束姿态链约束:
h_ori = Log(q(α)^{-1}⊗q^{-1}⊗q_f) // 身体-足部相对姿态关节速度约束:
h_jnt = J(α)˙α - ⌊ω_b - b_g⌋×g(α) - R(q)^T(v - ˙s)枢轴测量:
h_pivot = ˙s - ω_p × d_p // 仅接触阶段有效足部重力观测:
h_grav = R(q_f)^T g_w + b_s // 利用足部IMU观测重力
特别是h_grav项,当足部接触地面时,其加速度计主要感应重力分量,这为姿态估计提供了额外观测。实验数据显示,加入此项后,快速旋转时的滚转角误差降低50.6%。
3.2 接触检测的统计检验
传统方法依赖接触传感器或阈值判断,易受冲击振动干扰。我们采用马氏距离检验:
∥y_pivot∥_S < σ其中S是残差协方差矩阵。该检验自动适应不同地形和运动状态,在砂石路面测试中达到92%的接触识别准确率,误报率低于5%。
4. 实现优化与实测性能
4.1 计算效率优化
通过以下技术手段保证实时性:
- 稀疏矩阵运算:利用Eigen库的稀疏矩阵特性,使四足系统的雅可比计算仅需120μs
- SIMD并行化:对四个足部的状态更新采用AVX2指令并行处理
- 内存预分配:固定尺寸的循环缓冲区避免动态内存申请
4.2 实测性能对比
在10.5m的室内轨迹测试中(图5):
- 传统PO:平均漂移11.39%,最大误差1.04m
- 多IMU PO:平均漂移2.31%,最大误差0.25m
户外复杂地形测试(图13):
- 传统VIO:累计漂移8.7%/100m
- 多IMU VILO:累计漂移1.2%/100m
特别在以下挑战性场景表现突出:
- 快速旋转:角速度达12rad/s时,姿态误差<0.5°
- 斜坡行走:15°斜坡上位置误差增加仅20%
- 非结构化地形:碎石路面速度估计误差<0.1m/s
5. 工程实践关键要点
5.1 传感器安装校准
足部IMU对齐:
- 使用CAD模型确定IMU到足部中心的变换
- 通过静态多位置校准获取精确安装方向
- 动态激励实验验证校准质量
时间同步:
- PTP协议实现μs级时间同步
- 插值补偿剩余微小延迟
5.2 参数调试指南
过程噪声调参:
Q_body = diag([0.01, 0.01, 0.01, # 位置 0.05, 0.05, 0.05, # 速度 0.001, 0.001, 0.01, # 姿态 1e-4, 1e-4, 1e-4, # 加速度计bias 1e-5, 1e-5, 1e-5]) # 陀螺仪bias测量噪声设置:
- 接触阶段:h_pivot噪声设为0.01m/s
- 摆动阶段:h_pivot噪声设为1.0m/s(等效禁用)
5.3 典型故障排查
足部速度发散:
- 检查枢轴向量d_p计算
- 验证足部IMU的陀螺仪数据是否饱和
- 调整h_pivot的噪声参数
姿态漂移加快:
- 检查足部接触检测逻辑
- 验证h_grav项是否正常激活
- 重新校准IMU内参
计算延迟突增:
- 检查矩阵运算的稀疏性保持
- 监控线程调度延迟
- 验证传感器数据流是否堵塞
在实际部署中,我们建议先用已知轨迹生成CRLB(Cramer-Rao下界)作为性能基准。图8显示多IMU架构的理论位置方差比传统方法低5倍,这与实测结果一致。
