1. 项目概述
在机器人定位与导航领域,多传感器融合是实现高精度状态估计的关键技术。本文将详细介绍一种基于平面运动假设的误差状态卡尔曼滤波(ESKF)实现方案,特别适用于AGV、服务机器人等主要在二维平面运动的场景。
这个方案的核心思想是:利用平面运动的强约束条件,结合IMU、视觉、编码器等多种传感器的观测数据,通过误差状态卡尔曼滤波框架实现鲁棒的状态估计。相比传统的全自由度滤波方法,平面运动假设可以显著降低计算复杂度,同时提高系统在特定场景下的估计精度。
2. 系统设计与核心思路
2.1 传感器配置与运动约束
本系统采用了典型的移动机器人传感器配置:
- IMU(惯性测量单元):提供加速度和角速度测量
- 轮式编码器:提供前进方向的位移信息
- 视觉传感器(单目/双目相机):提供位置和姿态观测
基于平面运动的强约束条件,我们做出了以下关键假设:
- 运动约束:机器人主要在x轴方向做直线运动,y和z方向位移为0
- 姿态约束:pitch和roll角度保持为0(地面平整假设)
- 观测约束:视觉系统能持续观测y位置和yaw角度
2.2 误差状态卡尔曼滤波框架选择
选择ESKF(Error State Kalman Filter)而非传统KF的主要考虑:
- 数值稳定性:误差状态通常量级较小,避免了直接处理大数值带来的数值问题
- 计算效率:误差状态的维度通常远小于全状态,计算量更小
- 理论优势:误差状态更适合描述高斯分布,符合卡尔曼滤波的基本假设
ESKF的核心是将状态分为名义状态和误差状态两部分:
- 名义状态:通过IMU测量直接积分得到
- 误差状态:通过滤波算法估计的小量修正
3. 状态定义与预测模型
3.1 状态变量定义
名义状态向量定义为:
code复制x = [p̄ v̄ R̄ b̄a b̄g ā]ᵀ
其中:
- p̄:位置(三维)
- v̄:速度(三维)
- R̄:旋转矩阵(姿态)
- b̄a:加速度计零偏
- b̄g:陀螺仪零偏
- ā:平面坡度参数
误差状态向量定义为:
code复制δx = [δp δv δθ δba δbg δa]ᵀ
3.2 IMU预测模型
IMU的离散时间递推公式如下:
位置预测:
code复制p(t+Δt) = p(t) + vΔt + 0.5(R(ã-ba))Δt² + 0.5gΔt²
速度预测:
code复制v(t+Δt) = v(t) + R(ã-ba)Δt + gΔt
姿态预测(使用指数映射):
code复制R(t+Δt) = R(t)Exp((ω̃-bg)Δt)
零偏建模为随机游走过程:
code复制bg(t+Δt) = bg(t)
ba(t+Δt) = ba(t)
3.3 误差状态预测
通过忽略二阶小量,得到误差状态的线性递推关系:
位置误差:
code复制δp(t+Δt) = δp + δvΔt
速度误差:
code复制δv(t+Δt) = δv + (-R(ã-ba)∧δθ - Rδba + δg)Δt - ηv
姿态误差:
code复制δθ(t+Δt) = Exp(-(ω-bg)Δt)δθ - δbgΔt - ηθ
零偏误差:
code复制δba(t+Δt) = δba + ηa
δbg(t+Δt) = δbg + ηg
其中ηv和ηθ分别是速度噪声和角度噪声,与IMU的测量噪声特性相关。
4. 观测模型设计
4.1 平面约束观测
针对平面运动场景,设计了两种约束方式:
- 零垂向速度约束(适用于低速场景):
code复制vz ≈ 0
观测噪声σv一般设为0.05-0.2 m/s,需要考虑地面坡度的影响。
- 平面参数约束:
假设机器人运动在平面z=ax+c上,定义观测函数:
code复制h_plane(x) = z - (ax + c)
观测噪声σ_plane根据地面平整程度设置:
- 高精度平整路面:0.01-0.02 m
- 普通路面:0.05-0.1 m
- 粗糙路面:0.1-0.2 m
4.2 运动约束观测
利用平面运动特性,世界坐标系下的角速度在x和y方向应为0:
code复制ωx^w = 0
ωy^w = 0
观测函数为:
code复制h(R,bg) = (R(ω^b - bg))[:2] = [ωx^w, ωy^w]ᵀ
观测噪声需要考虑:
- 陀螺仪测量噪声(如MPU6050约为0.01 rad/s)
- 地面不平整带来的系统误差(0.01-0.1 rad/s)
4.3 静止约束观测
当检测到机器人静止时,可以利用以下观测:
- 零偏观测:
code复制h(ba,bg) = [ba, bg]ᵀ
- 重力加速度观测:
code复制h(R,ba) = Rᵀg^w + ba
其中g^w = [0, 0, -9.80665]ᵀ是标准重力向量。
注意:重力观测实际上只有2个自由度,因为模长固定。实践中应选择两个最敏感的轴进行观测,避免矩阵奇异。
4.4 视觉观测约束
视觉系统提供的观测主要是yaw角和位置信息。对于yaw角的观测函数:
code复制h(δθ) = atan2(vy^w, vx^w)
其雅可比矩阵需要通过链式法则计算,考虑相机与IMU之间的外参变换。
5. 实现细节与参数调优
5.1 协方差矩阵设置
过程噪声协方差Q的设置对滤波器性能至关重要:
- 位置过程噪声:通常设为0,因为位置误差主要来自速度积分
- 速度噪声:根据IMU性能设置,典型值1e-4
- 角度噪声:与陀螺仪性能相关,典型值1e-6
- 零偏噪声:根据Allan方差分析结果设置,通常很小(1e-12量级)
观测噪声协方差R需要根据传感器特性设置:
- IMU:参考厂商提供的数据手册
- 编码器:考虑轮子打滑等因素
- 视觉系统:考虑特征匹配误差等
5.2 时间同步处理
多传感器融合必须解决时间同步问题:
- 硬件同步:使用PPS信号或硬件触发
- 软件同步:采用时间戳对齐+滑动窗口优化
- 延迟估计:通过互相关分析估计传感器间延迟
5.3 初始对准
系统启动时需要完成初始对准:
- 静止初始化:利用重力向量估计初始roll和pitch
- 视觉辅助:利用视觉观测确定初始yaw角
- 位置初始化:通常假设起始点为坐标系原点
6. 实际应用中的问题与解决方案
6.1 常见问题排查
- 滤波器发散:
- 检查观测异常值处理
- 验证协方差矩阵设置是否合理
- 确认时间同步是否准确
- 定位漂移:
- 加强平面约束权重
- 增加静止检测和ZUPT(零速修正)
- 检查IMU零偏估计是否准确
- 姿态估计误差:
- 确认外参标定准确性
- 检查运动约束是否合理(地面是否真的平整)
- 验证陀螺仪零偏估计
6.2 参数调优建议
- 先调过程噪声,再调观测噪声
- 从宽松的噪声参数开始,逐步收紧
- 使用真实数据回放测试,评估不同参数效果
- 特别注意不同约束之间的权重平衡
6.3 性能优化技巧
- 计算优化:
- 利用稀疏矩阵特性加速计算
- 将固定为零的Jacobian元素预先置零
- 使用Eigen等高效线性代数库
- 内存优化:
- 预分配内存
- 避免频繁的矩阵拷贝
- 使用内存池管理临时变量
7. 扩展与改进方向
7.1 系统标定增强
- 在线标定:
- IMU内参(比例因子、轴偏差)
- 传感器间外参
- 时间延迟参数
- 自动标定:
- 设计专门的标定运动
- 利用优化框架联合估计参数
7.2 自适应滤波
- 噪声自适应:
- 根据运动状态动态调整过程噪声
- 根据观测质量调整观测噪声
- 约束自适应:
- 自动检测地面平整度
- 动态调整平面约束权重
7.3 多模态融合
- 结合轮式里程计:
- 提供绝对尺度信息
- 补充IMU在低速时的不足
- 增加其他传感器:
- 激光雷达(用于平面检测)
- UWB(绝对位置参考)
- GPS(室外场景)
在实际应用中,我们发现平面约束的ESKF方案相比传统方法,在计算资源有限的平台上能够实现更好的性能平衡。特别是在结构化环境中,利用运动约束可以显著提高定位精度和鲁棒性。不过需要注意,当环境不符合平面假设时(如遇到斜坡、台阶等),系统性能会下降,这时需要适当放松约束或切换到其他模式。