9.7 KiB
PX4 四电机编号与当前尾座式配置
1. 电机编号不是简单的接口编号
PX4中的 Motor 1、Motor 2 等是控制分配器使用的逻辑电机编号,不天然等于飞控外壳上的 MAIN OUT 1、MAIN OUT 2。
完整关系是:
机体几何参数
│
▼
逻辑电机 Motor 1、Motor 2……
│
▼
输出功能参数映射
│
▼
飞控物理 PWM/DShot 输出口
│
▼
电调和实际电机
因此需要分别确认:
- 逻辑电机在机体上的位置和旋向是否正确。
- 每个逻辑电机映射到了哪个物理输出口。
- 对应输出口实际连接的是哪一个电调和电机。
2. PX4机体坐标系
PX4使用机体坐标系描述电机位置:
X轴:机头前方为正
Y轴:机体右方为正
Z轴:机体下方为正
从飞机上方看:
+X 机头方向
↑
│
机体左侧 │ 机体右侧
-Y │ +Y
│
参数含义:
| 参数 | 含义 |
|---|---|
CA_ROTORn_PX |
第n个旋翼相对重心在X轴的位置 |
CA_ROTORn_PY |
第n个旋翼相对重心在Y轴的位置 |
CA_ROTORn_PZ |
第n个旋翼相对重心在Z轴的位置 |
CA_ROTORn_AX |
推力轴在X轴的方向分量 |
CA_ROTORn_AY |
推力轴在Y轴的方向分量 |
CA_ROTORn_AZ |
推力轴在Z轴的方向分量 |
CA_ROTORn_KM |
旋翼反扭矩系数和旋向 |
对于尾座式飞机,这些位置仍然按照正常固定翼前飞时的机体坐标定义:
- 机头方向始终是
+X。 - 右机翼方向始终是
+Y。 - 不能按照飞机竖直停放时看到的“上、下、左、右”直接填写电机坐标。
3. 常见四旋翼X架构的电机编号
对于常见四旋翼 X 架构,从飞机上方观察,机头朝前:
机头 +X
↑
Motor 3 Motor 1
前左 CW 前右 CCW
\ /
\ /
\ /
机体
/ \
/ \
/ \
Motor 2 Motor 4
后左 CCW 后右 CW
对应关系:
| PX4逻辑电机 | 位置 | 从上方观察的旋向 |
|---|---|---|
| Motor 1 | 前右 | CCW,逆时针 |
| Motor 2 | 后左 | CCW,逆时针 |
| Motor 3 | 前左 | CW,顺时针 |
| Motor 4 | 后右 | CW,顺时针 |
这是PX4常见四旋翼X几何的逻辑定义。实际机体仍应以当前控制分配参数和QGroundControl的执行器页面为准。
4. QGC编号与内部参数编号
QGroundControl和用户界面从 Motor 1 开始编号;PX4内部旋翼几何参数从 ROTOR0 开始编号:
| QGC/用户看到的编号 | PX4内部参数前缀 |
|---|---|
| Motor 1 | CA_ROTOR0_* |
| Motor 2 | CA_ROTOR1_* |
| Motor 3 | CA_ROTOR2_* |
| Motor 4 | CA_ROTOR3_* |
这是一个容易混淆的地方。例如 CA_ROTOR0_PX 描述的是 Motor 1,而不是“Motor 0”。
5. 四旋翼X架构的位置参数示例
标准化位置可以写成:
CA_ROTOR0_PX = 1 Motor 1:前
CA_ROTOR0_PY = 1 右
CA_ROTOR1_PX = -1 Motor 2:后
CA_ROTOR1_PY = -1 左
CA_ROTOR2_PX = 1 Motor 3:前
CA_ROTOR2_PY = -1 左
CA_ROTOR3_PX = -1 Motor 4:后
CA_ROTOR3_PY = 1 右
也可以填写实际距离,例如电机相对重心的位置是 0.2 m:
Motor 1:PX= 0.2,PY= 0.2
Motor 2:PX=-0.2,PY=-0.2
Motor 3:PX= 0.2,PY=-0.2
Motor 4:PX=-0.2,PY= 0.2
填写实际尺寸有助于准确描述非对称机体。无论使用归一化位置还是实际尺寸,都必须保持各电机之间正确的位置比例和符号。
6. 电机旋向参数
旋翼旋向由 CA_ROTORn_KM 表示:
KM > 0:CCW,逆时针
KM < 0:CW,顺时针
PX4当前参数说明明确规定:
- 正值用于 CCW 旋翼。
- 负值用于 CW 旋翼。
常见四旋翼X示例:
CA_ROTOR0_KM = 0.05 Motor 1:CCW
CA_ROTOR1_KM = 0.05 Motor 2:CCW
CA_ROTOR2_KM = -0.05 Motor 3:CW
CA_ROTOR3_KM = -0.05 Motor 4:CW
旋向的观察方向必须统一。本文四旋翼示意图中的 CW/CCW 按从飞机上方观察螺旋桨定义。
配置中的旋向必须和实际电机旋转方向一致,否则控制分配器对偏航反扭矩的计算会出错。
7. 逻辑电机如何映射到物理输出口
逻辑 Motor 1 不一定连接 MAIN OUT 1。物理输出功能由对应输出参数决定。
例如一种直接映射是:
PWM_MAIN_FUNC1 = Motor 1
PWM_MAIN_FUNC2 = Motor 2
PWM_MAIN_FUNC3 = Motor 3
PWM_MAIN_FUNC4 = Motor 4
但也可以配置成:
MAIN OUT 1 → Motor 3
MAIN OUT 2 → Servo 1
MAIN OUT 3 → Motor 1
只要输出功能和实际接线一致,逻辑电机不要求必须按物理口顺序排列。
应在QGroundControl中检查:
Actuators → Actuator Outputs
确认每个输出通道的 Function/功能是:
- Motor 1
- Motor 2
- Motor 3
- Motor 4
- 或相应舵机功能
如果使用其他输出驱动,参数名可能不是 PWM_MAIN_FUNCn,但原则相同:物理通道必须分配到正确的逻辑执行器功能。
8. 安全验证电机编号
测试前必须:
- 拆下所有螺旋桨。
- 固定机体。
- 确认电池和电调连接安全。
- 确保周围无人接触电机。
然后在QGroundControl执行器测试中逐个测试:
测试 Motor 1 → 只有实际前右电机转动
测试 Motor 2 → 只有实际后左电机转动
测试 Motor 3 → 只有实际前左电机转动
测试 Motor 4 → 只有实际后右电机转动
接着分别确认旋向:
Motor 1 → CCW
Motor 2 → CCW
Motor 3 → CW
Motor 4 → CW
如果编号错误,优先修改输出功能映射或实际接线,使逻辑电机与几何定义一致。
如果编号正确但旋向错误,通常可以:
- 通过支持的电调配置工具改变电机方向。
- 对普通无刷电机交换任意两根相线。
不能只在软件中把 KM 正负号改成实际旋向,却不检查螺旋桨类型和整机期望旋向。几何、实际旋向以及安装的 CW/CCW 螺旋桨必须三者一致。
9. 当前13200尾座式配置的重要限制
当前使用的机型是:
13200_generic_vtol_tailsitter
它的默认控制分配配置为:
param set-default CA_AIRFRAME 4
param set-default CA_ROTOR_COUNT 2
param set-default CA_ROTOR0_KM -0.05
param set-default CA_ROTOR0_PY -0.2
param set-default CA_ROTOR1_KM 0.05
param set-default CA_ROTOR1_PY 0.2
param set-default CA_SV_CS_COUNT 2
这表示当前模板预期:
- 两个电机。
- 两个舵面。
- 电机分别位于机体左右两侧。
具体关系:
| 逻辑执行器 | 位置/配置 |
|---|---|
| Motor 1 / Rotor 0 | PY=-0.2,机体左侧,KM=-0.05,CW |
| Motor 2 / Rotor 1 | PY=+0.2,机体右侧,KM=+0.05,CCW |
| Servo 1 | 一个尾座式控制面 |
| Servo 2 | 另一个尾座式控制面 |
相关源码:
ROMFS/px4fmu_common/init.d/airframes/13200_generic_vtol_tailsitter
因此当前 13200 并不是四电机尾座式模板。
10. 如果实机是四电机尾座式
如果实际飞机有四个电机,只把四个电调插到四个输出口是不够的。当前控制分配器仍然只知道两个旋翼,因此必须建立与真实机体一致的四电机几何。
至少需要检查和修改:
CA_ROTOR_COUNT = 4
CA_ROTOR0_PX/PY/PZ
CA_ROTOR1_PX/PY/PZ
CA_ROTOR2_PX/PY/PZ
CA_ROTOR3_PX/PY/PZ
CA_ROTOR0_AX/AY/AZ
CA_ROTOR1_AX/AY/AZ
CA_ROTOR2_AX/AY/AZ
CA_ROTOR3_AX/AY/AZ
CA_ROTOR0_KM
CA_ROTOR1_KM
CA_ROTOR2_KM
CA_ROTOR3_KM
还需要确认:
- 四个电机是否全部用于悬停和固定翼推进。
- 电机在固定翼姿态下相对重心的位置。
- 每个电机推力轴方向。
- 四个电机的实际旋向。
- 固定翼状态是否使用差动推力。
- 舵面数量和舵面力矩方向。
- PWM或DShot输出功能映射。
- 尾座式前后转换过程中的执行器使用方式。
不能直接照搬普通四旋翼X编号图,除非四电机尾座式的真实几何确实与该图相同。尾座式可能采用左右翼上下排列、非对称位置或不同推力轴,需要按真实结构建模。
11. 在控制台查看当前参数
查看当前旋翼数量:
param show CA_ROTOR_COUNT
查看前四个旋翼位置和旋向:
param show CA_ROTOR0_PX
param show CA_ROTOR0_PY
param show CA_ROTOR0_PZ
param show CA_ROTOR0_KM
param show CA_ROTOR1_PX
param show CA_ROTOR1_PY
param show CA_ROTOR1_PZ
param show CA_ROTOR1_KM
param show CA_ROTOR2_PX
param show CA_ROTOR2_PY
param show CA_ROTOR2_PZ
param show CA_ROTOR2_KM
param show CA_ROTOR3_PX
param show CA_ROTOR3_PY
param show CA_ROTOR3_PZ
param show CA_ROTOR3_KM
查看全部旋翼参数:
param show CA_ROTOR*
查看输出功能时,可以在QGroundControl执行器页面检查,也可根据实际输出驱动查询对应的 FUNC 参数。
12. 当前结论
对于普通四旋翼X,PX4常见逻辑编号是:
Motor 1:前右,CCW
Motor 2:后左,CCW
Motor 3:前左,CW
Motor 4:后右,CW
但是当前项目的关键事实是:
当前机型:13200 Generic VTOL Tailsitter
当前旋翼数量:CA_ROTOR_COUNT=2
当前模板:双电机、双舵面尾座式
如果实际飞机是四电机尾座式,在上桨、解锁或飞行前,必须根据真实电机位置、推力轴和旋向完成四电机控制分配,并通过拆桨执行器测试逐一验证逻辑编号和物理输出。