PX4机型目录:修订间差异

来自无人智胜
跳转到导航 跳转到搜索
Root留言 | 贡献
无编辑摘要
Root留言 | 贡献
无编辑摘要
第1行: 第1行:
以下是基于 MediaWiki 语法格式的 PX4 机型目录详细解析,包含全面说明、中文注释和个人理解:
PX4 的机型配置是其飞控系统的核心之一,它通过一系列配置文件定义了各类飞行器(如多旋翼、固定翼、车辆、船只等)的参数、混控器设置和控制逻辑。下面我将为你详细解析 PX4 的机型目录结构、文件内容,并提供丰富的中文注释。


PX4 机型目录详解
📁 一、机型目录位置与结构
'''PX4 机型目录'''是 PX4 飞控系统中定义飞行器平台配置的核心部分,它通过一系列配置文件决定了飞控如何控制不同类型的飞行器(如多旋翼、固定翼、车辆、船只等)。这些配置文件包含了参数设置、混控器配置和控制逻辑。


= 目录位置与结构 =
PX4 的机型配置文件主要存放在固件源码的以下路径中:
PX4 的机型配置文件主要存放在固件源码的以下路径中:
PX4-Autopilot/ROMFS/px4fmu_common/init.d/airframes
PX4-Autopilot/ROMFS/px4fmu_common/init.d/airframes


'''中文注释''':ROMFS 是一个只读文件系统,这些配置文件在编译时会被打包进固件。px4fmu_common 表示这些配置适用于常见的 Pixhawk 系列飞控硬件。init.d 包含系统启动脚本,而 airframes 子目录专门存放所有机型定义文件。
  中文注释:


= 机型文件命名规则 =
    ◦  ROMFS:这是一个只读文件系统,这些配置文件在编译时会被打包进最终的固件映像中,确保运行时不会被修改。
机型文件的命名格式为:[数字ID]_[描述性名称](例如 4001_quad_x,2100_standard_plane)。
• '''中文注释''':


     ◦ '''数字 ID''':此数字唯一对应飞控参数 SYS_AUTOSTART 的值。通过设置 SYS_AUTOSTART 为特定 ID,即可选择对应的机型。
     ◦   px4fmu_common:这表示这些配置是针对常见的 Pixhawk 系列飞控硬件(如 FMU 版本)的通用设置。


     ◦ '''描述性名称''':通常描述了机型的类别和构型,如 quad_x 代表 X 型四旋翼。
     ◦   init.d:此目录包含了 PX4 系统的启动脚本。在飞控板上电后,这些脚本会按顺序执行,初始化系统。


下表总结了主要的机型ID范围及其类别:
    ◦  airframes:这就是 存放所有机型定义文件的核心目录。每一个文件通常对应一种特定构型或类型的飞行器。
{class="wikitable"


+ PX4机型ID范围分配表
🔢 二、机型文件命名与 ID
! ID范围
! 机型类别
! 示例ID
! 说明
1000-1999
仿真设置 (HIL/STIL)
1004
硬件在环仿真配置
2000-2999
标准固定翼
2100
标准固定翼飞机
3000-3999
飞翼
3000
通用飞翼
4000-4999
X型四旋翼
4001
通用 X 四旋翼
5000-5999
+型四旋翼
5001
通用 + 四旋翼
13000-13999
VTOL
13000
垂直起降飞行器
...
...
...
...


}
机型配置文件的命名遵循 [数字ID]_[描述性名称] 的格式(例如 4001_quad_x, 2100_standard_plane)。
'''注意''':自定义机型通常建议使用较大的 ID(如 8xxxx, 9xxxx),以避免冲突。
  中文注释:


= 机型元数据标签 =
    ◦  数字 ID:这个数字至关重要,它唯一地对应飞控参数 SYS_AUTOSTART 的值。通过在地面站(如 QGroundControl)中设置 SYS_AUTOSTART 参数为特定的 ID 值,就可以选择并使用对应的机型配置。
在机型文件中,使用特定格式的注释标签定义元数据,这些信息用于地面站(如 QGroundControl)的显示和选择:
 
