四轴(2)-飞控板及控制原理 飞控板是整个控制四轴最核心的东西,也是它把四轴变得比直升机还好控制。飞控板最主要的功能是计算四个电机的控制量,如何计算就牵扯到各种算法了,这里我不详细展开说。 主控芯片读取各个传感器数据,然后对各种数据进行融合,然后能得出机体的姿态信息,什么是姿态信息呢?就是给你一个坐标系,给你一个已知长宽高的长方体,给你姿态信息,然后你就可以在坐标系里把这个长方体画出来了,你知道在哪个位置上画,也知道是怎么放置的,是某个角朝上还是某个楞平行于坐标轴,这些都能知道。这就是姿态信息的意义。 姿态的表示方法有很多,有四元数,欧拉角,旋转矩阵,轴角表示等。各自有各自的优缺点。且都能相互转换,有相应的公式。四元数,旋转矩阵在数学计算上比较方便。欧拉角物理意义最为明确,直观,方便用于控制。所以,可以用四元数,旋转矩阵来进行计算,将结果转化为欧拉角,用欧拉角进行PID控制。 欧拉角的叫法比较多,在航空上一般叫做: 俯仰角(pitch)、横滚角(roll)、航向角(yaw)。 还有一种叫法: 章动角、旋进角、自转角。 还有其他的,一共有12中表示,这里举了两个例子,其他的可能有名字也可能只是数学符号。名字不同物理意义也不同,这里的横滚角和旋进角不是一个东西,不要混用。 这个图表示的是章动角,旋进角,自旋角 这个图表示的是俯仰角、横滚角、航向角 pitch roll yaw 如图, 绕X轴旋转的叫做横滚(roll), 绕Y轴旋转的叫做俯仰(pitch), 绕Z轴旋转的叫做航向(yaw)。 注意:这里的x、y、z轴指的是原始坐标轴,也就是固定不变得坐标轴,而不是随机体变化的坐标轴。章动角那一系列坐标轴是变化的,要分清。 用这三个欧拉角就可以表示机体的姿态了。 实际上姿态信息一共六个,除了这个三个欧拉角信息外,还有三个位置信息,即x、y、z坐标。为了方便,后面所有的姿态信息都不包括位置信息,两者分开说。
通过三个欧拉角任意组合,就可以表示不同的姿态了,由于刚体转动不可交换定律,欧拉角旋转是有顺序的,同样的角度,不同的旋转顺序是不同的。先俯仰30°再横滚40°,与先横滚40°再俯仰30°表达的姿态是不一样的。但是在小角度可以近似,小角度情况下,刚体转动是可交换的。深层原因暂时先不推导,可以看下理论力学课本。后面文章补上。 欧拉角的求法,这个淘宝上有串口输出欧拉角的惯性模块,用的是mpu6050的dmp,很方便,几十块钱也不贵,就是频率有些低100Hz,对控制要求不高可以试试。 如果要自己编程也可以,网上有很多C函数,输入惯性数据,输出就是角度。惯性数据针对不同的函数要求不同,有的要求陀螺仪、加速度计,有的要求陀螺仪、加速度计和电子罗盘,有的还可能要求更新时间作为输入参数。这就看具体函数具体形式了。注意这些数据并不一定用的原始数据,可能需要简单的一些平滑滤波或其他滤波,传感器也需要矫正的。这里的滤波和卡尔曼滤波、互补滤波等不是一个东西,分不清的话可以把卡尔曼滤波等叫做卡尔曼算法,互补算法,这样更明确。我入门时用的是IMU和AHRS互补算法。资料挺多的,可以网上搜下。后面我会专门分析下这俩算法。挺巧妙的。 如果也不想用现成的算法,也可以自己设计下算法,普遍的方法有卡尔曼滤波(KF)、拓展卡尔曼(EKF)、采样卡尔曼滤波(UKF)、粒子滤波(PF)以及简单的互补滤波及其变形。关心姿态算法的可以多看看这些资料。 简单介绍下各个传感器的作用: 陀螺仪:测量机体三维角速度。 加速度计:测量重力加速度在机体坐标轴上的分解加速度(不考虑外部加速度)。 电子罗盘:测量磁场在机体坐标轴上分磁场强度。 这三者结合通过一些算法可以得到机体姿态。有的只用到陀螺仪和加速度计,这样计算出的姿态yaw是不准的,会随着时间慢慢飘移,在一些小四轴中很常见,小四轴中体积小电子罗盘容易受到电机干扰,所以不用。yaw即使慢慢飘移也不要紧,可以通过遥控器调整。小四轴一般飞行距离不会太远。甚至有的四轴只用到陀螺仪,例如KK四轴,这样三个角度都会慢慢飘移,需要更高的控制技巧了。 气压计:测量高度,坐标系中的Z轴值大小。 GPS: 测量机体位置,坐标轴的X、Y坐标,高度信息一般用气压计代替。 摄像头:测量机体位置信息,坐标轴中的X、Y、Z,精度比GPS高。室内也可以工作。
现在有了欧拉角,那么怎么进行控制呢?这里我们只考虑小角度情况下,小角度没有绝对的界限,为了方便说明,这里定到30°以下吧。也就是说我们的机体始终保持pitch、roll在30°以内,yaw暂时不管。 先一个一个角度的看,拿pitch来说,以Y轴为对称轴,2、4电机关闭。pitch对应的是螺旋桨1、3,设1桨抬头时pitch为正,设定的目标值是pitch = 0;当前pitch – 0 = pitch;1桨抬头那么就把差值pitch乘以系数Kp,折算到pwm值上。然后1桨原pwm减去这个值,3桨加上这个值就可以了。这里的Kp就是PID中的P参数,这个Kp的物理意义也包含了单位转化,从角度的量纲转化到脉宽的量纲。这只是进行了P调节,还可以加上I和D调节,具体参考网上各种各样PID实现代码。 由于四轴对称性,roll和pitch一样,pitch只管1、3电机,roll只管2、4电机,互不影响。当两个轴分别能调平衡这个四轴就能水平飞行了。当然还可能会自旋。这是因为没有对yaw进行调节。 对角反扭矩是一样的,即1、3一样,2、4一样。这样我们可以看成只有两个扭矩,一正一反。当扭矩不为零时,四轴会旋转,yaw也会变化,根据yaw的变化值进行PID调节,算出的量同时加减在对角桨上。对角的螺旋桨转速同时变化是不会影响水平角度。 将三个欧拉角分别进行PID控制,将计算的量叠加到电机信号pwm上即可,事实上pwm占空比与升力的关系并不是线性的,占空比变成二倍,升力不一定变成二倍。但可以近似成线性,毕竟还有pid万能的调参呢。 这是对欧拉角进行pid控制的原理。也是最简单,最明确的方法。 对于pid调参提些建议,pid控制一定要在欧拉角准确的情况下控制,欧拉角都不准还调个屁。调单轴PID时可以搭个平衡木,将四轴的六个自由度转化为一个,(六自由度分别为,空间坐标x、y、z,绕xyz的角速度)。调参不一定先调P,调到等幅振荡时再调I或D,这种方法在四轴上很难行的通,基本上调到等幅振荡基本不可能(这是我的实验结果)。通过对四轴建模你会发现,整个系统最终简化为二阶系统,表明单P控制是不可能稳定的,最少PD控制才能稳定, 这样调参时你可以PD一起调,在稳定之后慢慢改参数。 另外有些人做PID控制时把陀螺仪输出的角速度作为D控制,理论依据就是角度的微分就是角速度,不严格的话可以这样说。这样做控制效果确实比用D控制好,但是这种控制方法不应该叫做PID控制,实际是PI控制加角速度反馈控制。这是两个控制器。设采样周期和控制周期一样,对于数字陀螺仪来说,这里的采样周期就是读取陀螺仪寄存器里的数据的读取周期。数字陀螺仪的本身采样周期是通过相应寄存器配置的。所以并不是读取周期和控制周期一样,角速度就等价于微分D除以时间。 解释下为什么要限制到小角度,因为控制时,是针对三个欧拉角分别控制的,是同时计算,是不分先后顺序的,计算结果直接叠加。这种控制只有在小角度下才有效。 最后说一下遥控器,遥控器分手柄和接收头,接收头每一个通道对应遥杆一个方向。接收头的信号是50Hz PPM(脉位调制)信号,不同的摇杆位置对应不同的脉宽,MCU通过采集脉宽就可达到信息的传递。 50Hz也就是一帧20ms,每2ms对应一个通道,理论上最多10通道,但是同步脉冲也需要就时间,所以最多9通道。这些通道pwm是错开的,所以不用担心多个脉冲的上升沿同时到来。 有些DIY的是数传遥控器,发送的是数字信息,直接通过数字传递消息,例如典型的NRF24L01遥控器。 先介绍到这,后面继续补充。
除非注明,MQBdiy社区所有文章均为原创,转载请以链接形式标明本文地址 本文地址 [url=http://www.mqbdiy.com/quadrotor_2/]http://www.mqbdiy.com/quadrotor_2/[/url]
补充内容 (2015-10-20 21:13):
关于旋转坐标轴,需要更正下,不是围绕原始坐标轴旋转。原文:“注意:这里的x、y、z轴指的是随机体变化的坐标轴。每次旋转后产生一个新的坐标轴,再次旋转是围绕新的坐标轴”,自己的帖子居然都不让改,太不友好... |