四旋翼飞行器控制入门:5分钟搞懂欧拉角与PWM调参的关系
第一次拿到一个微型四旋翼飞行器,比如那个小巧的TinyLeaf,看着它嗡嗡起飞,心里除了兴奋,多半还会冒出一堆问号:我动一下遥控器摇杆,它怎么就听话地前倾、侧身、转向了呢?这背后其实是一场精密的“数字舞蹈”,主角是两个听起来有点技术范儿的概念:欧拉角和PWM。很多人一看到数学公式和物理模型就头疼,觉得离自己太远。但今天,我想带你换个视角,用最生活化的比喻和一次真实的调参实验,把这两个概念掰开揉碎,让你在5分钟内建立起清晰的直觉,甚至能自己动手,让这个小家伙乖乖听话。
想象一下,你正操控着你的四轴飞行器。当你希望它向前飞时,你推动遥控器的“升降舵”(通常对应前进后退),飞行器便机头下沉,向前行进。这个“机头下沉”的动作,就是俯仰角的变化。当你希望它向左平移时,你推动“副翼”,飞行器便向左倾斜,这就是横滚角的变化。而当你希望它原地转向时,你扭动“方向舵”,飞行器便绕垂直轴旋转,这就是偏航角的变化。这三个角度——俯仰、横滚、偏航——合起来就是欧拉角,它们完整地描述了飞行器在三维空间中的“姿态”,或者说“身体朝向”。理解欧拉角,就是理解你给飞行器下达的每一个姿态指令到底意味着什么。
那么,飞行器是如何执行这些姿态指令的呢?这就轮到PWM登场了。PWM,脉冲宽度调制,听起来复杂,其实可以看作一个“智能开关”。它控制着连接四个空心杯电机的电路,通过快速、有规律地开关,来调节平均到电机上的电压,从而精准控制每个电机的转速。四个螺旋桨的转速组合,直接决定了升力的大小和分布,最终转化为我们想要的姿态变化。所以,欧拉角是我们想要达到的“目标姿态”,而PWM是我们手中调节四个电机、实现这个目标的“唯一工具”。搞懂它们之间的关系,就是从“看它飞”到“懂它为何飞”、“让它按我想要的飞”的关键一步。这篇文章,就是为你搭建这座桥梁,我们会用TinyLeaf作为实操案例,一步步拆解这个控制链条。
1. 从身体语言到飞行指令:欧拉角的直觉化理解
在深入技术细节前,让我们彻底抛弃复杂的坐标系和旋转矩阵,用最直接的“身体感知”来建立对欧拉角的直觉。这能让你在后续调参时,脑子里有一个清晰的画面。
1.1 你的头就是最好的飞行模拟器
请坐直,目视前方。现在,把你的头想象成四旋翼飞行器的机身,你的视线方向就是机头的指向。
- 点头 (Pitch - 俯仰角):向前低头,你的视线看向地面;向后仰头,你的视线看向天花板。这个绕着你左右耳连成的轴(横轴)的旋转,就是俯仰。飞行器“点头”,机头下沉,就会获得向前的水平分力,从而前进;“仰头”则后退。
- 摇头 (Yaw - 偏航角):保持头部水平,向左或向右转动你的脸。这个绕着你头顶到下巴的轴(垂直轴)的旋转,就是偏航。它改变的是飞行器的水平朝向,但不直接产生平移。
- 左右摆头 (Roll - 横滚角):想象用耳朵去够同侧的肩膀,让头部向一侧倾斜。这个绕着你鼻尖到后脑勺的轴(纵轴)的旋转,就是横滚。飞行器向左“摆头”(左侧机翼下沉),就会获得向左的水平分力,从而向左平移。
注意:这个“点头-摇头-摆头”的比喻在航模和无人机领域非常通用,但它与你头部的解剖学旋转轴并非严格一一对应。重点是建立角度变化与飞行器运动趋势的直觉关联。
通过这个简单的模拟,你应该能立刻反应出来:想让飞行器前进,就需要产生一个正的俯仰角(机头向下);想让它左移,就需要一个正的横滚角(左侧向下)。欧拉角就是飞行控制器(飞控)内部用来设定和追踪这些目标姿态的数学语言。
1.2 姿态的度量与传感器感知
飞行器自己如何知道当前的欧拉角呢?这依赖于机载的惯性测量单元(IMU),其核心是一个陀螺仪和一个加速度计。
- 陀螺仪:测量机体绕三个轴旋转的角速度(单位:度/秒)。通过对角速度进行积分(累加),可以估算出角度变化。但它存在漂移误差,时间一长,估算的姿态会越来越不准。
- 加速度计:测量机体在三个轴上的线性加速度。当飞行器静止或匀速运动时,加速度计测得的重力矢量方向可以用来反推姿态角。但它对振动和运动加速度非常敏感。
因此,现代飞控(如TinyLeaf使用的算法)会通过传感器融合算法(如互补滤波、卡尔曼滤波)将陀螺仪的短期精度和加速度计的长期稳定性结合起来,实时解算出相对准确的滚转角和俯仰角。而偏航角由于没有直接的重力参考,通常需要结合磁力计(电子罗盘)的数据来校正,否则会随着时间严重漂移。
下面的表格概括了这三个角度的核心信息:
| 欧拉角 | 生活化比喻 | 旋转轴(相对于机体) | 主要影响运动 | 主要测量传感器 |
|---|---|---|---|---|
| 俯仰角 (Pitch) | 点头 | 左右轴 (X轴) | 前进/后退 | 陀螺仪 + 加速度计 |
| 横滚角 (Roll) | 左右摆头 | 前后轴 (Y轴) | 左侧移/右侧移 | 陀螺仪 + 加速度计 |
| 偏航角 (Yaw) | 摇头 | 垂直轴 (Z轴) | 原地转向 | 陀螺仪 + 磁力计 |
理解了飞行器“知道自己姿态”的原理,我们接下来就要看它如何“改变姿态”。
2. 动力之源:PWM如何驯服空心杯电机
姿态的改变,归根结底源于力的不平衡。对于四旋翼,这个力就是四个螺旋桨产生的升力。而控制升力大小的“阀门”,就是PWM对空心杯电机的驱动。
2.1 空心杯电机与PWM调速原理
像TinyLeaf这类微型四轴,普遍采用720或8520等型号的空心杯有刷电机。它们体积小、重量轻、转速高,但扭矩相对较小。这类电机只有两根线,电压越高,转速越快(在负载一定的情况下)。但我们不能直接给电机接一个可调电源来无级变速,那样电路会非常复杂且低效。
于是,PWM技术登场了。它的核心思想是:用数字开关的通断时间来模拟平均电压。
假设电池电压是3.7V。如果我们让连接电机和电池的开关(通常是MOSFET管)在一秒钟内,只有0.5秒是接通的,另外0.5秒是断开的,那么电机“感受到”的平均电压就是3.7V * (0.5s / 1s) = 1.85V。这个导通时间占整个周期的比例,就是占空比。占空比从0%(一直关闭)到100%(一直开启),对应平均电压从0V到电池满电压,从而实现了对电机转速的平滑控制。
一个典型的PWM信号波形和对应的电机平均电压关系如下:
高电平(导通)时间
|----------|
| |
| |________________
| |
|<- 一个周期 T ->|
占空比 D = 高电平时间 / T
平均电压 V_avg = 电池电压 * D
在代码中,我们通过微控制器(如STM32)的定时器模块来生成精确的PWM波。例如,设置定时器频率为1kHz(周期T=1ms),通过改变一个叫做“捕获/比较寄存器”的值来调整高电平时间。这个寄存器的值就是我们常说的 “PWM值” ,它直接决定了占空比。
// 伪代码示例:设置TIM1通道1的PWM占空比
// 假设定时器ARR(自动重装载值)为1000,则CCR1的值即为占空比(千分之几)
void Motor_SetPWM(uint16_t pwm_value) {
if (pwm_value > 1000) pwm_value = 1000; // 限制上限
TIM1->CCR1 = pwm_value; // 写入比较寄存器,改变占空比
}
// 调用 Motor_SetPWM(500); 即设置50%占空比
2.2 电机驱动电路简析
微控制器引脚输出的PWM信号电流驱动能力很弱,无法直接驱动电机。因此需要一个驱动电路,通常由MOSFET构成。PWM信号控制MOSFET的栅极,使其快速开关,从而控制电机两端电压。TinyLeaf这类设计,为了简化,四个电机通常采用共地方式,每个电机使用一个N-MOSFET进行低边驱动。
提示:在选购或设计驱动电路时,务必确保MOSFET的导通电阻足够小,能承受电机的堵转电流(可能高达数安培),否则MOSFET会严重发热甚至烧毁。这是很多DIY项目第一个容易踩的坑。
至此,我们掌握了工具:PWM值 -> 电机转速 -> 螺旋桨升力。接下来,就是最激动人心的部分:如何编排四个电机的“舞蹈”,来合成我们想要的姿态。
3. 编排舞蹈:从目标欧拉角到四个PWM值的映射
这是整个控制逻辑的核心,也是初学者从理论迈向实践必须跨越的一步。我们不需要复杂的矩阵运算,而是用“杠杆”和“扭矩”的物理直觉来理解。
3.1 四旋翼的“升力杠杆”模型
将四旋翼的四个电机看作固定在十字架四个端点的“力发生器”。十字架的中心是飞行器的重心。
- 升降控制(高度):这是最简单的。同时增加四个电机的PWM值,总升力大于重力,飞行器上升;同时减小,则下降。这可以看作四个力的“共模”增减。
- 俯仰控制(前后):想象飞行器要“点头”向前。你需要让后面的两个电机加速(增加PWM),前面的两个电机减速(减小PWM)。这样,后方的升力大于前方,形成一个使机头下压的力矩,飞行器便产生俯仰角。这个力矩来源于前后电机升力的“差模”。
- 横滚控制(左右):原理同俯仰。要向左倾斜,就让右侧的两个电机加速,左侧的两个电机减速,形成向左滚转的力矩。
- 偏航控制(转向):这个最有趣。它利用的是螺旋桨旋转时产生的反扭矩。根据牛顿第三定律,电机带动螺旋桨朝一个方向旋转,机身会受到一个相反方向的扭矩。在X型布局中,对角线上的一对电机正转,另一对反转。要原地左转,就增加正转电机的转速,同时降低反转电机的转速。这样,正反转扭矩之和不为零,产生了净偏航力矩。
我们可以用一个简单的“混控”公式来概括这个映射关系。假设四个电机按顺时针编号为M1(右前)、M2(左前)、M3(左后)、M4(右后),且M1、M3逆时针转(正桨),M2、M4顺时针转(反桨)。飞控计算出的基础油门为 Throttle,根据目标姿态与当前姿态的误差计算出的修正量为 Pitch_Correction, Roll_Correction, Yaw_Correction。那么每个电机的最终PWM输出可以这样计算:
M1_PWM = Throttle - Pitch_Correction + Roll_Correction + Yaw_Correction
M2_PWM = Throttle - Pitch_Correction - Roll_Correction - Yaw_Correction
M3_PWM = Throttle + Pitch_Correction - Roll_Correction + Yaw_Correction
M4_PWM = Throttle + Pitch_Correction + Roll_Correction - Yaw_Correction
注意:这里的正负号取决于你的电机布局、转向定义和坐标系约定。上述公式是X型布局的一种常见形式。在实际的飞控代码中,会有一个明确的“混控器”函数来完成这个计算。
3.2 引入PID控制器:让姿态稳定下来
上面提到的 Pitch_Correction 等修正量是如何计算的呢?这就是PID控制器的舞台。PID是让飞行器姿态能够快速、平稳、准确地达到目标的关键。
飞控不断测量当前的欧拉角,并与目标欧拉角(来自遥控器或自主航线)进行比较,得到角度误差。PID控制器根据这个误差计算出需要施加的“修正力”:
- P(比例):误差越大,修正力越大。这是最主要的恢复力,但纯P控制容易产生振荡。
- I(积分):累积历史误差,用于消除静态误差(例如,由于电池电压下降或轻微不平衡导致的姿态漂移)。
- D(微分):根据误差变化率(即角速度)进行阻尼,抑制振荡,让姿态平稳趋近目标。
Pitch_Correction = Kp * 角度误差 + Ki * 误差积分 + Kd * 角速度
这个计算出的 Pitch_Correction 就是一个力矩量,通过前面的混控公式,被分解到四个电机的PWM增减上。调参的本质,就是调整这一组Kp, Ki, Kd参数,找到最适合你这款飞行器(包括其重量、电机响应、桨叶特性)的控制器增益。
4. TinyLeaf实机调参案例:从摇晃到稳如磐石
理论说再多,不如动手调一次。下面我以TinyLeaf为例,分享一次典型的内环姿态PID调参过程。这个过程充满了试探和观察,也是玩四轴最大的乐趣之一。
准备工作:
- 确保TinyLeaf固件支持通过地面站(如Cleanflight Configurator, Betaflight Configurator)实时调整PID参数并观察响应。
- 将飞行器用扎带或夹具安全地固定在测试台上,桨叶可以装上,但务必确保它无法飞起来伤人。
- 连接地面站,打开实时数据图表,重点观察“陀螺仪数据”(角速度)和“姿态角”曲线。
4.1 调参步骤与观察
我们通常从横滚轴或俯仰轴开始,两者对称,调好一个另一个照搬。偏航轴单独调。
- 重置为默认参数:从一组保守的默认PID开始。
- 先调P(比例)增益:
- 在遥控器上轻轻打一下横滚杆然后回中,模拟一个阶跃指令。
- 观察姿态角曲线。如果飞行器反应迟钝,缓慢地倾斜然后慢慢回正,说明 P值太小。逐渐增大
Roll_P。 - 如果飞行器快速倾斜并回正,但在目标位置附近来回振荡几次才停下,说明 P值过大。需要减小
Roll_P。 - 目标:找到一个临界点,使得飞行器能快速响应打杆,一次摆动后能干净利落地停在目标角度附近,没有或只有极轻微的一次过冲。这时的手感应该是“跟手”且不“贼”。
- 再调D(微分)增益:
- 在合适的P值下,你可能发现飞行器在停止时仍有高频的、小幅度的抖动(不是低频振荡)。这是需要D增益来阻尼的。
- 逐渐增大
Roll_D。你会发现抖动逐渐消失,手感变得更“扎实”和“柔和”。但D值过大会引入高频噪声,甚至可能因为放大电机振动而导致电机发热。务必监听电机声音,变得尖锐刺耳就是D过大的信号。
- 最后调I(积分)增益:
- 给飞行器一个持续的微小外力(比如用手指轻轻推一下并保持),观察姿态角。
- 如果松手后,飞行器能回到水平,但保持推力时无法抵抗外力而保持倾斜,说明存在静态误差,需要 I增益。
- 逐渐增大
Roll_I,直到飞行器在受到持续小推力时,能努力对抗并试图回到水平位置。I值不能太大,否则会导致“积分饱和”,在快速打杆后出现明显的回弹或“抽动”。
- 偏航轴调参:偏航轴没有重力作为恢复力,其P增益通常比横滚/俯仰小很多。调参方法类似,主要观察打舵时转向的速率和停止时是否干脆,有无左右摇摆。偏航轴的D增益非常重要,用于抑制停止时的晃动。
4.2 参数调整记录表示例
在调参过程中,做好记录非常有助于复盘。下面是一个简化的记录表示例:
| 调参轮次 | P值 | I值 | D值 | 现象描述 | 结论与调整 |
|---|---|---|---|---|---|
| 初始 | 4.0 | 0.03 | 2.0 | 打杆响应慢,回正迟缓 | P值不足 |
| 第1次 | 6.0 | 0.03 | 2.0 | 响应变快,但有明显过冲和一次振荡 | P值稍大,需微调 |
| 第2次 | 5.5 | 0.03 | 2.0 | 响应迅速,过冲很小,基本一次到位 | P值接近最优 |
| 第3次 | 5.5 | 0.03 | 5.0 | 高频抖动消失,手感沉稳,电机声音正常 | D值增加有效 |
| 第4次 | 5.5 | 0.06 | 5.0 | 施加侧向力后,恢复能力增强,无不良反应 | I值适当增加 |
4.3 试飞与微调
台架调参只是第一步,最终检验必须在安全、开阔的户外场地进行试飞。
- 悬停观察:起飞至腰高,观察是否在无操作下自主漂移。如果朝一个方向持续漂,可能是机体机械不平衡或加速度计需要校准。
- 打杆响应:进行小幅度的横滚、俯仰、偏航操作,感受手感是否跟手、平滑、无延迟。
- 回中稳定性:打杆后快速回中,观察飞行器能否迅速、平稳地停止,没有“点头”或“摇晃”。
- 抗风性:在微风中悬停,观察飞行器能否较好地抵抗阵风扰动。
根据试飞感受,再回到地面站对PID进行最后的微调。可能需要在P增益和D增益之间做权衡:追求极致敏捷性可以适当提高P、降低D;追求拍摄的平稳性则需要适中的P和较高的D。
调参从来不是一蹴而就的,也没有一套“万能参数”。每一架飞行器,甚至同一架飞行器更换了桨叶或电池,都可能需要细微的调整。这个过程,正是你与你的飞行器“对话”和“磨合”的过程。当你终于调出一组参数,看着它稳稳地悬停在风中,指哪打哪时,那种成就感,远超过仅仅购买一架成品无人机。你真正理解了从“欧拉角”的意念,到“PWM”的脉动,再到空中那精准舞姿的完整链条。这才是入门四旋翼控制最大的乐趣所在。

3万+

被折叠的 条评论
为什么被折叠?



