直升机的一揽子:从控制到性能估算
徐枭涵 2020-1-16原创 航空技术
关键词
无人机直升机控制px4

一直对直升机颇有兴趣,之前在知乎上也写过一些直升机相关的文章,最近打算认真做一个进行无人机集群的试验。四轴做试验飞行时间实在是太痛苦叻

把实验室一台落灰许久的泰世 X3电直折腾了起来,装了个飞控,娱乐时间拿来折腾下直升机飞控算个消遣,倒是可以实现手动姿态-高度控制和GPS悬停了。对于这个问题,也有了一番体会。


这篇文章写完是个大工程,我以后抽空更新吧。


首先声明,此文章只能代表我最近大半个月忙里偷闲对直升机的经验,也算是自己小小的一个总结,我对小型电动直升机也是十足的新手。此文章仅仅描述的是和常见的小型多旋翼飞行器(phantom比如)相近的一千克左右量级的小型电子直升机。而答主浅薄的经验也只是片面之词,诸位仅供参考。欢迎有经验人士查漏补缺
我们用于实验的飞机尺寸参数如下

image.png


把450级别的小电直控起来,变成一架无人机,并非是一件太难的事情。


我们在谈论控制的时候,一般很少谈论的是控制本身,而是和控制相关的一揽子:观测,规划与控制。而这三者其实最简单的反倒是控制本身。


在实践中,多旋翼的飞行控制会被分成几个模块,用于位置控制的位置和速度控制器,他们的输出一般是飞机给定的姿态与油门量。(btw,固定翼一般是没有XY平面速度的控制器的,直接从位置输出到姿态)


姿态控制


首先说明,我自己的姿态控制器是在px4的mc_att_control(PX4/Firmware)基础上修改而来,代码在我的github上,文后有链接。

首先说,直升机和多旋翼控制最大的不同在于多旋翼基本上使用螺旋桨转速控制一切,而直升机主旋翼转速是固定的,靠旋翼和尾翼攻角的改变控制。从此带来的一系列问题。

用于多旋翼飞行器或者小型固定翼无人机姿态的控制器则分为内环和外环,内环是角速度控制,外环为姿态控制。(名词暂时不做具体解释,等有空了再写成科普)。而这个里面真正需要大量调节的其实是姿态控制器的内环角速度环,还有位置控制器的速度环。因为这两个是和飞机动态最相关的。

直升机和多旋翼飞机有类似的动力学特性(虽然事实上因为陀螺效应的原因直升机的控制力矩和真实偏转的姿态方向有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控制器甚至不需要前馈就可以处理的很好。)

直升机上会转变飞机控制灵敏度的是旋翼转速,当旋翼转速增加后,我们通过调小总距获得悬停,会发现有可能本来能控制的非常稳定的姿态开始震动,这是因为转速增加后因为使用旋翼角度来产生的控制力矩会二次方跟着转速增加。直升机的高度控制通过总距(也是旋翼角度)来实现,也会变得非常灵敏。而直升机的尾桨一般使用齿轮或者皮带和主桨联动,灵敏度也会二次方增加。

所以在直升机通过改变总距获得推力时,pid参数不应发生改变;改变转速后,pid参数应该集体变小。


高度油门控制


前文提到,直升机的高度(油门)控制和多旋翼有本质的不同,在(无论是油动还是电动)直升机上,人们更新使用固定桨速的旋翼,通过改变电直的旋翼攻角(总距)来改变总的推力。

对于电直而言,首先这要求了有定速能力的电子调速器。

(好盈的定速电调,良心到不需要打广告)
一般的航模电调控制量对应于螺旋桨的反向力矩,而电压下降后功率转速都会下降,载荷下降后转速会上升。我在一段时间内使用好盈的固定翼电调控制直升机(无定速功能),在使用中,仅仅听声音就可以听出来在总距减小后由于负载减小,直升机的旋翼转速上升的很明显。这对高度控制是极为不利的。当然有人问是不是可以直接控制转速来控制升力,最大的问题在于直升机的旋翼尺寸大,加速减速都较慢,达不到控制要求。远不如特性良好的舵机。

好在一套40-60A好盈的定速电调也就两三百人民币,足够使用。当使用定速电调后,无论电池电压下降还是总距增加旋翼负载增加,定速电调内置的PID控制器都会努力把转速维持在一个统一的大小。

于是在使用中,我们只需要控制总距就可以改变升力大小。总距的改变也就是直接拉三个舵机即可。
所以在飞行控制中,直升机转速可以是给定的,或者可以由旋钮给出。像我会习惯性使用一个固定的旋翼转速大小,因为在实测中这个旋翼转速和总距搭配可以得到较低的悬停功率。
所以在编写飞控的时候,需要拆开桨速和总距,px4原有的actuator_control(3)通道因为有解锁机制保护还是应该对应于螺旋桨转速,但是这个值应该是固定或者由rc的辅助通道输入,仅仅需要解锁机制保护即可,而总距却应该和thrustsp对应。

另一个问题是,直升机主桨带来的气流和压差会对气压计的高度估计造成大的唯一。
在实践中,发现如此修改后,px4的默认高度控制器足以稳定直升机的高度(而且表现相当惊艳),旋翼对气压计的干扰由于也较为稳定(主要还是pixhawk 2.1的cube气压计做得好)没有让飞机的高度无法控制。


https://github.com/xuhao1/firmware_heli 是我的px4直升机飞控修改版,在gaui x3上飞的很好,能够在室外大风环境下悬停。



最近在设计一架完全使用电机直驱的直升机,用于集群研究,之后会更新相关的文章在这里,这次就先谈到控制吧。

之后主要要试一下在直升机上使用VIO(视觉惯性里程计),并且把直升机改装成一个真正的自主飞行平台。

2020-1-16.png


[修改于 1 个月前 - 2020-01-19 16:48:32]

来自:航天航空 / 航空技术

想参与大家的讨论?现在就 登录 或者 注册

插入资源
全部
图片
视频
音频
附件
全部
未使用
已使用
正在上传
空空如也~
上传中..{{f.progress}}%
处理中..
上传失败,点击重试
{{f.name}}
空空如也~
(视频){{r.oname}}
{{selectedResourcesId.indexOf(r.rid) + 1}}
插入表情
我的表情
共享表情
Emoji
上传
注意事项
最大尺寸100px,超过会被压缩。为保证效果,建议上传前自行处理。
建议上传自己DIY的表情,严禁上传侵权内容。
点击重试等待上传{{s.progress}}%处理中...已上传
空空如也~
草稿箱
加载中...
此处只插入正文,如果要使用草稿中的其余内容,请点击继续创作。
{{fromNow(d.toc)}}
{{getDraftInfo(d)}}
标题:{{d.t}}
内容:{{d.c}}
继续创作
删除插入插入
{{forum.displayName}}
{{forum.countThreads}}
篇文章,
{{forum.countPosts}}
条回复
{{forum.description || "暂无简介"}}
ID: {{user.uid}}
{{submitted?"":"投诉"}}
请选择违规类型:
{{reason.description}}
支持的图片格式:jpg, jpeg, png