坐标系、姿态与旋转¶
飞控需要回答两个不同的问题:飞行器相对自身如何运动,以及飞行器相对地面朝向哪里。要准确描述这些问题,必须先确定坐标系、轴方向和旋转正方向。

为什么必须先说明坐标系¶
“向前加速1米每二次方秒”可能表示:
- 沿机头方向加速;
- 沿地面北方加速;
- 沿地图画面的上方加速;
- 沿传感器芯片标记的某个轴加速。
如果不说明坐标系,这个数值无法被正确使用。飞控程序、传感器驱动、黑匣子日志和地面站界面必须对坐标系达成一致。
机体坐标系¶
机体坐标系(Body Frame)固定在飞行器上,会随机体一起转动。
航空领域常见的右手坐标约定是:
X轴指向机头前方;Y轴指向机体右侧;Z轴指向机体下方。
这组方向构成右手坐标系。这里的“叉乘方向”只用于确定第三个轴:如果X轴和Y轴已确定,则X × Y的方向就是Z轴正方向。可以用右手食指指向X轴、中指指向Y轴,拇指指向Z轴来检查。
不同飞控、机器人软件和图形系统可能采用不同轴方向。例如,航空飞控常见前-右-下(FRD,Forward Right Down)机体系,机器人操作系统的基础机体系通常采用前-左-上(FLU,Forward Left Up)。读取源码、日志或传感器手册时,必须以该系统的正式定义为准,不能只凭图形界面的视觉方向推断。
导航坐标系¶
导航坐标系固定于地面参考方向,用于描述位置、速度和航向。
北东地坐标系¶
北东地坐标系(NED,North East Down)通常定义为:
X轴指向北;Y轴指向东;Z轴指向地面。
它与常见航空机体系都采用Z轴向下,便于部分导航和动力学计算。
东北天坐标系¶
东北天坐标系(ENU,East North Up)通常定义为:
X轴指向东;Y轴指向北;Z轴指向天空。
机器人操作系统和部分地图、定位软件经常使用这一约定。
同一组位置或速度数据在两种坐标系中的轴顺序和Z轴符号不同。进行日志转换或跨系统通信时,必须显式转换。
姿态是什么¶
姿态表示机体坐标系相对于参考坐标系的旋转关系。它描述朝向,不直接描述飞行器位于哪里。
常用的三个姿态角是:
- 滚转角(Roll):绕机体前后轴的旋转;
- 俯仰角(Pitch):绕机体左右轴的旋转;
- 偏航角(Yaw):绕机体竖直轴的旋转。
姿态和位置是不同状态:
- 飞行器可以停留在同一位置但持续偏航;
- 飞行器可以保持同一姿态但沿原方向移动;
- 姿态变化会改变推力方向,随后影响速度和位置。
旋转正方向¶
右手定则用于确定绕某个轴的正旋转方向:
- 右手拇指指向轴的正方向。
- 四指弯曲方向就是正旋转方向。
但“正滚转意味着向左还是向右”“正偏航意味着顺时针还是逆时针”,仍然取决于坐标轴定义和观察方向。技术文档应同时给出轴方向和正方向,不能只写“正偏航”。
在本篇采用的前-右-下机体系中:
- 正滚转使右翼下沉,从机尾向机头观察为顺时针;
- 正俯仰使机头上仰,从机体右侧观察为逆时针;
- 正偏航使机头向右,从飞行器上方观察为顺时针。
陀螺仪测量的不是姿态角¶
陀螺仪测量角速度,即单位时间内绕各轴旋转了多快。常用单位是度每秒或弧度每秒。
飞控对角速度随时间积分,可以估算角度变化,但直接积分会逐渐累积零偏和噪声误差。因此,姿态估计通常还需要加速度计、磁力计或其他观测信息进行约束。
陀螺仪输出和姿态角不能混为一谈:
- 陀螺仪输出为零,表示当前没有明显旋转;
- 陀螺仪输出为零,不表示机体一定水平;
- 机体保持30度倾斜且静止时,角速度仍接近零。
加速度计如何帮助判断倾斜¶
静止或匀速运动时,加速度计测得的比力可以用于推断重力方向,从而辅助估计滚转角和俯仰角。
但飞行器剧烈加速时,加速度计同时受到运动加速度影响。此时不能把全部测量值都解释为重力。姿态估计算法需要在陀螺仪短期响应和加速度计长期参考之间进行权衡。
仅依靠加速度计通常不能确定偏航角,因为绕重力方向旋转不会改变重力在机体系中的方向。偏航参考可能来自磁力计、卫星导航、视觉或其他外部信息。
欧拉角和四元数¶
滚转、俯仰和偏航属于欧拉角(Euler Angles)表示方法。它直观、适合展示,但必须同时写明旋转顺序和映射方向。
例如,采用列向量并把机体系向量转换到北东地坐标系时,一种常见航空约定可以写成:
这只是一个完整约定示例,不表示所有软件都使用相同定义。主动旋转表示在固定坐标系中旋转物理向量;被动旋转表示物理向量不动,只改变描述它的坐标系。两者的旋转矩阵互为逆矩阵,混用会造成方向相反。
欧拉角在俯仰接近正负90度时,滚转轴和偏航轴会在这种表示中重合,导致一个旋转自由度无法被单独表示,这称为万向节锁。发生问题的是欧拉角参数化,不是飞行器机械结构真的被锁住。
四元数(Quaternion)使用四个数表示三维旋转,适合连续姿态计算和多次旋转组合。它避免了欧拉角表示中的部分奇异问题,但不如三个姿态角直观。
交换四元数时至少需要确认:
- 元素顺序是
w, x, y, z还是x, y, z, w; - 四元数表示从机体系到导航系,还是相反方向;
- 使用的机体系和导航坐标系;
- 乘法顺序以及向量放在矩阵或四元数的哪一侧。
例如,PX4消息常明确给出四元数的参考坐标系和w, x, y, z顺序;机器人操作系统消息字段通常按x, y, z, w排列。不能只复制四个数字而忽略元数据。
常见做法是:
- 飞控内部使用四元数或旋转矩阵计算;
- 地面站和日志界面转换为滚转、俯仰、偏航角显示;
- 控制器根据飞行模式使用角速度、姿态角或两者的组合。
传感器坐标系与飞控板方向¶
惯性测量单元芯片有自己的坐标轴,飞控电路板也有规定的安装方向。芯片轴、飞控板轴和机体轴可能不完全一致。
飞控固件中的传感器驱动和板级配置负责把芯片原始数据转换到统一机体系。如果飞控板旋转安装,还需要配置飞控板对齐关系。
轴映射错误可能出现以下现象:
- 实际向右倾斜,地面站模型却向前倾斜;
- 某个轴角速度方向相反;
- 飞行器解锁后迅速翻转;
- 自稳模式向错误方向修正;
- 黑匣子中的轴数据无法对应实际动作。
安装后的方向检查¶
首次配置飞控时,应拆除螺旋桨并完成以下检查:
- 把机头朝向远离操作者的方向。
- 将机体向右滚转,观察地面站模型是否同步向右。
- 将机头下压,观察模型是否同步下俯。
- 将机头向右转,观察模型航向是否同步变化。
- 若方向不一致,检查飞控板安装方向、板级目标和对齐配置。
不要通过颠倒电机顺序或反转控制器输出掩盖传感器坐标错误。应先在传感器和板级对齐层解决问题。
角度范围和跳变¶
角度通常需要限制在某个周期范围,例如-180度到180度或0度到360度。
当航向从179度跨过边界变成-179度时,实际只旋转了2度,而不能直接按数值相减得到-358度。控制和日志分析需要进行角度归一化处理。
检查理解¶
阅读后应当能够回答:
- 机体坐标系和导航坐标系有什么区别?
- 北东地坐标系的三个轴分别指向哪里?
- 陀螺仪输出为零是否意味着机体水平?
- 为什么加速度计难以单独确定偏航角?
- 飞控板旋转安装后为什么需要配置对齐关系?