第1章:飞控系统基础——四旋翼动力学与传感器模型

大家好,我是老张。做飞控这些年,我带过不少新人。我发现一个规律:凡是能把基础模型吃透的,后面调参、排错都特别快。反过来,那些急着跑仿真、调PID的,往往会在某个奇怪的问题上卡好几天。

所以这一章,咱们把地基打牢。我会把四旋翼的动力学模型、坐标系、姿态表示、传感器模型这些核心内容,结合我踩过的坑,给你讲透。

1.1 四旋翼飞行器动力学模型

先说说四旋翼怎么飞的。你想想看,四个电机,两两正反转。对角线的电机转向相同,相邻的相反。这样设计是为了抵消反扭矩。

我在项目中遇到过一件事:有个同学把电机转向搞反了,结果飞机一解锁就原地打转。嗯,这种低级错误,其实原理上想通了就不会犯。

动力学模型的核心,说白了就是力和力矩的平衡。我们通常把它拆成两部分:

  • 位置动力学:描述飞机在三维空间中的平移运动
  • 姿态动力学:描述飞机的旋转运动

位置动力学方程长这样:

m * a = F_thrust + F_gravity + F_drag

其中m是质量,a是加速度。F_thrust是四个电机产生的总升力,方向沿机体Z轴。F_gravity是重力,F_drag是空气阻力。

姿态动力学稍微复杂一点。它涉及转动惯量和角加速度的关系:

J * ω_dot = τ - ω × (J * ω)

J是转动惯量矩阵,ω是角速度,τ是外力矩。那个叉乘项,其实就是陀螺效应。我刚开始学的时候,总觉得这玩意儿是玄学。后来做高机动飞行时才发现,不补偿这个项,飞机根本稳不住。

核心要点:四旋翼是个欠驱动系统。什么意思?四个输入(电机转速),六个自由度(位置3个+姿态3个)。所以你不能独立控制所有状态,必须通过姿态变化来产生水平方向的力。

1.2 坐标系定义与转换

坐标系这东西,看着简单,但坑特别多。我见过太多因为坐标系搞混导致的bug了。

常用的坐标系有三个:

  • 地球坐标系(NED):北东地。X轴指向北,Y轴指向东,Z轴指向地心。这是导航用的坐标系。
  • 机体坐标系(Body):固定在飞机上。X轴指向机头,Y轴指向右翼,Z轴指向下。
  • 导航坐标系(ENU):东北天。和NED的区别是Z轴朝上。有些传感器用这个。

我个人习惯用NED作为全局坐标系。为什么?因为PX4和ArduPilot都用的NED,方便对接。

坐标系转换的核心是旋转矩阵。从机体到地球的转换,需要知道当前的姿态。反过来,从地球到机体,就是旋转矩阵的转置。

我曾经在项目里犯过一个错:把旋转矩阵的方向搞反了。结果飞机在仿真里一直往反方向飞。查了两天才发现,是矩阵乘法的顺序错了。记住:先转的矩阵放右边

1.3 姿态表示方法

姿态表示有三种主流方法:欧拉角、四元数、旋转矩阵。每种都有优缺点。

方法 优点 缺点
欧拉角 直观,容易理解 有万向锁问题,不适合插值
四元数 无万向锁,计算效率高 不够直观,需要归一化
旋转矩阵 数学性质好,容易组合 9个参数,计算量大

我个人建议:内部计算用四元数,人机交互用欧拉角。为什么?四元数没有奇点,适合做姿态融合和插值。但你要给用户看姿态,总不能显示四个数吧?这时候转成欧拉角,一目了然。

四元数的定义:

q = [w, x, y, z]

其中w是标量部分,表示旋转角度的余弦。x,y,z是矢量部分,表示旋转轴的方向。归一化条件是w² + x² + y² + z² = 1。

避坑指南:我曾经在四元数归一化上吃过亏。每次更新完四元数,一定要做归一化。否则数值误差会累积,导致姿态发散。这个bug我查了整整一天。

欧拉角的旋转顺序也很重要。飞控里常用的是ZYX顺序:先偏航(Yaw),再俯仰(Pitch),最后横滚(Roll)。这个顺序对应了从地球坐标系到机体坐标系的转换。

1.4 传感器模型

传感器是飞控的眼睛。但眼睛会骗人,传感器也有噪声和偏差。

IMU(惯性测量单元)

IMU包含三轴加速度计和三轴陀螺仪。加速度计测比力,陀螺仪测角速度。

加速度计的模型:

a_meas = a_true + b_a + n_a

其中b_a是零偏,n_a是高斯白噪声。零偏会随时间漂移,这就是为什么需要融合其他传感器来校正。

陀螺仪的模型类似:

ω_meas = ω_true + b_g + n_g

我在项目中遇到过一个问题:陀螺仪的零偏估计不准,导致姿态估计一直在漂。后来发现是温度变化引起的。所以现在做IMU标定时,我都会做温度补偿。

GPS

GPS提供位置和速度信息。精度大概在米级,更新频率一般是5-10Hz。

GPS的模型:

pos_meas = pos_true + n_pos
vel_meas = vel_true + n_vel

n_pos和n_vel是高斯噪声。GPS的噪声和卫星数量、几何分布有关。在城市峡谷或树荫下,GPS信号会变差。

注意:GPS的更新频率低,而且有延迟。在快速机动时,单纯依赖GPS会跟不上。所以飞控里通常用IMU做高频预测,GPS做低频校正。这就是卡尔曼滤波的核心思想。

磁力计

磁力计测量地球磁场,用于确定航向。但它特别容易受干扰。

磁力计的模型:

mag_meas = R * mag_earth + b_mag + n_mag

R是旋转矩阵,b_mag是硬铁干扰,n_mag是噪声。硬铁干扰来自飞机上的铁磁材料,比如电机、电池。

我曾经在项目里遇到一个诡异的问题:飞机在室内转圈时,航向一直在漂。后来发现是旁边的钢筋柱子干扰了磁力计。从那以后,我每次做磁力计校准,都会找个空旷的地方。

知识体系总览

下面这张图,是我自己总结的本章知识结构。你可以把它当作一个思维导图来看。

飞控系统基础 动力学模型 位置动力学 姿态动力学 坐标系定义与转换 NED坐标系 机体坐标系 旋转矩阵 姿态表示方法 欧拉角 四元数 旋转矩阵 传感器模型 IMU GPS 磁力计 四旋翼飞控系统基础知识体系

这张图把四个核心模块串起来了。动力学模型是物理基础,坐标系是数学工具,姿态表示是计算方法,传感器是数据来源。四者缺一不可。

好了,这一章的内容就到这里。记住:基础不牢,地动山摇。把这些概念吃透了,后面的仿真和调参才能事半功倍。