微小型电动直升机无人机初探
上周刚刚给px4折腾了个直升机模式。现在可以自豪的宣称,固定翼多旋翼直升机的控制我都写过了。倒是大约是稍稍有点资格回答一下这个问题了。(先挖坑)
首先开宗明义,直升机无人机在小型(100kg更大)无人机上远比多旋翼常见的多。但在微小型无人机,也就是几千克十几千克却很罕见。
其实之前我也很困惑这个事情,比如确确实实的直升机在续航效率上有优势,老生常谈的安全性也主要是桨的大小,在非日常场景下,这可能也不是问题的关键。至于控制–据说很难?
于是把实验室一台落灰许久的泰世 X3电直折腾了起来,装了个飞控,自己找找答案算是。
娱乐时间拿来折腾下直升机飞控算个消遣,倒是可以实现手动姿态-高度控制和GPS悬停了。对于这个问题,也有了一番体会。
这篇文章写完是个大工程,我以后抽空更新吧。
首先声明,此回答只能代表我最近大半个月忙里偷闲对直升机的经验,也算是自己小小的一个总结,我对小型电动直升机也是十足的新手。此回答仅仅描述的是和常见的小型多旋翼飞行器(phantom比如)相近的一千克左右量级的小型电子直升机。而答主浅薄的经验也只是片面之词,诸位仅供参考。欢迎有经验人士查漏补缺
尺寸参数如下

