多彩编程 多彩编程MZPH · CODE BLOG
ARTICLE DETAIL

文章详情

深耕前端与后端开发技术的一线实战笔记与踩坑复盘。

149、飞控中的系统辨识:最小二乘法与递推算法

149、飞控中的系统辨识:最小二乘法与递推算法 飞控中的系统辨识:最小二乘法与递推算法从一次炸机说起去年夏天调试一架四轴,PID参数调了三天,悬停稳得像块石头。结果一换电池,飞机直接翻了个跟头。查了半天,发现是电机响应曲线变了——旧电池内阻大,新电池电压高,同样的PWM输出,转速差了一大截。那一刻我意识到:飞控参数不能靠“调”,得靠“算”。系统辨识,就是让飞控自己学会认识自己的腿脚。最小二乘法:最朴素的“猜谜”逻辑假设你的飞机在某个轴上的动力学模型是:y(t) = a1*y(t-1) + a2*y(t-2) + b1*u(t-1) + b2*u(t-2)y是角速度,u是PWM输入。你有一堆历史数据,想找出a1、a2、b1、b2这四个未知数。最小二乘法的思路很直白:让模型预测值和实际值的误差平方和最小。写成矩阵形式:Y = Φ * θθ就是我们要找的参数向量。最小二乘解是:θ = (Φ^T * Φ)^(-1) * Φ^T * Y这个公式看起来干净,但实际用起来坑很多。数据矩阵怎么构造?这里踩过坑// 别这样写:直接拿原始数据堆float
返回列表