汇总



0. 前言


首先说明一下本文所涉及的跟踪控制,是建立在无人机已经具有稳定姿态的飞控的基础上进行的(如bebop或大疆tello这种)。因此仅将无人机视作二阶系统,不涉及无人机自身的稳定控制,控制输入为XY方向的加速度(姿态倾角的角度)以及Z方向的速度。

通俗来说就是不考虑那些复杂的飞控算法,直接通过控制无人机的速度和加速度来让他听话,算法也采用简单好用的PID控制,更适合快速入手无人机的运动控制。


本章节是理论篇,将对需要用到的理论知识进行简单的说明,都比较基础,需要写论文的同学可以参考一下

想要直接看实物实验部分的可以直接跳到下一篇实践篇

另外本人基础理论素养尚且薄弱,如错误的地方希望大家批评指正。


本文采用的无人机是 Parrot 家的 Bebop 2 无人机,通过Parrot官方的SDK接口,可以和ROS进行很好的通讯,可以直接控制无人机XY平面的加速度以及Z方向的速度。

由于我现在已经毕业了,没有时间和条件再重新做一次仿真,就将之前实物实验的过程总结一下分享给大家,可以根据本系的列前两节仿真环境搭建的说明进行尝试。


1. 无人机模型


PID控制是基于期望和输入偏差的函数,不依赖于模型,本小节仅作简要的分析,篇幅有限,在此也不作进一步的推导和说明了,有兴趣可以自行查阅文献。本节的分析仅在后续Matlab的仿真中需要用到。

无人机的坐标转换如图所示

无人机的受力分析如图所示:


无人机的四阶动力学简化模型为:

在这里插入图片描述

其中,

在这里插入图片描述

由于无人机在室内环境下的飞行速度往往较低,因此可以忽略掉空阻系数Ki,进一步简化,在我们后续控制的过程中将无人机当做质点,即偏航角一致为0,且姿态角均较小的情况下,上述系统可以进一步简化为:

在这里插入图片描述
而本文的二阶系统,不考虑无人机的姿态,模型就更简单了:

在这里插入图片描述

其中,

在这里插入图片描述


2. PID控制


PID的使用十分的广泛,对于PID控制器的详解,网上有很多内容,本小节也不过多的介绍了。

所谓PID控制,说白就是将实际量与期望量做差,记为e,然后对这个偏差e做进行一系列的计算,最后把这个计算结果赋值给输入量u,其目的就是通过这个偏差e做反馈来调节输入量u,最后使得偏差e趋近于0,这时候实际量就达到了期望的值。

而这些计算,分为比例环节(P),积分环节(I),微分环节(D)。

  • 比例环节 就是给偏差乘上一个系数Kp,即 Kp * e,即系数Kp越大,同样的偏差e情况下,输入量u就越大,被控对象就越快的向目标逼近,但系数Kp过高会产生振荡,过低就会响应的慢。
  • 微分环节 就是计算偏差变化的一阶导数,即偏差变化的速度。其目的就是想让被控对象不仅最后的偏差量为0,还想让其速度也为0。例如在比例环节的作用下,被控对象达到目标点时还存在一定的速度,那么就会超过目标点,进而发生不断的震荡,引入微分环节,只要速度存在,那么微分环节就会对其起到反作用,此时可以简单的理解为其在控制环节中起到了阻尼的效果。
  • 积分环节 就是计算偏差的积分,所谓积分嘛就是累加。举个例子就很好理解了,被控对象在趋近期望值的时候,P不断减小最后施加的作用不足以其达到期望值,这时候变化速度也趋近于0,在PD的共同作用下系统是稳定的,但距离期望值仍有一定距离(常见于温控系统),此时引入积分环节,只要偏差存在,就不断地对偏差进行累加,作用于输出u上,并不断的增大,直到系统达到期望值。

PID公式的写法有很多,为了后续写代码的方便,我这里就用如下的公式,将PID三个参数分开来写:

在这里插入图片描述


3. 无人机控制


理解原理之后,这里直接放入对无人机的控制框图(对应四阶模型,仿真用)

由于姿态环不受位置环的影响,因此内环为俯仰和滚转控制,外环为 X 和 Y 方向的位置控制;

而期望高度 _zd_ 和期望偏航角 _ψd_ 则直接通过高度控制器和偏航控制器来控制,得到 U1 和 U4;

运行时,由期望轨迹 _xd_ 和 _yd_ 解出 _θd_ 和 _ϕd_ ,并进一步将其作为姿态控制器中的输入量,得出姿态控制量 U2 和 U3。


而具体到二阶系统实物应用中的串级PID控制,外环位置环控制框图如下:

内环姿态环的控制框图如下:

对于高度和偏航角控制,如前文所述,只需要进行单环的PID控制即可:


接下来放一下 Simulink 中对无人机的仿真模块的设置(四阶系统),可提供参考:


  • 无人机动力学模型子模块:

  • 姿态控制子模块

  • 位置控制子模块

设计如下所示的螺旋曲线轨迹

在这里插入图片描述

通过所设计的控制器对其进行轨迹跟踪数值仿真,仿真结果如下:

  • 姿态角ϕ,θ,ψ变化曲线图:

  • 轨迹跟踪位置曲线图:


最后放上仿真效果的视频:https://www.bilibili.com/video/BV11Y41177B8

MATLAB 代码(仅供参考):https://github.com/Chenan-W/MATLAB-Trajectory-Tracking-Control-for-UAV