【陀螺仪】

单精度浮点数前天 21:04:29

让陀螺仪说真话穿越机是多旋翼而多旋翼本质上是个自激振动系统。电机转动,桨叶产生升力,机体结构跟着共振,振动传到惯性传感器...

让陀螺仪说真话

穿越机是多旋翼

而多旋翼本质上是个自激振动系统。电机转动,桨叶产生升力,机体结构跟着共振,振动传到惯性传感器,传感器读出并不存在的角速度,控制器据此做出纠正,纠正又加剧了振动。这个闭环一旦转起来,轻则画面发抖,重则空中失控。

飞控要做的第一件事,是在这个闭环里把真信号和假信号分开。

采样和调度这块,主流做法是陀螺仪以八千赫兹输出数据,通过直接内存访问搬进两个缓冲区交替使用,中断里只做切换指针和置标志位这两件小事,真正的滤波和控制计算放在主循环里。控制循环不是由独立定时器驱动的,而是挂在陀螺仪数据就绪之后,保证每一次计算用的都是最新的一帧数据。数据到位到电机信号推出去,中间只有一百二十五微秒这个量级。所谓跟手,根子就在这里。中断服务函数里几乎什么都不干,看着反直觉,其实是怕重的计算阻塞下一帧数据的搬运。

板上不只有陀螺仪。加速度计配合它做姿态解算,用卡尔曼滤波一类的算法把两个来源的数据融合起来,算出俯仰、横滚、偏航的角度。气压计管高度,磁罗盘管朝向,定位模块管位置。飞控读这些量,按预设的算法或者飞手当下的杆量,决定四个电机各转多快。

比例积分微分这三项各自管一件事。比例项看当前误差,误差越大纠正越猛,调高了动作利落但容易抖。积分项累积长时间的小误差,负责把风偏这类持续干扰压掉,调高了会来回晃,调低了会慢慢漂。微分项看误差变化的速度,起阻尼作用,防止过冲,它同时也是最容易把噪声放大的一项。微分本身就是在算变化率,高频噪声经过微分会被成倍放大,所以微分项上往往单独挂一层低通。

飞行模式决定了这套算法怎么用。速率模式下摇杆控制的是旋转角速度,松手不回正,机器保持当前的转动状态,这是做动作和竞速的主流选择。角度模式下摇杆控制的是倾斜角度,松手自动回平,新手友好。地平线模式介于两者之间,小杆量像角度模式,大杆量切到速率模式。同一套控制参数在三种模式下的表现不一样,调参要在你实际用的那个模式下做。

噪声从哪来,得分清楚。一百赫兹以下的隆起,通常是装机问题,可能是走线压在传感器上,可能是飞塔螺丝没拧匀,也可能是机臂松动或者减震垫太硬。这部分不能靠滤波解决,得动手改。一百赫兹以上、随着油门升高往高频移动的,是电机和桨叶产生的。在频谱图上表现为一条竖着的、频率不随油门变化的条纹,那是机架共振,五寸以上的架子更容易出现。

滤波栈的顺序有讲究,先陷波后低通。陷波是针对特定频率的窄带抑制,低通是一刀切地把高频削掉。如果先做低通,共振峰已经被削弱,后面的动态滤波器就找不到它了。

动态陷波的做法是每隔十毫秒左右取一段陀螺仪数据做一次快速傅里叶变换,找出当前能量最强的频率,把陷波中心挪过去。油门变化时共振频率会漂,它就跟着漂。转速滤波更精准,靠双向数据回传的实时转速直接算出每个电机的基频和谐波,在这几个频率上各放一个陷波,默认能在三个轴上各铺十二个。两者配合,转速滤波负责电机的部分,动态陷波腾出手来专心对付机架。

陷波的品质因数决定它打得多准也打得多宽。数值小,覆盖范围广,但引入的延迟高。数值大,像狙击枪一样精准,延迟低,可万一频率估偏了就漏。机架干净的话可以把品质因数拉高,拉过头看见漏网的噪声再退回来。

低通滤波的截止频率也可以随油门变化。悬停时电机噪声低,截止频率压低一点,重点去噪。满油门做动作时,真实信号的频率也往上走,截止频率跟着拉高,免得把有用的信息一起滤掉。这个下限一般不低于一百五十赫兹,再往下就把正常的飞行信号也切掉了。

滤波不是越多越好。每加一级都会带来延迟,滤得太狠,手感就发肉,杆打出去机器慢半拍。判断标准有两个,一是飞行后摸电机温度,烫说明噪声还在往里进。二是黑匣子日志,把陀螺仪数据做频谱分析,看滤波后还有没有残留的峰。

黑匣子值得养成习惯。每次飞行都记录,出问题时拿正常和异常的日志对比,比凭感觉调参快得多。看的东西不多,悬停段陀螺仪数据的标准差、快速打杆之后的响应波形、油门事件之后的振荡幅度、微分项有没有异常飙升。日志里还能看出洗桨的严重程度,那是下降过程中气流打乱桨叶造成的振荡。

机械减震是软件滤波的前提。传感器下面垫软胶,飞塔不要硬性顶着机臂,桨叶做动平衡,变形的桨直接换掉。硬件这边干净一分,软件那边就能少滤一层,延迟也就少一点。

调参的合理顺序是先滤波后比例积分微分。滤波没弄对就去调控制参数,等于在噪声上做优化,怎么调都不稳。滤波弄干净了,默认参数往往已经能用,再往上才是精调。有个和直觉相反的经验,现代调参法常常先找微分项的上限,再往上加比例项,因为微分能压住多少噪声,直接决定了比例项最多能推到哪儿。

偏航轴通常比另外两个轴噪声大,它靠的是四台电机的转速差来改变朝向,不像俯仰横滚那样直接由推力差产生。给偏航单独留一层低通,可以把噪声压下去,给另外两个轴腾出更激进的调参空间。

基础校准也不能省。加速度计要把机器水平放好做六面校准,消除安装误差。陀螺仪开机静置几秒让它记零点,这期间碰它一下就得重来。遥控器要做通道映射和行程校准,杆量和输出对应关系不对,后面怎么调都别扭。

安全设置要提前配好。低压报警按单片三点三伏左右设,再低就该强制降落。失控保护决定信号丢失以后是收油门还是自动返航,这个动作不能等出事以后才想。

最后一句实话,大多数所谓飞控问题其实是机械问题。桨不平、螺丝松、减震老化、走线乱压,这些先处理完再谈参数,能省掉好几个小时的无用功。

用手机扫码体验更多功能

扫码参与评论与作者和更多用户交互