一. 引言
飞行是人类孜孜以求的梦想。从庄子的"御风而行"、"扶摇而上"到武侠神鬼小说中的轻功、御剑飞行,各种文字、图腾都满含飞行的朴素理想,据说每个大男孩心中都有一个飞天梦。对于一个理工科的大男孩来说,制造一个飞机恐怕是更有诱惑力吧!网络时代知识共享,开源社区的盛行让这不再是难事,事实上你想学,大把的资源可供利用。当你打开一扇门,展现在你眼前的是一个世界、一个全新的世界,学习不再枯燥痛苦,反而变得那么的生动、有趣。我希望看到我的文章的小伙伴,都能放下对于理论、技术的畏惧,随着兴趣走、随着初心走。我们一起学习、一起进步~
上一篇我写了第一个系列文章《STM32实现四驱小车》,分为五篇完成。从这一篇开始是我的第二个系列文章《STM32实现水下四旋翼》,计划用大概14篇讲好这个故事,希望用更为生动、更为翔实的内容与表述,呈现稍稍复杂的理论与代码。如果认真看过我的《STM32实现四驱小车》系列文章,会发现新的水下四旋翼系列文章与小车系列非常相似。事实上,如我之前所说,水下四旋翼与小车是同一套代码框架,它们是一个递进关系。为了让我的文章都更为独立,部分内容可能与之前重复,如果有小伙伴发现了见谅哈。
初步拟定的文章序列为(更新的章节可以点击链接直达):
- STM32实现水下四旋翼(一)飞行原理
- STM32实现水下四旋翼(二)硬件清单与软件设计
- STM32实现水下四旋翼(三)通信任务——遥控器SBUS通信
- STM32实现水下四旋翼(四)传感任务1——姿态解算原理篇
- STM32实现水下四旋翼(五)自定义航行数据
- STM32实现水下四旋翼(六)传感任务2——姿态解算代码篇
- STM32实现水下四旋翼(七)传感任务3——水深数据读取(使用MS5837水深传感器)
- STM32实现水下四旋翼(八)传感任务4——电池电量检测
- STM32实现水下四旋翼(九)飞行控制任务1——姿态角串级PID控制
- STM32实现水下四旋翼(十)飞行控制任务2——电机混控(控制分配)
- STM32实现水下四旋翼(十一)飞行控制任务3——定深控制
- STM32实现水下四旋翼(十二)数传任务1——PID参数掉电保存
- STM32实现水下四旋翼(十三)数传任务1(基于LabWindowsCVI)——通信协议
- STM32实现水下四旋翼(十四)数传任务2(基于LabWindowsCVI)——下行数据
- STM32实现水下四旋翼(十五)数传任务3(基于LabWindowsCVI)——上行数据
二. 常见飞行器分类
常见的小型飞行器主要分为三类,如图所示
固定翼飞行器:固定翼飞机由推力系统产生前向的空速,当飞机高速前进时,由于气流作用在翼面上产生升力从而平衡飞行器的重力。固定翼依靠水平舵面、垂直舵面(副翼、水平尾翼、垂直尾翼等)的掠角调节滚转运动、俯仰运动以及偏航运动,航向通常是滚转和俯仰运动组合来调节。固定翼飞行器的优点是结构简单、飞行距离更长、耗能更少,缺点是起飞和降落时需要跑道或弹射器,不能垂直起降。
单旋翼直升机:直升机是一种升力由旋翼直接提供的旋翼飞行器。单旋翼直升机有四个控制输入,分别是周期变距杆、总距操纵杆、脚蹬和油门,其中总距操纵杆控制旋翼的迎角(或攻角)。为了解决单个旋翼旋转时对直升机造成的自旋效应,通常在尾部增加水平桨来抵消自旋,在转弯时也可以通过尾桨增加扭矩。单旋翼直升机的优点是垂直起降,缺点是续航时间短,机械结构复杂、维护困难、飞行速度慢。
多旋翼飞行器:多旋翼飞行器可以看成一类有三个或者更多螺旋桨的直升机,同时具有垂直起降的能力,最常见的是四旋翼。四旋翼通过控制旋翼的转速从而实现升力的快速调节,多旋翼结构具有对称性,所以螺旋桨之间的反扭矩可以相互抵消。多旋翼与四旋翼的区别只在于拉力和力矩分配给每个螺旋桨的方法不同,本质上是一样的。多旋翼的优点是操纵简单、可靠性高、维护成本低、可垂直起降,缺点是承载和续航时间差。
目前多旋翼飞行器非常流行,算法相对成熟,可以快速构建起软件和硬件方案。本系列文章就基于四旋翼的原理设计制作一个四旋翼水下航行器。
三. 四旋翼的飞行控制
如图的X型布局,按照顺时针的顺序将四个旋翼编号为1、2、3、4,虚线表示旋翼的旋转方向。后面我统一用顺时针旋转(CW)与逆时针旋转(CCW)表述了(很多地方用正桨或者反桨描述螺旋桨与旋转方向,我一直没搞懂哪个是正哪个是反,晕)。当旋翼旋转时,会对机身产生一个与旋转方向相反的反扭力。由于多旋翼正反桨是对称安装,反扭力可以相互抵消。在理想情况下,假设当前四个旋翼转速相同,拉力相等,总拉力刚好抵消重力,四旋翼处于悬浮状态。
上下运动: 同时同量增加四个螺旋桨的转速,则螺旋桨的总拉力增大,但是总力矩仍然是零。当拉力大于重力时,四旋翼会加速上升,当同时同量减小四个螺旋桨的转速,总拉力小于重力时,四旋翼会下降。
前后运动:同量增加2号和3号的转速,同时同量减小1号和4号的转速,则后面的拉力大于前面的拉力,四旋翼向前俯仰(低头),总拉力产生向前的分量。与此同时,拉力的垂直分量会减小,将不再等于多旋翼的重力,因此需要同量增加四个螺旋桨的转速来补偿重力,从而实现多旋翼水平向前飞行运动。同理,可以实现向后水平飞行。
左右运动:同量减小1号和2号的转速,同时同量增加3号和4号的转速,机身将向右滚转,然后总拉力产生向右的分量。与此同时,拉力的垂直分量会减小,将不再等于多旋翼的重力,因此需要同量增加四个螺旋桨的转速来补偿重力,从而实现多旋翼水平向右飞行运动。同理,可以实现向左水平飞行。
偏航运动:同量增加1号和3号的转速,同时同量减小2号和4号的转速,此时顺时针的扭矩会增加,逆时针的扭矩会减小,总扭矩为顺时针,四旋翼将会顺时针旋转。此时总拉力没有改变,不会产生上下运动。同理,可以实现逆时针水平旋转。
四. 一点解释:为什么写水下四旋翼要写飞行原理
那么为什么写水下四旋翼要写飞行原理呢,我们大可以把水下航行器在水中的运动类比于无人机在空中的运动,除了水和空气的阻力、升力系数不同之外,它们的性质是一样的,算法完全可以通用。想看四旋翼设计与实现的不要划走哦,你会发现都是通用的。当然,水和空气两种流体的性质截然不同,决定了水下四旋翼和空中四旋翼的控制效果和操纵性能是大不相同的,这一点后面我会介绍。下一篇我们介绍搭建水下航行器需要的硬件和软件准备。