#!/bin/sh
    ◦  描述性名称:这通常是一个人类可读的名称,简要描述了机型的类别和构型,例如 quad_x 代表 X 型四旋翼,standard_plane 代表标准固定翼。这主要用于开发者和管理,不影响飞控逻辑。
#
 
# @name Generic Quadcopter      # 机型名称:显示在地面站的选择列表中
为了更清晰地了解不同ID范围对应的机型类别,可以参考下表:
# @type Quadrotor x              # 机型子类型:如X型四旋翼,影响地面站显示
 
# @class Copter                  # 机型大类:决定飞控使用的核心控制算法(如多旋翼、固定翼)
ID 范围 机型类别 示例机型 示例 ID
# @maintainer Name <email>      # 维护者信息
# @output MAIN1 aileron          # 输出通道功能描述:MAIN1通道控制副翼
# @board px4_fmu-v2 exclude      # 板卡排除:此配置不适用于指定飞控板
#


• '''个人理解''':这些元数据标签是连接机型配置与地面站UI的桥梁,确保用户能正确识别和选择机型。
[1000, 1999] 仿真设置 (HIL/STIL) HIL 标准固定翼 1004


= 配置文件内容解析 =
[2000, 2999] 标准固定翼 标准飞机 2100
机型文件是 Shell 脚本,主要进行参数设置、引用通用配置和设置混控器。
#!/bin/sh
#
# @name Generic Quadcopter
# @type Quadrotor X
# @class Copter
#
# 引用多旋翼默认参数配置
. ${R}etc/init.d/rc.mc_defaults  # 引用多旋翼(Multicopter)的默认配置脚本,实现代码复用


# 设置参数默认值:如果用户未修改参数,则使用此默认值
[3000, 3999] 飞翼 通用飞翼 3000
param set-default CA_ROTOR_COUNT 4    # 设置旋翼/电机数量的默认值为4
param set-default CA_ROTOR0_PX 0.15    # 设置0号电机在机体坐标系中的X轴安装位置(米)
param set-default CA_ROTOR0_PY 0.15    # 设置0号电机在机体坐标系中的Y轴安装位置(米)
param set-default BAT1_N_CELLS 4      # 设置电池1的电池片数(单位:S)
param set-default GND_SPEED_P 0.25    # 设置地面车辆速度控制器的比例(P)增益


# 设置混控器 (Mixer):决定飞控输出指令如何映射到执行器
[4000, 4999] X型四旋翼 通用 X 四旋翼 4001
set MIXER quad_x  # 使用名为'quad_x'的混控器(适用于X型四旋翼)
set PWM_OUT 1234  # 设置PWM输出通道


• '''关键点说明''':
[5000, 5999] +型四旋翼 通用 + 四旋翼 5001


    ◦ 引用通用配置:通过 . ${R}etc/init.d/rc.[class]_defaults(如 rc.mc_defaults)引用对应大类的默认配置,避免重复定义。
[6000, 6999] X型六旋翼 通用 X 六旋翼 6001


    ◦ 参数设置:param set-default 用于设置参数的默认值。
[7000, 7999] +型六旋翼 通用 + 六旋翼 7001


    ◦ 混控器 (Mixer):混控器文件(如 quad_x)通常存放在 ROMFS/px4fmu_common/mixers 目录下,定义了控制指令到具体输出通道的映射关系。
[8000, 8999] X型八旋翼 通用 X 八旋翼 8001


= 添加新机型步骤 =
[9000, 9999] +型八旋翼 通用 + 八旋翼 9001
添加一个新机型通常需完成以下步骤:
'''创建机型文件''':在 airframes 目录下,新建以未使用数字ID开头的文件(如 80003_my_custom_robot)。


'''编写配置内容''':参考现有类似机型文件,使用 Shell 语法编写配置。务必在文件开头定义 @name, @type, @class 等元数据。
[10000, 10999] 宽型/H型四旋翼 TBS Discovery 10015


'''注册机型''':修改 airframes 目录下的 CMakeLists.txt 文件,将新机型文件名添加到合适的 ID 范围区域内。
[12000, 12999] 共轴八旋翼 通用共轴八旋翼 12001