零,电直简介
(以后填坑)
一,控制与导航
(以下段落适合对电直有基本了解的人阅读,没有的话请参考段落零,自行脑补或者等更新)
首先是一个可以下的结论,把450级别的小电直控起来,变成一架无人机,并非是一件太难的事情。
我们在谈论控制的时候,一般很少谈论的是控制本身,而是和控制相关的一揽子:观测,规划与控制。而这三者其实最简单的反倒是控制本身。
在实践中,多旋翼的飞行控制会被分成几个模块,用于位置控制的位置和速度控制器,他们的输出一般是飞机给定的姿态与油门量。(btw,固定翼一般是没有XY平面速度的控制器的,直接从位置输出到姿态)
姿态控制
首先说明,我自己的姿态控制器是在px4的mc_att_control(PX4/Firmware)基础上修改而来,代码等我调整的感觉更加满意了再放出来。
首先说,直升机和多旋翼控制最大的不同在于多旋翼基本上使用螺旋桨转速控制一切,而直升机主旋翼转速是固定的,靠旋翼和尾翼攻角的改变控制。从此带来的一系列问题。
用于多旋翼飞行器或者小型固定翼无人机姿态的控制器则分为内环和外环,内环是角速度控制,外环为姿态控制。(名词暂时不做具体解释,等有空了再写成科普)。而这个里面真正需要大量调节的其实是姿态控制器的内环角速度环,还有位置控制器的速度环。因为这两个是和飞机动态最相关的。
直升机和多旋翼飞机有类似的动力学特性(虽然事实上因为陀螺效应的原因直升机的控制力矩和真实偏转的姿态方向有90度的相位差,还有十分复杂的挥舞问题,但在悬停状态下表现的特性十分接近),在SO(3)空间内完全可控的姿态(也就是你可以让飞机在空中保持任何你保持的姿势,传统意义上的固定翼飞行器则不行)。在实践中,我发现几何上有一点复杂性的SO(3)控制直升机可以完全沿用多旋翼的控制器。也就是一个SO3上的角度差的P控制器足以解决问题。
关于姿态控制可以参考 @YY硕 的论文
多旋翼姿态控制时先tilt再torsion有什么好处? – YY硕的回答 – 知乎 https://www.zhihu.com/question/61819700/answer/191420312
有所不同的是在角速度控制上面,本身角速度控制是一个简单的PID控制器,分别控制飞机的roll pitch yaw的旋转,控制率本身没什么好说的。
不同的是
一则,是直升机的螺旋桨旋转会带来巨大的陀螺仪噪音,根据转速不同有变化,比如我的Gaui X3使用1880kv,4s电池在70%的转速飞行,大约是36hz的额外噪音,需要使用滤波器剔除掉。而如果使用的飞控减震效果不好的话,巨大的噪音会直接把姿态估计搞歪(比如使用pixhawk1的话roll会歪30度,使用内置减震的pixhawk 2.1则无此问题)。这虽然不是控制问题,但观测不足带来的系统控制偏差比控制器调的烂其实更严重。
二是,对于无论多旋翼还是固定翼而言,总推力值的改变都会带来飞机三轴灵敏度的改变。需要针对不同的油门情况改变角速度的控制参数。
不同的是直升机的油门控制被拆分为总距(定速情况下可以理解为旋翼的平均角度)和旋翼转速。而旋翼转速在飞行中是固定不变的。
对于多旋翼而言,thrust油门量的改变会直接放大roll pitch 控制量的灵敏度(因为控制量是线性叠加到油门量上,而电子调速器的性质下推力和油门量的关系是非线性)yaw则不会受到影响,因为电子调速器的控制量对应的是线性的螺旋桨反力矩。和yaw控制力矩的产生是线性的。
所以在mc_attcontrol中,有一个pid_attenuations的函数用于在thrust增加时减小roll pitch的pid参数的大小。
对于直升机而言,这个关系完全不同。直升机的推力改变有两种方式(请参阅推力控制部分),其中总距的改变并不会造成roll pitch 灵敏度的改变–因为总距也好roll pitch 的控制量也好都来自主旋翼攻角的改变。主旋翼作为一块旋转的机翼,在失速前升力对攻角当然是线性的。
但总距的改变会带来额外的yaw反力矩,从而造成改变的yaw力矩(不过调好的yawrate的pid控制器甚至不需要前馈就可以处理的很好。)
直升机上会转变飞机控制灵敏度的是旋翼转速,当旋翼转速增加后,我们通过调小总距获得悬停,会发现有可能本来能控制的非常稳定的姿态开始震动,这是因为转速增加后因为使用旋翼角度来产生的控制力矩会二次方跟着转速增加( dL = \frac{1}{2}\rho (\omega r)^2 C_L(\alpha)dS )。直升机的高度控制通过总距(也是旋翼角度)来实现,也会变得非常灵敏。而直升机的尾桨一般使用齿轮或者皮带和主桨联动,灵敏度也会二次方增加。
所以在直升机通过改变总距获得推力时,pid参数不应发生改变;改变转速后,pid参数应该集体变小。
高度油门控制
前文提到,直升机的高度(油门)控制和多旋翼有本质的不同,在(无论是油动还是电动)直升机上,人们更新使用固定桨速的旋翼,通过改变电直的旋翼攻角(总距)来改变总的推力。
对于电直而言,首先这要求了有定速能力的电子调速器。
(好盈的定速电调,良心到不需要打广告)
一般的航模电调控制量对应于螺旋桨的反向力矩,而电压下降后功率转速都会下降,载荷下降后转速会上升。我在一段时间内使用好盈的固定翼电调控制直升机(无定速功能),在使用中,仅仅听声音就可以听出来在总距减小后由于负载减小,直升机的旋翼转速上升的很明显。这对高度控制是极为不利的。当然有人问是不是可以直接控制转速来控制升力,最大的问题在于直升机的旋翼尺寸大,加速减速都较慢,达不到控制要求。远不如特性良好的舵机。
好在一套40-60A好盈的定速电调也就两三百人民币,足够使用。当使用定速电调后,无论电池电压下降还是总距增加旋翼负载增加,定速电调内置的PID控制器都会努力把转速维持在一个统一的大小。
于是在使用中,我们只需要控制总距就可以改变升力大小。总距的改变也就是直接拉三个舵机即可。
所以在飞行控制中,直升机转速可以是给定的,或者可以由旋钮给出。像我会习惯性使用一个固定的旋翼转速大小,因为在实测中这个旋翼转速和总距搭配可以得到较低的悬停功率。
所以在编写飞控的时候,需要拆开桨速和总距,px4原有的actuator_control(3)通道因为有解锁机制保护还是应该对应于螺旋桨转速,但是这个值应该是固定或者由rc的辅助通道输入,仅仅需要解锁机制保护即可,而总距却应该和thrustsp对应。
另一个问题是,直升机主桨带来的气流和压差会对气压计的高度估计造成大的唯一。
在实践中,发现如此修改后,px4的默认高度控制器足以稳定直升机的高度(而且表现相当惊艳),旋翼对气压计的干扰由于也较为稳定(主要还是pixhawk 2.1的cube气压计做得好)没有让飞机的高度无法控制。
位置控制(悬停)
对于旋翼类飞行器来说,悬停是绝大部分需要处理的情况。而如果姿态控制稳定了,那么悬停并非难事,无非是使用推力矢量调节加速度–前提是不要求达到mavic那样变态的定位精度。配置良好的直升机姿态控制器结合多旋翼固有的pos control就可以达到gps定位的效果。
不同的是直升机对风的敏感性远超我的预期。
位置控制(高速前飞,突风)
直升机和多旋翼控制最大的不同在应是在高速前飞的控制上。(干活去了,未完待续)
二,机械维护
三,负载能力和续航
四,安全性与稳定性
五,成本