转载自:http://www.openedv.com/posts/list/20892.htm
传感器之一:角速度传感器应用科里奥利力原理:科里奥利力来自于物体运动所具有的惯性,在旋转体系中进行直线运动的质点,由于惯性的作用,有沿着原有运动方向继续运动的趋势,但是由于体系本身是旋转的,在经历了一段时间的运动之后,体系中质点的位置会有所变化,而它原有的运动趋势的方向,如果以旋转体系的视角去观察,就会发生一定程度的偏离。当一个质点相对于惯性系做直线运动时,相对于旋转体系,其轨迹是一条曲线。立足于旋转体系,我们认为有一个力驱使质点运动轨迹形成曲线,这个力就是科里奥利力。
角速度传感器的通常被应用于检测物体的移动。举个例子,一个人朝着一个固定方向在直线前进,从太空来看,这个人其实是以一定的角度在旋转前进。通过检测这个角速度,我们就能够只物体是否在移动。
在四轴飞行器中,通过对不同方向的角速度检测,我们就能够知道飞行器的运动方向。常用的运动方向检测包括X方向,Y方向,Z方向,即通常所说的三轴角速度传感器,也称3轴陀螺仪。
传感器之二:四轴飞行器所用到的加速度传感器也叫重力感应器,用于测量设备相对于水平面的倾斜角度。那么它的测量原理是什么呢? 我们知道,任何地球上的物体都会受到重力的作用。我们先来回顾下重力的计算公式:G=mg. 其中的g就是重力加速度,其值是9.8牛每千克。根据我们中学所学的物理知识可以知道,一个放置于斜面上的物体所受到的重力可以分解为两个方向:平行于物体的方向和垂直于物体的方向。那么对于斜角是@的物体,重力加速度g可以分解为X方向的sin@和Y方向的cos@,从而可以得到X方向的重力作用Fx=mg.sin@ 以及Y方向的重力作用 Fy=mg.cos@. 重力感应器把这两个力转化成电压信号,我们通过读取该电压信号,即可以计算中物体的倾斜角度。另外我们必须注意的是,运动中的物体所测量出来的倾斜角度是不准确的,原因是运动中的物体,由于不同角度的加速度的叠加,使得物体各个方向的力不能准确代表由于倾斜所产生的重力,因而使用中要注意到这一点。
初学者可能有个疑虑,为什么这个不直接叫重力传感器,而叫加速度传感器呢。实际上加速度传感器能感性各种各样的加速度,而不单单是地球重力加速度。 我们在四轴飞行器中把它称作重力传感器是因为我们只需要用对重力加速度进行检测,从而获得四轴飞行器相对于地面的倾斜角度。
简单的来说,加速度传感器的制造原理就是把压力转化为电信号。多数加速度传感器都是根据压电效应的原理来工作的。所谓压电效应,即使某些电介质在沿一定方向上受到外力的作用而变形时,其内部会产生极化现象,同时在它的两个相对表面上出现正负相反的电荷。通过测量这些电荷,并转化为电压信号输出,即完成了加速度传感器的制造。
常用的角速度和加速度传感器合一的模块有MPU6050,目前已经某宝已经有串口的MPU6050模块了。
传感器之三:地磁传感器,即数字罗盘,我们都知道它是用来确定方向的。它利用地磁场来定北极,其基本原理和我们熟知的指南针差不多。三维地磁传感器通过给出在X轴,Y轴和Z轴上的地磁力投影,可以提供活动物体的航向角 、俯仰角和横 滚角,从而可以确定物体 的姿 态,实际 上 就是确定了物体坐标系与地理坐标系之间的方位关系。不过在实际应用中,需要注意周围物体所产生出来的磁场对传感器造成的干扰。
传感器之四:气压传感器,用于测量物体所在平面的高度。气压是由地表空气的重力所产生的。海拔高的地方,地表的空气厚度小,气压低;海拔低的地方,地表的空气厚度大,气压高。通过测量所在地的大气压值,与标准值比较,就可以获得物体所在位置的高度。这就是气压高度计的基本测量原理。在实际应用中,需要结合温度等对测量结果进行修正。
四轴飞行器传感器之总汇: 在上面的各个章节中,分别介绍了角速度传感器,加速度传感器,地磁传感器和气压传感器。除了气压传感器外,余下的三个传感器均能提供X,Y,Z三轴的测量数据,综合在一起,可以称做10轴传感器。 我们知道,传感器是根据大自然的现象进行测量的一种器件。为了方便大家更好理解各个传感器的功能,我们总结如下:
1) 加速度传感器:利用了地球万有引力,把重力加速度投影到X,Y,Z轴上,测量出物体的姿势。
2) 地磁传感器:利用了地球南北极的磁场所产生的吸力,并投影到X,Y,Z轴上,测量出物体的方位和姿态。
3) 角速度传感器:利用旋转物体的旋转轴所指的方向在不受外力影响时的不变性,测量外力对物体的影响。跟地球万有引力和地球南北极的磁力具有固定方向性不同,旋转物体的旋转轴方向是不确定的,因而角速度传感器只能用来测量位置改变,而无法像加速度传感器和地磁传感器那样,测量出物体的绝对角度和姿势。我们必须要注意,角速度传感器输出的角速度是瞬时量,它的测量基准是自身,并没有系统外的绝对参照物。
4) 气压传感器:利用空气的压力,测量出物体所在位置的高度。
从上面的描述可知,除了气压传感器外,加速度传感器,地磁传感器和角速度传感器均可以用于对物体的姿势进行检测,从而对四轴飞行器平衡进行控制。那么它们的缺点分别是什么呢?
首先我们来看地磁传感器:
我们知道,磁场是非常容易发生干扰的。所谓电磁效应,即电场会产生磁场,而磁场又会产生电场。我们我们单纯用地磁传感器来控制四轴飞行器的平衡,那么一个电器产生的磁力感应有可能被误认为是飞行器的姿势发生了改变,从而引起微处理器改变电机的平衡转速,从而导致四轴飞行器失去平衡。大家知道飞行器中最容易产生磁场的就是电机,也就是说,电机不通电能够测出地磁场,一通电,磁场传感器就傻了。如果您做的不是静态模型,那我还是建议您不要考虑磁场了,为自己省点银子。
对于加速度传感器,我们知道运动中的物体会产生包括重力加速度在内的各种各样的加速度。当四轴飞行器起飞的一霎那,由于电机转速本身的重量和转速误差,我们无法感知飞行器本身的受力情况,从而无法通过加速度来判别物体的姿势。要获得准确的物体角度和姿势,加速度传感器就需要在静止或者匀速的情况下进行测量,而飞行器起飞的瞬间,物体是运动的,所以你无法用它来平衡四轴飞行器。
角速度传感器是理想的平衡控制传感器,它能感知物体的运行变化。四轴飞行器的微处理器通过读取这些数据进行分析,并根据运动变化进行反馈控制,即可以使得物体保持平衡。四轴飞行器在起飞瞬间,飞行器在四个电机的作用力下,开始运动,由于不同电机的驱动力差异,飞行器姿势会发生改变,微处理器获得这些改变后,微调各个电机的转速,从而使得飞行器达到平衡。
那么只有角速度传感器的四轴飞行器可以飞吗? 理论上是可行的,但是正像我们前面提到那样,角速度传感器无法绝对定位自己的位置和姿势。 它只是感知物体的姿势改变,然后通过微控制器来阻止这种改变,从而获得平衡。简单来说,四轴飞行器起飞瞬间,如果它的位置是斜的,那么它平衡后,位置也是斜的,因为它无法知道自己的初始状态。所以只有角速度传感器的四轴飞行器无法水平飞行,无法感应飞行姿势,也无法修正飞行姿势。此外,还需要注意,角速度传感器输出的瞬时量其实并不适合于用来直接进行平衡控制。关于平衡控制,我们将来接下来的章节谈到。
至于气压传感器,那就单纯是测量飞行器高度,可用于导航。有没有,对四轴飞行器影响不大。
大家知道飞行器中最容易产生磁场的就是电机,也就是说,电机不通电能够测出地磁场,一通电,磁场传感器就傻了。如果您做的不是静态模型,那我还是建议您不要考虑磁场了,为自己省点银子。
四轴飞行器传之平衡和姿势控制:
上述各个章节对传感器进行了具体描述,下面谈下如何进行四轴飞行器传的平衡和姿势控制。开始这部分描述前,大家必须不要混淆加速度传感器和角速度传感器。 角速度传感器也有人叫角加速度传感器,不过不要小看这个“角”字,一字之差,千里之别。如果你还是无法区分它们,建议在读本节之前,先重新复习下上面各章节。
前面说到,角速度传感器输出的角速度是瞬时的角加速度量,一般的平衡控制系统不能直接使用它。我们需要得到角度的变化量来进行平衡控制,这就需要使用角速度和时间进行积分运算,从而得到角度的变化量。然后这个角度的变化量就能用于平衡控制。所以在实际的四轴飞行系统中,首先要对角速度传感器做 PI运算。PI是比例积分控制,是滞后校正,它是PID(比例/积分/微分)发展起来的一种PID改进算法。P是指比例控制,其控制器的输出与输入误差信号成比例关系。I是指积分控制,控制器的输出与输入误差信号的积分成正比关系。
PID是一种闭环控制算法,必须在硬件上具有闭环系统,即控制系统和反馈系统。PID(比例/积分/微分)并不是必须同时具备三种算法,可以是PD,PI,甚至P算法控制。单纯的P算法控制是最简单的,以四轴飞行器为例,就是把角加速度数据读回来,是正就电机加速,是负就电机减速,或做相反控制。对于单纯的P(比例)控制,反映系统的当前状态,可以通过加快调节来减小误差,但是使系统稳定性下降,甚至造成系统不稳定。 I(积分)和D(微分)不能单独起作用,必须和P(比例)控制配合使用, I(积分)反映系统的累计偏差,使系统消除稳态误差。D(微分)反映系统偏差信号的变化率,具有预见性,从而进行超前控制。四轴飞行器只用到PI算法。关于PI算法的更多知识,我们将会在后续的章节中陆续谈到。
理论上,如果我们知道物体的初始姿势,通过角速度传感器的上述积分运算,我们也能得到物体的最终姿势,但是,我们知道积分运算是有误差的,随着时间的流逝,误差越来越大,最终这个计算出来的变化的角度就和实际的角度相差较远。从而导致姿势和我们预想的发生偏差。
加速度传感器是以重力作为参考力方向的,在无外力的情况下,测量出来的是物体的绝对姿势。但是它无法区分重力加速度和外力加速度。因为运动中的四轴飞行器同时受到重力和外力的作用,所以加速度传感器的姿势输出也无法反映飞行器最真实的姿态。
所以在没有其它参照物的基础上,就要充分了解这两种传感器的特性,扬长避短,在短时间内使用角加速度的值,在长时间内使用加速度的值进行校正,从而得到接近真实值的姿势。加速度与角速度融合求解姿态最正确的方法是利用动态卡尔曼滤波进行输出,它能够自动根据观测量修正状态参量,但是卡尔曼滤波算法比较复杂,非常难懂。没有一定的功底是不好做的。好在现在淘宝上面有一款串口的MPU6050模块,里面集成了卡尔曼滤波和姿态解算算法,能够动态修正陀螺的累积误差,也算是大家的福音了。本人测试漂移抑制得挺好,其动态精度还算可以。附上传感器的图片。
所以在一个四轴飞行器系统中,对角速度传感器进行PI运算,四轴飞行器就有了瞬时的增稳,能够进行飞行,由于累积的误差作用,很快中心点就会偏离水平位置,通过使用姿态角度输出进行纠正,就能使得四轴飞行器的中心点保持在水平位置,实现平衡飞行。
四轴飞行器线路图规划:
上面详述了四轴飞行器所用的各传感器资料,下面开始线路图规划。
1) 四轴飞行器总指挥:STM32是首选,资料多,容易买。用STM32F103就差不多了 。
2) 四轴飞行器后勤:电源是四轴飞行的保证,采用4手机锂电池,充电芯片就用TP4056之类吧。充电接口采用USB接口,顺便整合USB Bootloader以方便算法升级
3) 通讯接口,那就选用2.4G无线通讯NRF24L01
4) 传感器就用6轴角加速度+加速度传感器:串口MPU-6050,磁场的可用性不高,主要是环境干扰严重,先不采用。气压高度计用处不大,体积不小,不确定是否使用
5) 再加上电源芯片,采用低压差的LDO从锂电池直接生成3.3V。
该有的差不多了,更多的功能慢慢扩展吧 。
遥控器部分暂时采用电脑, 采用USB+2.4G无线通讯NRF24L01。为了方便对飞行算法进行调试,计划STM32暂时不做算法运行,只采集各传感器数据回到电脑,电脑分析后,发出指令给各电机,控制姿势 。
遥控器上位机软件采用VB或者Labview。 后者在图表,三维方面具有很大的编程优势。