'''(可选)修改 srcparser.py''':如果使用了全新的 @type 或 @class,可能需在 Tools/px4airframes/srcparser.py 中添加映射逻辑。'''注意 Python 缩进规则''',否则会导致编译错误。
[13000, 13999] VTOL(垂直起降) 通用标准 VTOL 13000


'''生成元数据''':在 PX4 源码根目录下执行 make airframe_metadata 命令,生成包含所有机型元数据的 airframes.xml 文件。
[14000, 14999] 三旋翼 Y+ 三旋翼 14001


'''编译固件''':使用 make [你的飞控目标](如 make px4_fmu-v6_default)编译固件。
... ... (还有其他范围)


'''在地面站中显示(可选)''':若希望自定义机型在地面站(如 QGroundControl)的机型选择列表中显示,需将生成的 airframes.xml 文件提供给地面站项目并重新编译地面站。
•  中文注释:此表基于 PX4 源码中的 CMakeLists.txt 文件进行归纳。自定义机型通常建议使用较大的 ID 号(如 8xxxx, 9xxxx),以避免与官方预留的 ID 冲突。


= 示例:自定义机型片段 =
🏷️ 三、机型元数据标签
{{Aircraft
| name        = My Custom Rover
| type        = Differential Rover
| class      = Rover
| autostart_id = 80003
| maintainer  = Your Name <your.email@example.com>
}}


在机型文件中,使用特定格式的注释标签来定义机型的元数据,这些信息通常用于地面站(如 QGroundControl)的显示和选择:
#!/bin/sh
#!/bin/sh
#
#
# @name My Custom Rover
# @name Generic Quadcopter  # 机型名称:通用四旋翼
# @type Differential Rover
# @type Quadrotor x        # 机型类型:X 型四旋翼
# @class Rover
# @class Copter            # 机型大类:多旋翼
# @maintainer Your Name <your.email@example.com>
# @maintainer Lorenz Meier <lorenz@px4.io>  # 维护者信息
# @url https://www.baidu.com # 相关网址(可选)
#
# @output MAIN0 Speed of left wheels  # 输出通道功能描述:MAIN0 通道控制左轮速度
# @output MAIN1 Speed of right wheels # 输出通道功能描述:MAIN1 通道控制右轮速度
#
#
# 引用无人车默认配置
# @board px4_fmu-v2 exclude  # 板卡排除:此配置不适用于 px4_fmu-v2 板卡
. ${R}etc/init.d/rc.rover_defaults
# @board bitcraze_crazyflie exclude # 板卡排除:此配置不适用于 bitcraze_crazyflie 板卡
# 设置特定参数
 
param set-default GND_WHEEL_BASE 0.5    # 设置车轮轴距(米)
•  中文注释:
param set-default GND_SPEED_P 0.3      # 设置速度控制器P增益
# 设置混控器
set MIXER generic_diff_rover
set PWM_OUT 1234


• '''个人理解与注意事项''':
    ◦  @name:机型的名称,会显示在地面站的机型选择列表中。


     ◦ 起步建议:从复制和修改现有相近机型文件开始是最高效的方式。
     ◦   @type:机型的子类型或详细描述,如 "Quadrotor x",也会影响地面站的显示。


     ◦ 参数理解:仔细理解每个参数的意义,错误的参数设置可能导致飞行器控制异常。
     ◦   @class:机型的大类,如多旋翼(Copter)、固定翼(Plane)、无人车(Rover)等。这决定了飞控将使用哪一套核心控制算法(例如多旋翼的姿态控制器、固定翼的定点控制器等)。


     ◦ 混控器选择:混控器是核心,确保所选混控器与你的硬件布局匹配。
     ◦   @maintainer:维护者信息,说明该机型文件的主要维护者及其联系方式。


     ◦ 测试至关重要:任何修改都应在安全环境下充分测试,如仿真环境(Gazebo)。
     ◦   @output:指定输出通道的功能映射(例如,MAIN1 aileron 表示 MAIN1 通道控制副翼)。这主要用于在地面站中清晰地向用户展示每个输出通道的用途。


= 常见问题与解决 =
    ◦  @board ... exclude:板卡排除列表。指定此机型配置不适用于哪些特定的飞控板卡。
