026 扩展卡尔曼滤波在位置估计中的应用
从一次失败的电机堵转检测说起
去年做无刷直流电机伺服驱动时,遇到一个让人头疼的问题:电机在低速重载工况下,霍尔传感器信号被严重干扰,位置估计直接飞掉。当时用的是简单的滑模观测器,结果在堵转瞬间,观测器输出剧烈震荡,电流环跟着崩溃,电机直接“跳舞”。后来换成扩展卡尔曼滤波(EKF),才把位置估计的鲁棒性提上来。今天这篇笔记,就聊聊EKF在电机位置估计中的那些坑和实战技巧。
为什么是EKF,而不是标准卡尔曼?
标准卡尔曼滤波假设系统是线性的,但电机模型里,反电动势与转子位置的正弦关系是非线性的。你没法用线性状态方程描述“磁链旋转”这件事。EKF的核心思路就是:在每次预测和更新时,把非线性函数在当前状态点做一阶泰勒展开(雅可比矩阵),然后套用标准卡尔曼的框架。
这里有个容易误解的地方:EKF不是对非线性系统做全局线性化,而是“在线”在每个估计点附近做局部线性化。所以初始状态不准时,雅可比矩阵算出来也是歪的,滤波容易发散。后面会讲怎么处理这个问题。
状态方程怎么建?别照搬教科书
教科书上通常把电机模型写成:
x = [θ, ω, T_L]^T其中θ是转子位置,ω是电角速度,T_L是负载转矩。但实际工程中,我建议把状态量拆成:
x = [sinθ, cosθ, ω, T_L]^T为什么?因为θ本身是角度,在