121、神经网络控制:BP神经网络与PID 神经网络控制:BP神经网络与PID从一次电机抖动说起去年做四轴飞行器悬停控制,PID参数调了三天,位置环和速度环的积分项怎么配都抖。P给大了超调,I给大了低频振荡,D稍微加点就高频噪声炸裂。最后实在没辙,试了试BP神经网络在线整定PID参数,结果悬停精度从±5cm干到了±1.5cm。今天就把这个坑和填坑的过程掰开揉碎了讲。为什么传统PID在某些场景下不够用PID控制器的本质是线性组合——比例、积分、微分三个环节加权求和。但实际被控对象往往是非线性的、时变的、甚至带有迟滞和死区。比如电机低速时的静摩擦力、液压系统的油温变化、无人机在不同姿态下的气动参数差异。这些非线性特征,固定增益的PID根本招架不住。我见过很多工程师的做法是分段PID——不同工况切不同的参数表。这确实有效,但分段边界怎么定?参数表怎么平滑过渡?遇到没见过的工况怎么办?BP神经网络干的事,就是让控制器自己学会“什么时候该用什么参数”。BP神经网络到底在PID里扮演什么角色别被“神经网络”四个字吓到。在PID整定这个场景里,BP网络就是个函数逼近器——输入当前系统的状态(比如误差、误差变化率、甚至加速度),输出三个数:Kp、Ki、Kd。就这么简单。网络结构通常选3层:输入层、隐藏层、输出层。输入层节点数取决于你喂什么特征量,我一般用误差e、误差变化率ec、还有误差的累积量(相当于积分项的前身)。输出层3个节点对应三个PID参数。隐藏层节点数是个玄学,经验公式是sqrt(输入节点数×输出节点数)再上下浮动