学习四旋翼(二):控制方法之串级PID与卡尔曼滤波(含MATLAB示例)

本文是关于四旋翼控制的系列文章,主要介绍串级PID控制器和卡尔曼滤波的应用。串级PID用于精确控制姿态角度,外环控制角度,内环控制桨叶转速。卡尔曼滤波则用于融合传感器数据,提高测量精度。通过举例和MATLAB示例,阐述了这两种技术的基本原理和实现方法。
摘要由CSDN通过智能技术生成

暑假期间,对于四旋翼有一点兴趣,没有亲手做,但是看了一些资料。这个系列文章只是对自己看的东西的记录,对于想要学习了解相关知识的同学没有任何参考价值!

本篇是系列的第二部分:介绍了我自己对于串级PID和卡尔曼滤波的理解。

1.串级PID

1.PID的思想

PID可以说是最著名的控制方式,公式如下(离散)
y ( n ) = K P e ( n ) + K i ∑ i = 0 n e ( i ) + K d [ e ( n ) − e ( n − 1 ) ] y(n)=K_Pe(n)+K_i\sum_{i=0}^ne(i)+K_d[e(n)-e(n-1)] y(n)=KPe(n)+Kii=0ne(i)+Kd[e(n)e(n1)]
y(n)是输出量,e(n)是目标量与输出量之间的误差。PID就是一个输出量和误差之间的函数。

输出量由这么几个部分组成:
1.比例项:以KP为系数,作为当前的误差对于输出的影响,如果误差越大,就要加大输出;
2.积分项:以KI为系数,作为过去误差对于输出的影响,如果累积的误差越大,输出也要考虑;
3.微分项:以KD为系数,作为将来误差对于输出的影响,如果误差变化率越大,我们预计将来的误差也会越大,所以输出也要考虑。

调节参数的影响:
1.KP越大,则被控质量追踪目标量的速度越快,但是被控质量在目标量附近震荡越大;
2.KD越大,则被控质量变换速度减缓,优点在于震荡也会变小,KD有压制KP的作用
3.KI的作用是消除稳差,但是参数不合适也会有累积效应。

2.串级PID
以我参考的开源四旋翼代码为例讲一讲我的理解:
在控制姿态角度时,使用的就是两级PID串联,第一级输入量是当前实际的偏航角度,目标量是遥控器发送的目标角度。也就是使用外环PID来控制角度,输出量自然就是角速度。

但是,飞行器的主控芯片实际能够控制的,只是桨叶的转速大小,而桨叶转速和角速度之间的关系是不确定的。所以就需要增加一个内环,目标量是外环的输出量,输入为当前的角速度,输出是发送给电调的信号。如果桨叶转速和角速度之间有一个明确的公式,那么一层PID就足够了,但是事实是不行。

外环PID一般不加入积分微分,只有比例P。因为添加I后相应变慢,添加D又会引入噪声。

2.卡尔曼滤波

卡尔曼滤波似乎是一个可以很复杂也可以很简单的东西,下面说一下我自己的理解。举个例子:我们一辆以1m/s匀速行驶的小车,开始离墙10m,1s后离墙距离,按照计算是9m。但是传感器的数据是8.9m,那么我应该信任哪个数据呢?合理的方式是结合两个数据,算出概率期望最大的数值。这个过程就是卡尔曼滤波。

1.运动方程和观测方程
x k = f ( x k − 1 , u k ) + w k ( 1 ) z k = h ( x k ) + v k ( 2 ) x_k=f(x_{k-1},u_k)+w_k (1)\\ z_k=h(x_k)+v_k(2) xk=f(xk1,uk)+wk(1)zk=h(xk)+vk(2)
公式1是运动方程,xk是当前的状态,xk-1是上一个时刻的状态,uk是输入量,wk是噪声。
公式2是观测方程,xk是当前的状态量,zk是观测量,vk是传感器所加入的噪声。
这里要再假设两点:1.马尔可夫性:k时刻的状态只与k-1时刻有关。2.状态xk的概率服从高斯分布。

2.线性系统与卡尔曼滤波
假设状态方程与观测方程都是线性的
x k = A k x k − 1 + u k + w k z k = C k x k + v k x_k=A_kx_{k-1}+u_k+w_k\\z_k=C_kx_k+v_k xk=Akxk1+uk+wkzk=Ck

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值