课程导论与预备知识

各位同学,欢迎来到《无人机姿态抗干扰控制实战》。我是你们这门课的主讲,一个在飞控领域摸爬滚打了十几年的老工程师。今天咱们先不急着写代码,也不急着调参数。先把地基打牢。

姿态控制,说白了就是让无人机老老实实听你的话。你让它往东,它不往西。你让它悬停,它不晃悠。但现实世界哪有那么完美?风一吹、桨叶一抖、重心偏一点,它就开始跟你较劲了。这就是我们要讲的——抗干扰控制。

一、无人机姿态控制概述

先聊聊姿态控制到底在干什么。

你想象一下,无人机在空中,有六个自由度:前后、左右、上下、以及绕三个轴的旋转。姿态控制管的就是这三个旋转——横滚(Roll)、俯仰(Pitch)、偏航(Yaw)

我刚开始做飞控那会儿,总觉得姿态控制不就是个PID嘛,调调参数就行了。结果第一次试飞,飞机直接翻了。后来才明白,姿态控制是整个飞控系统的核心。它要处理传感器噪声、电机延迟、空气动力学非线性……说白了,它是在一个充满不确定性的环境里,硬生生把飞机稳住。

核心要点:姿态控制的本质是让无人机的实际姿态角跟踪你给定的期望姿态角。抗干扰,就是在这个跟踪过程中,把外部扰动和内部不确定性的影响降到最低。

嗯,这里要注意:姿态控制不是孤立存在的。它上面有位置控制,下面有电机混控。你调好了姿态环,整个飞控系统就稳了一半。

二、坐标系定义

做飞控,坐标系是绕不开的坎。我见过太多新手,坐标系搞混了,最后算出来的姿态角全是错的。

我们通常用两个坐标系:

  • 地球坐标系(NED系):北东地。原点在地面,X轴指向北,Y轴指向东,Z轴指向地。这个坐标系是绝对的,用来描述无人机的位置和姿态参考。
  • 机体坐标系(Body系):原点在无人机重心,X轴指向机头,Y轴指向右翼,Z轴指向下。这个坐标系是跟着飞机转的。

为什么要搞两个坐标系?因为传感器(比如IMU)测量的是机体坐标系下的数据,而你要控制的是在地球坐标系下的姿态。这就涉及到坐标变换。

个人经验:我在项目中遇到过,有人把加速度计的数据直接当成地球坐标系下的数据用,结果飞机一倾斜,加速度计测出来的重力方向就偏了,姿态解算直接崩了。记住:传感器数据一定要先做坐标变换

三、欧拉角与四元数基础

描述姿态,有两种主流方式:欧拉角和四元数。

3.1 欧拉角

欧拉角就是三个角度:横滚角(φ)、俯仰角(θ)、偏航角(ψ)。直观,好理解。你一看就知道飞机现在是低头还是抬头。

但欧拉角有个致命问题——万向锁。当俯仰角接近±90°时,横滚和偏航会耦合在一起,你分不清哪个是哪个。我当年做固定翼飞控时,有一次飞机做大机动,俯仰角过了90°,姿态解算直接炸了,飞机失控坠毁。嗯,从那以后,我对欧拉角就多了一份敬畏。

特性 欧拉角 四元数
直观性
万向锁
计算效率 低(涉及大量三角函数) 高(仅乘加运算)
插值 困难 容易(球面线性插值)

3.2 四元数

四元数是一个超复数,形式为 q = w + xi + yj + zk。它用四个数来描述一个旋转。你想想看,四个数比三个数多了一个自由度,所以它避免了万向锁。

我个人习惯在飞控内部全部用四元数运算。只在最后输出给用户或者调试时,才转成欧拉角。这样既避免了万向锁,计算效率也高。

// 四元数转欧拉角(示例代码)
float roll  = atan2(2.0f*(q.w*q.x + q.y*q.z), 1.0f - 2.0f*(q.x*q.x + q.y*q.y));
float pitch = asin(2.0f*(q.w*q.y - q.z*q.x));
float yaw   = atan2(2.0f*(q.w*q.z + q.x*q.y), 1.0f - 2.0f*(q.y*q.y + q.z*q.z));

避坑指南:我曾经在四元数归一化上吃过亏。四元数如果不归一化,它的模长就不是1,旋转矩阵就会变形,姿态解算会慢慢漂移。所以,每次更新完四元数,记得做归一化:q = q / norm(q)。

四、抗干扰控制的意义

好了,前面都是基础。现在聊聊为什么我们要花30节课来讲抗干扰。

你想想看,无人机在实际飞行中会遇到什么?

  • 阵风扰动:一阵风吹过来,飞机瞬间偏了。
  • 重心偏移:挂载了负载,重心不在理想位置。
  • 电机故障:某个电机响应慢了或者出力不足。
  • 传感器噪声:IMU数据里混着高频噪声。

这些干扰,如果控制器不处理,飞机就会抖、飘、甚至炸机。我见过一个团队,PID参数调得漂漂亮亮,室内悬停稳如磐石。结果一拉到室外,风一吹,飞机直接翻了。为什么?因为他们的控制器没有抗干扰能力。

抗干扰控制,说白了就是让控制器在面对这些不确定因素时,依然能保持稳定和精度。它不是锦上添花,而是雪中送炭。

课程目标:学完这门课,你将掌握从经典PID到现代抗干扰控制(如自抗扰控制ADRC、滑模控制、H∞控制等)的实战方法。不是纸上谈兵,而是能直接写到飞控代码里的那种。

嗯,这一章就到这里。下一章我们开始搭建仿真环境,手把手带你写第一个姿态控制器。到时候,你会看到理论是怎么变成代码的。

课后思考:如果你现在用的飞控是PID,你觉得它在什么情况下会失效?想清楚这个问题,你就知道抗干扰控制的价值了。