• '''编译失败''':检查 CMakeLists.txt 中机型注册的格式,以及 srcparser.py 的修改是否符合 Python 缩进规则。


• '''地面站不显示机型''':确保已执行 make airframe_metadata 并正确更新了地面站的 airframes.xml 文件。
⚙️ 四、配置内容解析


• '''参数不生效''':确认参数名称正确,且在使用 param set-default 前未在其他地方被覆盖。
机型文件本身是一个 Shell 脚本,其中主要进行参数设置和引用通用配置。
  引用通用配置:使用 . ${R}etc/init.d/rc.[class]_defaults 来引用对应大类(如多旋翼 mc、固定翼 fw)的默认配置脚本,这是一种常见的代码复用方式,可以避免在每个机型文件中重复定义相同的参数。
    . ${R}etc/init.d/rc.mc_defaults  # 引用多旋翼(Multicopter)的默认配置脚本
    . ${R}etc/init.d/rc.rover_defaults # 引用无人车(Rover)的默认配置脚本
   
•  设置参数默认值:使用 param set-default 命令为参数设置默认值。如果用户后来没有修改过该参数,则飞控将使用这里定义的默认值。
    param set-default CA_ROTOR_COUNT 4    # 设置旋翼/电机数量的默认值为 4
    param set-default CA_ROTOR0_PX 0.15    # 设置 0 号电机在机体坐标系中的 X 轴安装位置(米)
    param set-default CA_ROTOR0_PY 0.15    # 设置 0 号电机在机体坐标系中的 Y 轴安装位置(米)
    param set-default BAT1_N_CELLS 4      # 设置电池 1 的电池片数(单位:S)
    param set-default EKF2_GBIAS_INIT 0.01 # 设置扩展卡尔曼滤波器(EKF2)陀螺仪偏置初始值
    param set-default GND_SPEED_P 0.25    # 设置地面车辆速度控制器的比例(P)增益
   
•  设置混控器 (Mixer):使用 set MIXER [混控器类型] 来指定混控器文件。混控器决定了飞控的核心输出指令(如滚转、俯仰、偏航、油门)如何映射到具体的电机、舵机或其他执行器的输出通道上。
    set MIXER quad_x          # 使用名为 'quad_x' 的混控器(适用于 X 型四旋翼)
    set MIXER generic_diff_rover # 使用名为 'generic_diff_rover' 的混控器(适用于差速转向的地面车辆)
   
    ◦  中文注释:混控器文件(例如 .mix 文件)通常存放在 ROMFS/px4fmu_common/mixers 目录下,它们定义了具体的输出映射关系。


= 总结 =
📋 五、添加新机型步骤
PX4 的机型目录是一个通过数字ID和配置文件来管理系统支持的各种飞行器构型的强大且灵活的系统。理解其结构和规则对于进行二次开发或自定义机型至关重要。始终遵循“谨慎修改,充分测试”的原则。


  参见
若要添加一个新的机型,通常需要以下步骤:
[[PX4飞控系统]] - PX4系统总体介绍
1. 创建机型文件:在 airframes 目录下,新建一个文件,文件名以未使用的数字 ID 开头(例如 80003_my_custom_robot)。
2.  编写配置内容:参考现有类似机型的文件,使用 Shell 语法编写配置。务必在文件开头的注释中定义 @name, @type, @class 等信息。
3.  注册机型:修改 airframes 目录下的 CMakeLists.txt 文件,将你的新机型文件名添加到合适的 ID 范围区域内,否则编译系统不会包含它。
    # 在 CMakeLists.txt 中找到合适的位置添加,例如:
    # [80000, 81000] (Unmanned) TEST
    80003_my_custom_robot
   
4.  (可选)修改 srcparser.py:如果你的新机型使用了全新的 @type 或 @class,可能需要在 Tools/px4airframes/srcparser.py 文件中添加相应的映射逻辑,以确保元数据生成正确。修改时务必注意 Python 的缩进规则,否则会导致编译错误。
5.  生成元数据:在 PX4 源码根目录下执行 make airframe_metadata 命令。这会解析所有机型文件并生成一个 airframes.xml 文件,其中包含所有机型的元数据信息。
6.  编译固件:使用 make [你的飞控目标](例如 make px4_fmu-v6_default)编译固件。
7.  在地面站中显示(可选):如果你希望自定义机型能在地面站(如 QGroundControl)的机型选择列表中显示,需要将生成的 airframes.xml 文件提供给地面站项目并重新编译地面站。


