You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

9.7 KiB

PX4 四电机编号与当前尾座式配置

1. 电机编号不是简单的接口编号

PX4中的 Motor 1Motor 2 等是控制分配器使用的逻辑电机编号,不天然等于飞控外壳上的 MAIN OUT 1MAIN OUT 2

完整关系是:

机体几何参数
    │
    ▼
逻辑电机 Motor 1、Motor 2……
    │
    ▼
输出功能参数映射
    │
    ▼
飞控物理 PWM/DShot 输出口
    │
    ▼
电调和实际电机

因此需要分别确认:

  1. 逻辑电机在机体上的位置和旋向是否正确。
  2. 每个逻辑电机映射到了哪个物理输出口。
  3. 对应输出口实际连接的是哪一个电调和电机。

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. 安全验证电机编号

测试前必须:

  1. 拆下所有螺旋桨。
  2. 固定机体。
  3. 确认电池和电调连接安全。
  4. 确保周围无人接触电机。

然后在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
当前模板:双电机、双舵面尾座式

如果实际飞机是四电机尾座式,在上桨、解锁或飞行前,必须根据真实电机位置、推力轴和旋向完成四电机控制分配,并通过拆桨执行器测试逐一验证逻辑编号和物理输出。