目录
文章目录
- 目录
- 摘要
- [1. betaflight 坐标系](#1. betaflight 坐标系)
-
- [1.1 机体坐标系 Body Frame(BF 标准,原点:飞行器重心)](#1.1 机体坐标系 Body Frame(BF 标准,原点:飞行器重心))
- [1.2 地理 / 导航坐标系(Earth / Navigation Frame)](#1.2 地理 / 导航坐标系(Earth / Navigation Frame))
- [2. betaflight 欧拉角定义](#2. betaflight 欧拉角定义)
- [3. 关键易错对比表](#3. 关键易错对比表)
- [4. 坐标系变换简要关系](#4. 坐标系变换简要关系)
- [5. IMU 传感器坐标系 ≠ 机体坐标系](#5. IMU 传感器坐标系 ≠ 机体坐标系)
- [6. 总结](#6. 总结)
摘要
本节主要记录从零开始学习betaflight《5-坐标系》,只有掌握了这个才能更好的看懂驱动及导航控制的整个细节实现,特别是为什么IMU那样放置,为什么要旋转,这些都和坐标系有联系,betaflight中有两套重要的坐标系,机体坐标系和导航坐标系。
1. betaflight 坐标系
- Betaflight / iNav:机体系 BODY (前 - 左 - 上),导航系 ENU(东北天),和传统航空标准不一样,极易踩坑。
- PX4/ArduPilot:FRD / NED;
1.1 机体坐标系 Body Frame(BF 标准,原点:飞行器重心)
X 轴(Roll 横滚轴):指向机头(向前 Forward)
✅ 绕 X 正方向旋转 → 向右横滚 Roll+(机身向右倾斜)
Y 轴(Pitch 俯仰轴):指向机身左侧(Left)
✅ 绕 Y 正方向旋转 → 机头向下俯冲 Pitch+
Z 轴(Yaw 偏航轴):垂直机身向上(Up)
✅ 绕 Z 正方向旋转 → 机头向右偏航 Yaw+(顺时针)
cpp
一句话速记:前 (X)、左 (Y)、上 (Z)
❗⚠️ 传统航空 FRD 是【前 - 右 - 下】,BF 是【前 - 左 - 上】,Y、Z 全部反向!
cpp
机体角速度正负(陀螺仪输出)
gyro.x > 0:向右滚
gyro.y > 0:低头俯冲
gyro.z > 0:机头顺时针右转
1.2 地理 / 导航坐标系(Earth / Navigation Frame)
Betaflight 导航、姿态解算外部参考基准:ENU(East-North-Up 东北天,右手系)
原点:起飞点水平面
X_E:东 East
Y_N:北 North
Z_U:天 Up(远离地面,重力反方向)
- 注意:
很多惯性导航教材、PX4 使用 NED(北东地),二者 Z 轴完全反向,坐标系顺序不同,矩阵转换必须注意符号。
2. betaflight 欧拉角定义
姿态角含义(地面站看到的 Roll/Pitch/Yaw):
- Yaw(ψ 偏航):机体 Z 轴在水平面投影与正北夹角
Yaw=0°:机头朝北
Yaw 增加:机头顺时针转向东 - Pitch(θ 俯仰):机身 X 轴相对水平面倾角
Pitch > 0:机头向下(这里和apm,px4的相反) - Roll(ϕ 横滚):机身绕机头 X 轴倾斜
Roll > 0:机身向右倾斜
3. 关键易错对比表


4. 坐标系变换简要关系

5. IMU 传感器坐标系 ≠ 机体坐标系
飞控板上芯片原始坐标轴是Sensor Frame。
Betaflight 配置页 Board Alignment(板子旋转)作用:
把 IMU 原始传感器坐标系 → 转换到标准【前 - 左 - 上】机体坐标系。
箭头朝前平放时,IMU 默认对齐 CW0_DEG 满足:
Sensor.X → Body.X(向前)、Sensor.Y→Body.Y(向左)、Sensor.Z→Body.Z(向上)。
6. 总结
- 注意bf和apm,px4机体坐标系和地理坐标系差异
- 注意传感器坐标系和机体坐标系如何对齐