• [[PX4混调器配置]] - 混调器配置文件详解
🧪 六、示例:MediaWiki 格式的机型配置


• [[QGroundControl机型配置]] - 地面站机型设置指南
这是一个简单的多旋翼机型配置示例,以 MediaWiki 代码块形式展示其基本结构:
{{Aircraft
| name        = Generic Quadcopter
| type        = Quadrotor X
| class      = Copter
| autostart_id = 4001
| maintainer  = Lorenz Meier <lorenz@px4.io>
}}
#!/bin/sh
#
# @name Generic Quadcopter
# @type Quadrotor X
# @class Copter
# @maintainer Lorenz Meier <lorenz@px4.io>
#
# 引用多旋翼默认参数配置
. ${R}etc/init.d/rc.mc_defaults
# 设置电机数量和位置参数
param set-default CA_ROTOR_COUNT 4
param set-default CA_ROTOR0_PX 0.15
param set-default CA_ROTOR0_PY 0.15
param set-default CA_ROTOR1_PX -0.15
param set-default CA_ROTOR1_PY 0.15
param set-default CA_ROTOR2_PX 0.15
param set-default CA_ROTOR2_PY -0.15
param set-default CA_ROTOR2_KM -0.05
param set-default CA_ROTOR3_PX -0.15
param set-default CA_ROTOR3_PY -0.15
param set-default CA_ROTOR3_KM -0.05
# 设置混控器
set MIXER quad_x
set PWM_OUT 1234


