在开始本文的描述前,我们先来看看什么叫PID控制器。P是Proportional的简称,I是Integral的简称,D是Derivative的简称,合并起来,PID控制器指的就是是比例,积分和微分控制器,用公式表示如下(e是指设定值和当前值的误差,t是指当前的时间)。
公式一:
以离散的数字方式表示如下(其中,k表示某个时刻,e(k)就表示某个时刻的误差值)。
公式二:
以四轴飞行器为例,假定我们每1ms读取一次陀螺仪和加速度的数值,并计算到姿态pitch和roll,再假定我们的目前姿态是水平状态,即pitch=0,roll=0,那么我们就可以得到某个时刻的PID计算公式如下图(其中A代表的是姿态角)。
公式三:
上述公式就是我们在四轴飞行器源代码里面经常看到的编程方法,通常,我们把微分控制的姿态差直接用陀螺仪的数据来表示,因为从陀螺仪读取出来的数据代表的就是现在和上一次的角速度差,乘以1ms的时间差,即为角度差,因而公式变为。
公式四:
对于简单的四轴飞行,积分不是必要的条件,而且积分使用不好的情况下,会对四轴飞行器的稳定性产生很大影响,所以对于四轴飞行器初学者来说,我们可以先去除积分项,把公式简化成下面的样子。
公式五:
就这样,一个简单的四轴飞行器的PID控制公式就出现在我们面前了。把该公式变换成代码,即可以实现四轴飞行器的PID控制。
从上面的描述,我们可知,这是一个位置式的PID控制器,即我们是把当前位置和水平位置作为误差来进行PID控制,从而实现四轴飞行器的水平飞行的。增量式PID和位置式PID的不同就在于增量PID控制是把位置的变化量作为控制量。这样一来,我们可以得到下述的计算公式。
公式六:
从上面公式,我们可以看出,积分项累加的结果就是当前姿态减去初始姿态,假定初始姿态为水平状态,那么姿态增量的积分就是当前的姿态。比例控制的是当前姿态相对于上一姿态的增量,根据我们之前的描述,可以用陀螺仪数据来表示。假定我们忽略微风项的控制,那么公式可以简化为:
公式七:
把公式七和公式五做对比,我们可以知道,在四轴飞行器中,位置式的PD控制相当于增量式PID的PI控制。把位置式PID控制和增量式PID控制组合在一起,就可以组成串级PID控制。
上文详细描述了位置式和增量式PID控制,并引出了串级PID控制的概念,如需转载,请勿用于商业目的,并注明:该文章出自圆点博士无人机www.bspilot.com