锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

无人机飞控三大算法汇总

时间:2023-02-20 21:00:00 apm接近传感器

捷联惯性导航系统、卡尔曼滤波惯性导航系统、卡尔曼滤波算法、飞行控制PID算法。

1.捷联惯性导航系统

说到导航,我不得不说GPS,他接受卫星发送的信号来计算自己的位置,但当GPS设备上方被遮挡后,GPS设备无法定位。例如,在室内、隧道、地下等场所,基本上没有收到GPS信号。

语录:任何有缺点的产品都必然会产生另一种能够克服缺点的产品。

另一种导航方式不依赖外部信息,称为惯性导航。

那么什么是惯性导航呢?他利用载体上的加速度计和陀螺仪来测量飞机的角运动信息和线运动信息,并将其交给计算模块,计算模块计算飞机的姿态、速度、方向和位置。

(卓越:陀螺仪是如何通过角运动信息和计算模块来计算姿势的?同样,加速度计是如何通过在线运动信息计算速度的?

惯性导航系统分为平台惯性导航和捷联惯性导航。

惯性导航系统分为平台惯性导航和捷联惯性导航。

早期的惯性导航系统是平台式的。平台惯性导航具有物理平台。陀螺仪和加速度计置在陀螺仪稳定的平台上。平台跟踪导航坐标系,实现速度和位置解决。姿态数据直接从平台的环框中取出。

优点:直接模拟导航坐标系,计算简单;能隔离载体角运动,系统精度高。

缺点:结构复杂,体积大,生产成本高。

还有另一种捷联惯性导航,意思是捆绑。因此,捷联惯性导航是将惯性测量元件,包括陀螺仪和加速度计,直接安装在需要姿态、速度、方向等导航信息的主体上,将计算机测量信号转换为导航参数。

优点是没有平台,架构简单,体积小,维护方便。

缺点:惯性元件直接安装在载体上,环境恶劣,对元件要求高;坐标变换计算量大。

总的来说,捷联惯导比平台惯导有明显的优势。

1969年,捷联惯导系统被用作"阿波罗"-13号登月船的应急备份装置在服务舱爆炸时成功引导飞船返回地球的轨道上发挥了决定性作用,成为捷联惯导系统发展的里程碑

二、卡尔曼滤波算法

卡尔曼滤波算法采用信号和噪声的状态空间模型,更新状态变量的估计,并找到当前的估计值。

卡尔曼滤波算法如卡尔曼 20世纪60年代提出的递推滤波算法。其本质是寻求一套递推估计算法,以最小均方误差为最佳标准。该算法采用信号和噪声状态空间模型,利用前一刻的估计值和当前时刻的观测值更新状态变量的估计,导航系统中得到广泛的应用。噪声是指计算值与实际值之间的误差。

那么为什么Kalman惯性导航系统将应用滤波器?这主要是因为惯性导航系统的纯惯性传感器不足以达到所需的导航精度。为了补偿导航系统的不足,经常使用其他导航设备来提高导航精度,以减少导航误差。所以利用Kalman滤波算法可以比较惯性导航系统和其他导航设备的数据(如惯性导航系统计算的位置)GPS混合使用接收器给出的位置信息,估计和校正未知惯性导航系统的误差。

包括机器人导航、控制、卡尔曼滤波算法在内的广泛应用已超过30年, 传感器数据集成,甚至军事雷达系统和导弹跟踪。

例如,在雷达中,人们对跟踪目标感兴趣,但目标的位置、速度和加速度的测量值通常在任何时候都有噪音。卡尔曼滤波器利用目标的动态信息来消除噪声的影响,并对目标位置进行最佳估计。这一估计可以是对当前目标位置的估计(滤波器)、对未来位置的估计(预测)或对过去位置的估计(插入值或平滑度)。

卡尔曼滤波算法是一个非常复杂的计算,我们结合飞机简单地谈论它的计算过程,如飞机想知道他们的状态,状态可以是姿态、速度或位置信息,我们知道飞机传感器可以获得这些信息,通过惯性导航数学模型也可以计算这些信息,但这两个信息的值和实际值仍有一定的差距,把这两个值放在几个数学公式中,我们可以得到一个最优值。通过将这个最优值与传感器和数学模型的值进行比较,我们可以知道哪个值更接近最优值。在下一个计算中,我们应该更多地参考接近最优值的值。例如,如果传感器的值最接近最优值,我们将使用更大的权重,数学模型获得的值加上更小的权重,这个权重不是随便给的,也是通过数学公式得到的。然后我在下一个时间段计算权重将工作,传感器值和数学模型值将在数学公式中获得最佳值,然后我们将最佳值与传感器和数学模型值进行比较,然后看看哪个值接近最佳值,如果传感器值接近,我们将通过公式生成权重,计算下一个时间段。通过不断重复这样的计算,我们可以得到一个相对较好的值,这是卡尔曼滤波算法的一般过程。

三、飞行控制PID算法

PID控制器是一种线性控制器,主要根据给定值和实际输出值构成控制偏差,然后利用偏差给出合理的控制量。

目前,人们通过科学研究获得了许多控制效果优异的算法和理论,但在工程应用领域,基于经典PID控制算法仍然是最简单、最有效的控制方案。

PID控制器是一种线性控制器,主要根据给定值和实际输出值构成控制偏差,然后利用偏差给出合理的控制量。

目前主流的开源飞行控制无一例外都在使用PID实现无人机姿态和轨迹控制的控制算法。

PID里的P是Proportion首字线,意思是比例,I是Integral的首字线,是积分的意思,D是Differential首字母,意思是微分。

那么PID控制器算法能解决哪些问题?以多旋翼为例,在没有控制系统的情况下,直接用信号驱动电机驱动螺旋桨旋转,产生控制力,动态响应过快或过慢,或控制过冲或不足,多旋翼无法顺利完成起飞和悬挂。为了解决这些问题,需要在控制系统回路中添加PID控制器算法。比例、积分和微分之间的关系建立在姿态信息和螺旋桨速之间的比例、积分与微分之间的关系,使多旋翼系统控制能够实现快速动态响应、过冲、不缺的现象。

让我们举一个简单的例子来理解它PID我们以一辆自动驾驶汽车为例。为什么我们用汽车而不是多旋翼?因为以汽车为例,我们可以看到汽车的行驶轨迹。根据轨迹,我们可以直观地看到它PID对控制的影响,便于理解PID的作用。

我们先讲P,比例控制。现在我们想让汽车沿着绿线前进。我们为P设置了一个固定值,允许离开绿线的汽车向绿线方向行驶。距离越远,方向盘的角度越大,越近,方向盘的角度越小。橙色箭头表示汽车的方向

例如,在这个位置位置,我们设置了一个中等大小的P值,想沿着绿线走。在比例控制下,路径是这样的,因为车有一定的速度,到达绿线时会因为惯性而向前移动,然后根据中等P值回击方向盘。到达绿线时,也因为惯性冲过头,因为车越接近绿线,方向盘越小。它的偏差越来越小,所以随着汽车的反复运动,它可以越来越接近绿线,理论上最终可以在绿线上行驶。

如果我们把P值设置得更大,它的路径是这样的,因为方向盘的角度更大,所以汽车比中等P值更早到达绿线,但也因为惯性会多次往返绿线两侧,也更接近绿线,因为方向盘的角度更大,所以会比中等P值更多,经过多次往返,理论上会越来越接近绿线,最终到达绿线上方。

如果我们设置P值相对较小,即方向盘的角度相对较小,其路径是这样的,汽车将晚到达绿线,因为惯性将往返于绿线的两侧,但由于方向盘的角度较小,汽车可以在较少的往复次数下接近绿线。

因此,让我们比较一下设置这三个P值的结果,当汽车与绿线距离相同时,P值越大,车的反应越快,P值越小,汽车的反应就越慢,所以这三辆车第一次到达绿线的时间就不同了。虽然P值可以更快地到达绿线,但反应更剧烈,总是因为太快而冲过头。相反,小P值的反应相对温和,但反应太慢,有时我们无法接受。

什么样的P值是合理的,也就是说,设置后,汽车的反应不是很剧烈,你可以接受反应时间,这是一个相对合理的P值。

有没有办法让它反应更快,反应也不那么剧烈,那就用下面我们要讲的微分控制。

为了不让这辆车冲过头,我们再给它一个力,这个力就是D,让这种力发挥作用,是让汽车更接近绿线,接近绿线越慢,汽车离绿线越远,接近绿线的速度相对较快,接近绿线的速度不是汽车的速度,而是汽车与绿线平行线之间的相对速度。这个D可以理解为汽车靠近绿线的阻力。

假设我们设置了一个相对合理的P值,在P值不变的情况下,D值在微分控制中会发生什么变化。例如,我们设置了一个更合适的D值,微分控制(D)当汽车靠近绿线时,接近绿线的速度相对较慢,因此比例控制(P)汽车很容易到达绿线上方。

如果D值过大,即汽车靠近绿线的阻力过大,汽车到达绿线上方需要很长时间。

如果D值设置过小,即汽车靠近绿线的阻力过小,则微分控制(D)它不会对比例控制产生很大的影响,所以虽然汽车可以快速到达绿线,但汽车需要调整几次,在绿线两侧到达绿线上方几次。

比例控制似乎是这样的(P)和微分控制(D)配合似乎很完美。为什么要有积分控制?(I)呢?

设置合适的P值和D值,可以让汽车沿着绿线走得很好,但道路不是很平坦,会有一些坑包,或其他干扰,路况会让汽车行驶路线偏移,如汽车在这里遇到坑包,其行驶路线 会变成这样,稍微偏离绿线,因为微分控制(D)汽车离绿线越近,靠近绿线的速度越慢,比例控制(P)当汽车接近绿线时,方向盘相对较小,以小车要走一段路才回到绿线上面。

有没有办法让它更快回到绿线上面呢,所以我们再给它加一个力,这个力就是I,积分控制。我们让积分控制起这样的作用:如果P和D的调节不是很理想的话,就让I帮他俩一把,向P的方向上加一个力,这样可以让小车更快回到目的路径。

设置了I以后,I会根据误差和误差经历的时间进行积分,然后决定施加给目标方向的力的大小,就能够让小车回到目标轨迹上。

 

一个合适的I值,可以让小车偏离轨迹后,I可以在合适的时间给P一个合适的力,让小车快速的回到绿线上面;

如果I值过大,积分控制(I)调整的力就会比较大,它在帮P的时候会用力过猛,会让小车冲过绿线,下次帮忙的时候还是用力过猛,P表示很无奈,毕竟I也是好心,经过几次调整后,小车终于回到绿线上面,但我们看小车的轨迹线产生了一定的振荡;

如果I值过小,积分控制(I)调整的力就会比较小,就像有一个手无缚鸡之力的柔弱小鲜肉一样,帮不上太大的忙,所以小车回到正确轨迹的时间就会比较长。

 

说完了PID控制对小车的影响,下面我们再说说PID控制对多旋翼的影响。比如这架多旋翼想要作的是保持机身的水平平稳。

我们先从P开始,如果P值设置的过大,哪怕机身有那么一丁点倾斜,飞行器都会用稍大一些的力去调整,结果用力过猛,又继续向回调整,这样飞行器就会频繁的调整自己的水平状态,导至机身产生振动。

 

            上图中指向左侧的箭头写的是过大不是过人

如果P值设置的过小,飞行器的水平调整就会显得力不从心,比如空气中的微风让飞行器发生了倾斜,飞行器向回调整的力比较小,所以需要长一点的时间才能调平,这样让我们觉得它反应有点慢。

 

比如我们经过多次测试设置了一个比较合适的P值,可以让飞行器有一个我们能接受的反应时间,但稍有一点过冲,会有一些震荡,接下来再设置D值,让D值消除震荡,如果D值设置过大,会让飞行器恢复平衡时间过长,反应变慢,

如果设置了一个过小的D值,会导致效果不明显,飞行器还是会有震荡。

 

比如我们又设置了一个合适的D值,可以让飞行器反应不是很慢,也不会有明显的震荡。接下来我们再设置一下I值。

这里的I我们可以这么理解,I根据飞行器的反应时间,适当的帮忙,如果飞行器反应慢了,他就会帮一下,能让它的反应快一点。但是如果值设置的过大,这个帮忙可能会用力过猛,导致过冲。

 

如果I值设置过小,它的帮忙就没有太大的作用,还是不会让飞行器反应更快。所以设置一个合适的I值需要多次的测试,让它的帮忙起作用,又不会用力过猛。

有些人怕麻烦就不设置I值了,其实也没有太大的影响,只不过离完美还差那么一点。

PID的设置是一个非常复杂的过程,对于一般的使用者来说是非常难的。所以有些厂商也想出了一些办法。

 

比如3DR的开源飞控APM和PIXHWAK,咱们看它的调参软件中,PID部分有这么多要调的地方,对于一般的用户来说是比较有难度的,所以它加了一个自动调参的功能,就是这个AutoTune[‘ɔ:toʊtən],可以把遥控器上的一个开关设置成自动调参,找一片开阔地让飞行器起飞,然后把遥控器上的自动调参开关打开,飞控就开始自己控制飞行器进行飞行测试,然后根据测试情况自动设置一个比较合适的PID参数。

 

有些厂商作的就更简单了,直接在调参软件里加了一个感度的配置,这个感度大家可以理解为敏感度 ,数值越大,敏感度越高,不同的轴距都有不同的推荐感度设置。

左面的这个是大疆NAZA飞控的调参软件,调参软件说明书里就有一个不同轴距的推荐感度值,右面的拓攻更简单,直接选择轴距,就能自动设置推荐的感度值。

这些厂商的调参软件里一般都会有姿态感度和基本感度,或者叫稳定感度。姿态感度是指飞行器对遥控指令的敏感程度,基本感度或稳定感度是指飞行器对于外界干扰反应的敏感程度。这样就比PID理解起来要简单的多了。

本文来自:无人机飞控三大算法汇总 - 徐景祥 - 博客园

(73条消息) 无人机飞控三大算法汇总_嵌入式-CSDN博客_无人机计算

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章