• [https://docs.px4.io/main/zh/dev_airframes/adding_a_new_frame.html PX4官方文档:添加新机型]


注释与参考资料
希望以上对 PX4 机型目录的详细解析和中文注释能帮助你更好地理解和进行机型配置。如果你在实践中遇到更具体的问题,欢迎随时提出。
<references/>
'''注意''':本文基于PX4 v1.13及以上版本编写,不同版本可能存在配置差异。修改前请备份原始文件并查阅对应版本的官方文档。

2025年9月26日 (五) 01:03的版本

PX4 的机型配置是其飞控系统的核心之一,它通过一系列配置文件定义了各类飞行器(如多旋翼、固定翼、车辆、船只等)的参数、混控器设置和控制逻辑。下面我将为你详细解析 PX4 的机型目录结构、文件内容,并提供丰富的中文注释。

📁 一、机型目录位置与结构

PX4 的机型配置文件主要存放在固件源码的以下路径中: PX4-Autopilot/ROMFS/px4fmu_common/init.d/airframes

• 中文注释:

   ◦   ROMFS:这是一个只读文件系统,这些配置文件在编译时会被打包进最终的固件映像中,确保运行时不会被修改。
   ◦   px4fmu_common:这表示这些配置是针对常见的 Pixhawk 系列飞控硬件(如 FMU 版本)的通用设置。
   ◦   init.d:此目录包含了 PX4 系统的启动脚本。在飞控板上电后,这些脚本会按顺序执行,初始化系统。
   ◦   airframes:这就是 存放所有机型定义文件的核心目录。每一个文件通常对应一种特定构型或类型的飞行器。

🔢 二、机型文件命名与 ID

机型配置文件的命名遵循 [数字ID]_[描述性名称] 的格式(例如 4001_quad_x, 2100_standard_plane)。 • 中文注释:

   ◦   数字 ID:这个数字至关重要,它唯一地对应飞控参数 SYS_AUTOSTART 的值。通过在地面站(如 QGroundControl)中设置 SYS_AUTOSTART 参数为特定的 ID 值,就可以选择并使用对应的机型配置。
   ◦   描述性名称:这通常是一个人类可读的名称,简要描述了机型的类别和构型,例如 quad_x 代表 X 型四旋翼,standard_plane 代表标准固定翼。这主要用于开发者和管理,不影响飞控逻辑。

为了更清晰地了解不同ID范围对应的机型类别,可以参考下表:

ID 范围 机型类别 示例机型 示例 ID

[1000, 1999] 仿真设置 (HIL/STIL) HIL 标准固定翼 1004

[2000, 2999] 标准固定翼 标准飞机 2100

[3000, 3999] 飞翼 通用飞翼 3000

[4000, 4999] X型四旋翼 通用 X 四旋翼 4001

[5000, 5999] +型四旋翼 通用 + 四旋翼 5001

[6000, 6999] X型六旋翼 通用 X 六旋翼 6001

[7000, 7999] +型六旋翼 通用 + 六旋翼 7001

[8000, 8999] X型八旋翼 通用 X 八旋翼 8001

[9000, 9999] +型八旋翼 通用 + 八旋翼 9001

[10000, 10999] 宽型/H型四旋翼 TBS Discovery 10015

[12000, 12999] 共轴八旋翼 通用共轴八旋翼 12001

[13000, 13999] VTOL(垂直起降) 通用标准 VTOL 13000

[14000, 14999] 三旋翼 Y+ 三旋翼 14001

... ... (还有其他范围)

• 中文注释:此表基于 PX4 源码中的 CMakeLists.txt 文件进行归纳。自定义机型通常建议使用较大的 ID 号(如 8xxxx, 9xxxx),以避免与官方预留的 ID 冲突。

🏷️ 三、机型元数据标签

在机型文件中,使用特定格式的注释标签来定义机型的元数据,这些信息通常用于地面站(如 QGroundControl)的显示和选择:

  1. !/bin/sh
  2. @name Generic Quadcopter # 机型名称:通用四旋翼
  3. @type Quadrotor x # 机型类型:X 型四旋翼
  4. @class Copter # 机型大类:多旋翼
  5. @maintainer Lorenz Meier <lorenz@px4.io> # 维护者信息
  6. @url https://www.baidu.com # 相关网址(可选)
  7. @output MAIN0 Speed of left wheels # 输出通道功能描述:MAIN0 通道控制左轮速度
  8. @output MAIN1 Speed of right wheels # 输出通道功能描述:MAIN1 通道控制右轮速度
  9. @board px4_fmu-v2 exclude # 板卡排除:此配置不适用于 px4_fmu-v2 板卡
  10. @board bitcraze_crazyflie exclude # 板卡排除:此配置不适用于 bitcraze_crazyflie 板卡

• 中文注释:

   ◦   @name:机型的名称,会显示在地面站的机型选择列表中。
   ◦   @type:机型的子类型或详细描述,如 "Quadrotor x",也会影响地面站的显示。
   ◦   @class:机型的大类,如多旋翼(Copter)、固定翼(Plane)、无人车(Rover)等。这决定了飞控将使用哪一套核心控制算法(例如多旋翼的姿态控制器、固定翼的定点控制器等)。
   ◦   @maintainer:维护者信息,说明该机型文件的主要维护者及其联系方式。
   ◦   @output:指定输出通道的功能映射(例如,MAIN1 aileron 表示 MAIN1 通道控制副翼)。这主要用于在地面站中清晰地向用户展示每个输出通道的用途。
   ◦   @board ... exclude:板卡排除列表。指定此机型配置不适用于哪些特定的飞控板卡。

⚙️ 四、配置内容解析

机型文件本身是一个 Shell 脚本,其中主要进行参数设置和引用通用配置。 • 引用通用配置:使用 . ${R}etc/init.d/rc.[class]_defaults 来引用对应大类(如多旋翼 mc、固定翼 fw)的默认配置脚本,这是一种常见的代码复用方式,可以避免在每个机型文件中重复定义相同的参数。

   . ${R}etc/init.d/rc.mc_defaults  # 引用多旋翼(Multicopter)的默认配置脚本
   . ${R}etc/init.d/rc.rover_defaults # 引用无人车(Rover)的默认配置脚本
   

• 设置参数默认值:使用 param set-default 命令为参数设置默认值。如果用户后来没有修改过该参数,则飞控将使用这里定义的默认值。

   param set-default CA_ROTOR_COUNT 4     # 设置旋翼/电机数量的默认值为 4
   param set-default CA_ROTOR0_PX 0.15    # 设置 0 号电机在机体坐标系中的 X 轴安装位置(米)
   param set-default CA_ROTOR0_PY 0.15    # 设置 0 号电机在机体坐标系中的 Y 轴安装位置(米)
   param set-default BAT1_N_CELLS 4       # 设置电池 1 的电池片数(单位:S)
   param set-default EKF2_GBIAS_INIT 0.01 # 设置扩展卡尔曼滤波器(EKF2)陀螺仪偏置初始值
   param set-default GND_SPEED_P 0.25     # 设置地面车辆速度控制器的比例(P)增益
   

• 设置混控器 (Mixer):使用 set MIXER [混控器类型] 来指定混控器文件。混控器决定了飞控的核心输出指令(如滚转、俯仰、偏航、油门)如何映射到具体的电机、舵机或其他执行器的输出通道上。

   set MIXER quad_x          # 使用名为 'quad_x' 的混控器(适用于 X 型四旋翼)
   set MIXER generic_diff_rover # 使用名为 'generic_diff_rover' 的混控器(适用于差速转向的地面车辆)
   
   ◦   中文注释:混控器文件(例如 .mix 文件)通常存放在 ROMFS/px4fmu_common/mixers 目录下,它们定义了具体的输出映射关系。

📋 五、添加新机型步骤

若要添加一个新的机型,通常需要以下步骤: 1. 创建机型文件:在 airframes 目录下,新建一个文件,文件名以未使用的数字 ID 开头(例如 80003_my_custom_robot)。 2. 编写配置内容:参考现有类似机型的文件,使用 Shell 语法编写配置。务必在文件开头的注释中定义 @name, @type, @class 等信息。 3. 注册机型:修改 airframes 目录下的 CMakeLists.txt 文件,将你的新机型文件名添加到合适的 ID 范围区域内,否则编译系统不会包含它。

   # 在 CMakeLists.txt 中找到合适的位置添加,例如:
   # [80000, 81000] (Unmanned) TEST
   80003_my_custom_robot
   

4. (可选)修改 srcparser.py:如果你的新机型使用了全新的 @type 或 @class,可能需要在 Tools/px4airframes/srcparser.py 文件中添加相应的映射逻辑,以确保元数据生成正确。修改时务必注意 Python 的缩进规则,否则会导致编译错误。 5. 生成元数据:在 PX4 源码根目录下执行 make airframe_metadata 命令。这会解析所有机型文件并生成一个 airframes.xml 文件,其中包含所有机型的元数据信息。 6. 编译固件:使用 make [你的飞控目标](例如 make px4_fmu-v6_default)编译固件。 7. 在地面站中显示(可选):如果你希望自定义机型能在地面站(如 QGroundControl)的机型选择列表中显示,需要将生成的 airframes.xml 文件提供给地面站项目并重新编译地面站。

🧪 六、示例:MediaWiki 格式的机型配置

这是一个简单的多旋翼机型配置示例,以 MediaWiki 代码块形式展示其基本结构: 模板:Aircraft

  1. !/bin/sh
  2. @name Generic Quadcopter
  3. @type Quadrotor X
  4. @class Copter
  5. @maintainer Lorenz Meier <lorenz@px4.io>
  6. 引用多旋翼默认参数配置

. ${R}etc/init.d/rc.mc_defaults

  1. 设置电机数量和位置参数

param set-default CA_ROTOR_COUNT 4 param set-default CA_ROTOR0_PX 0.15 param set-default CA_ROTOR0_PY 0.15 param set-default CA_ROTOR1_PX -0.15 param set-default CA_ROTOR1_PY 0.15 param set-default CA_ROTOR2_PX 0.15 param set-default CA_ROTOR2_PY -0.15 param set-default CA_ROTOR2_KM -0.05 param set-default CA_ROTOR3_PX -0.15 param set-default CA_ROTOR3_PY -0.15 param set-default CA_ROTOR3_KM -0.05

  1. 设置混控器

set MIXER quad_x set PWM_OUT 1234


希望以上对 PX4 机型目录的详细解析和中文注释能帮助你更好地理解和进行机型配置。如果你在实践中遇到更具体的问题,欢迎随时提出。