PX4机型目录:修订间差异
无编辑摘要 |
无编辑摘要 |
||
第1行: | 第1行: | ||
以下是基于 MediaWiki 语法格式的 PX4 机型目录详细解析,包含全面说明、中文注释和个人理解: | |||
PX4 机型目录详解 | |||
'''PX4 机型目录'''是 PX4 飞控系统中定义飞行器平台配置的核心部分,它通过一系列配置文件决定了飞控如何控制不同类型的飞行器(如多旋翼、固定翼、车辆、船只等)。这些配置文件包含了参数设置、混控器配置和控制逻辑。 | '''PX4 机型目录'''是 PX4 飞控系统中定义飞行器平台配置的核心部分,它通过一系列配置文件决定了飞控如何控制不同类型的飞行器(如多旋翼、固定翼、车辆、船只等)。这些配置文件包含了参数设置、混控器配置和控制逻辑。 | ||
= 目录位置与结构 = | |||
PX4 的机型配置文件主要存放在固件源码的以下路径中: | PX4 的机型配置文件主要存放在固件源码的以下路径中: | ||
PX4-Autopilot/ROMFS/px4fmu_common/init.d/airframes | |||
机型文件的命名格式为:[数字ID]_[描述性名称](例如 | • '''中文注释''':ROMFS 是一个只读文件系统,这些配置文件在编译时会被打包进固件。px4fmu_common 表示这些配置适用于常见的 Pixhawk 系列飞控硬件。init.d 包含系统启动脚本,而 airframes 子目录专门存放所有机型定义文件。 | ||
'''中文注释''': | |||
'''数字 ID''':此数字唯一对应飞控参数 | = 机型文件命名规则 = | ||
'''描述性名称''':通常描述了机型的类别和构型,如 | 机型文件的命名格式为:[数字ID]_[描述性名称](例如 4001_quad_x,2100_standard_plane)。 | ||
• '''中文注释''': | |||
◦ '''数字 ID''':此数字唯一对应飞控参数 SYS_AUTOSTART 的值。通过设置 SYS_AUTOSTART 为特定 ID,即可选择对应的机型。 | |||
◦ '''描述性名称''':通常描述了机型的类别和构型,如 quad_x 代表 X 型四旋翼。 | |||
下表总结了主要的机型ID范围及其类别: | 下表总结了主要的机型ID范围及其类别: | ||
{ | {class="wikitable" | ||
+ PX4机型ID范围分配表 | |||
! 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(如 8xxxx, 9xxxx),以避免冲突。 | |||
= 机型元数据标签 = | |||
在机型文件中,使用特定格式的注释标签定义元数据,这些信息用于地面站(如 QGroundControl)的显示和选择: | 在机型文件中,使用特定格式的注释标签定义元数据,这些信息用于地面站(如 QGroundControl)的显示和选择: | ||
#!/bin/sh | |||
# | # | ||
# @name Generic Quadcopter # 机型名称:显示在地面站的选择列表中 | # @name Generic Quadcopter # 机型名称:显示在地面站的选择列表中 | ||
第31行: | 第68行: | ||
# @output MAIN1 aileron # 输出通道功能描述:MAIN1通道控制副翼 | # @output MAIN1 aileron # 输出通道功能描述:MAIN1通道控制副翼 | ||
# @board px4_fmu-v2 exclude # 板卡排除:此配置不适用于指定飞控板 | # @board px4_fmu-v2 exclude # 板卡排除:此配置不适用于指定飞控板 | ||
#'''个人理解''':这些元数据标签是连接机型配置与地面站UI的桥梁,确保用户能正确识别和选择机型。 | # | ||
• '''个人理解''':这些元数据标签是连接机型配置与地面站UI的桥梁,确保用户能正确识别和选择机型。 | |||
= 配置文件内容解析 = | |||
机型文件是 Shell 脚本,主要进行参数设置、引用通用配置和设置混控器。 | 机型文件是 Shell 脚本,主要进行参数设置、引用通用配置和设置混控器。 | ||
#!/bin/sh | |||
# | # | ||
# @name Generic Quadcopter | # @name Generic Quadcopter | ||
第52行: | 第92行: | ||
# 设置混控器 (Mixer):决定飞控输出指令如何映射到执行器 | # 设置混控器 (Mixer):决定飞控输出指令如何映射到执行器 | ||
set MIXER quad_x # 使用名为'quad_x'的混控器(适用于X型四旋翼) | set MIXER quad_x # 使用名为'quad_x'的混控器(适用于X型四旋翼) | ||
set PWM_OUT 1234 # 设置PWM输出通道'''关键点说明''': | set PWM_OUT 1234 # 设置PWM输出通道 | ||
• '''关键点说明''': | |||
◦ 引用通用配置:通过 . ${R}etc/init.d/rc.[class]_defaults(如 rc.mc_defaults)引用对应大类的默认配置,避免重复定义。 | |||
◦ 参数设置:param set-default 用于设置参数的默认值。 | |||
◦ 混控器 (Mixer):混控器文件(如 quad_x)通常存放在 ROMFS/px4fmu_common/mixers 目录下,定义了控制指令到具体输出通道的映射关系。 | |||
= 添加新机型步骤 = | |||
添加一个新机型通常需完成以下步骤: | 添加一个新机型通常需完成以下步骤: | ||
'''创建机型文件''':在 | '''创建机型文件''':在 airframes 目录下,新建以未使用数字ID开头的文件(如 80003_my_custom_robot)。 | ||
'''编写配置内容''':参考现有类似机型文件,使用 Shell 语法编写配置。务必在文件开头定义 @name, @type, @ | |||
'''注册机型''':修改 | '''编写配置内容''':参考现有类似机型文件,使用 Shell 语法编写配置。务必在文件开头定义 @name, @type, @class 等元数据。 | ||
'''(可选)修改 srcparser.py''':如果使用了全新的 @ | |||
'''生成元数据''':在 PX4 源码根目录下执行 make | '''注册机型''':修改 airframes 目录下的 CMakeLists.txt 文件,将新机型文件名添加到合适的 ID 范围区域内。 | ||
'''(可选)修改 srcparser.py''':如果使用了全新的 @type 或 @class,可能需在 Tools/px4airframes/srcparser.py 中添加映射逻辑。'''注意 Python 缩进规则''',否则会导致编译错误。 | |||
'''生成元数据''':在 PX4 源码根目录下执行 make airframe_metadata 命令,生成包含所有机型元数据的 airframes.xml 文件。 | |||
'''编译固件''':使用 make [你的飞控目标](如 make px4_fmu-v6_default)编译固件。 | '''编译固件''':使用 make [你的飞控目标](如 make px4_fmu-v6_default)编译固件。 | ||
'''在地面站中显示(可选)''':若希望自定义机型在地面站(如 QGroundControl)的机型选择列表中显示,需将生成的 airframes. | |||
'''在地面站中显示(可选)''':若希望自定义机型在地面站(如 QGroundControl)的机型选择列表中显示,需将生成的 airframes.xml 文件提供给地面站项目并重新编译地面站。 | |||
= 示例:自定义机型片段 = | |||
{{Aircraft | |||
| name = My Custom Rover | | name = My Custom Rover | ||
| type = Differential Rover | | type = Differential Rover | ||
第72行: | 第125行: | ||
| autostart_id = 80003 | | autostart_id = 80003 | ||
| maintainer = Your Name <your.email@example.com> | | maintainer = Your Name <your.email@example.com> | ||
}} | }} | ||
#!/bin/sh | |||
# | # | ||
# @name My Custom Rover | # @name My Custom Rover | ||
第86行: | 第141行: | ||
# 设置混控器 | # 设置混控器 | ||
set MIXER generic_diff_rover | set MIXER generic_diff_rover | ||
set PWM_OUT 1234'''个人理解与注意事项''': | set PWM_OUT 1234 | ||
• '''个人理解与注意事项''': | |||
◦ 起步建议:从复制和修改现有相近机型文件开始是最高效的方式。 | |||
'''编译失败''':检查 CMakeLists. | ◦ 参数理解:仔细理解每个参数的意义,错误的参数设置可能导致飞行器控制异常。 | ||
'''地面站不显示机型''':确保已执行 make | |||
'''参数不生效''':确认参数名称正确,且在使用 param set- | ◦ 混控器选择:混控器是核心,确保所选混控器与你的硬件布局匹配。 | ||
◦ 测试至关重要:任何修改都应在安全环境下充分测试,如仿真环境(Gazebo)。 | |||
= 常见问题与解决 = | |||
• '''编译失败''':检查 CMakeLists.txt 中机型注册的格式,以及 srcparser.py 的修改是否符合 Python 缩进规则。 | |||
• '''地面站不显示机型''':确保已执行 make airframe_metadata 并正确更新了地面站的 airframes.xml 文件。 | |||
• '''参数不生效''':确认参数名称正确,且在使用 param set-default 前未在其他地方被覆盖。 | |||
= 总结 = | |||
PX4 的机型目录是一个通过数字ID和配置文件来管理系统支持的各种飞行器构型的强大且灵活的系统。理解其结构和规则对于进行二次开发或自定义机型至关重要。始终遵循“谨慎修改,充分测试”的原则。 | PX4 的机型目录是一个通过数字ID和配置文件来管理系统支持的各种飞行器构型的强大且灵活的系统。理解其结构和规则对于进行二次开发或自定义机型至关重要。始终遵循“谨慎修改,充分测试”的原则。 | ||
[[PX4飞控系统]] - PX4系统总体介绍 | 参见 | ||
[[PX4混调器配置]] - 混调器配置文件详解 | • [[PX4飞控系统]] - PX4系统总体介绍 | ||
[[QGroundControl机型配置]] - 地面站机型设置指南 | |||
[https://docs.px4.io/main/zh/dev_airframes/adding_a_new_frame. | • [[PX4混调器配置]] - 混调器配置文件详解 | ||
• [[QGroundControl机型配置]] - 地面站机型设置指南 | |||
• [https://docs.px4.io/main/zh/dev_airframes/adding_a_new_frame.html PX4官方文档:添加新机型] | |||
注释与参考资料 | |||
<references/> | |||
'''注意''':本文基于PX4 v1.13及以上版本编写,不同版本可能存在配置差异。修改前请备份原始文件并查阅对应版本的官方文档。 |
2025年9月26日 (五) 01:02的版本
以下是基于 MediaWiki 语法格式的 PX4 机型目录详细解析,包含全面说明、中文注释和个人理解:
PX4 机型目录详解
PX4 机型目录是 PX4 飞控系统中定义飞行器平台配置的核心部分,它通过一系列配置文件决定了飞控如何控制不同类型的飞行器(如多旋翼、固定翼、车辆、船只等)。这些配置文件包含了参数设置、混控器配置和控制逻辑。
目录位置与结构
PX4 的机型配置文件主要存放在固件源码的以下路径中: PX4-Autopilot/ROMFS/px4fmu_common/init.d/airframes
• 中文注释:ROMFS 是一个只读文件系统,这些配置文件在编译时会被打包进固件。px4fmu_common 表示这些配置适用于常见的 Pixhawk 系列飞控硬件。init.d 包含系统启动脚本,而 airframes 子目录专门存放所有机型定义文件。
机型文件命名规则
机型文件的命名格式为:[数字ID]_[描述性名称](例如 4001_quad_x,2100_standard_plane)。 • 中文注释:
◦ 数字 ID:此数字唯一对应飞控参数 SYS_AUTOSTART 的值。通过设置 SYS_AUTOSTART 为特定 ID,即可选择对应的机型。
◦ 描述性名称:通常描述了机型的类别和构型,如 quad_x 代表 X 型四旋翼。
下表总结了主要的机型ID范围及其类别: {class="wikitable"
+ PX4机型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(如 8xxxx, 9xxxx),以避免冲突。
机型元数据标签
在机型文件中,使用特定格式的注释标签定义元数据,这些信息用于地面站(如 QGroundControl)的显示和选择:
- !/bin/sh
- @name Generic Quadcopter # 机型名称:显示在地面站的选择列表中
- @type Quadrotor x # 机型子类型:如X型四旋翼,影响地面站显示
- @class Copter # 机型大类:决定飞控使用的核心控制算法(如多旋翼、固定翼)
- @maintainer Name <email> # 维护者信息
- @output MAIN1 aileron # 输出通道功能描述:MAIN1通道控制副翼
- @board px4_fmu-v2 exclude # 板卡排除:此配置不适用于指定飞控板
• 个人理解:这些元数据标签是连接机型配置与地面站UI的桥梁,确保用户能正确识别和选择机型。
配置文件内容解析
机型文件是 Shell 脚本,主要进行参数设置、引用通用配置和设置混控器。
- !/bin/sh
- @name Generic Quadcopter
- @type Quadrotor X
- @class Copter
- 引用多旋翼默认参数配置
. ${R}etc/init.d/rc.mc_defaults # 引用多旋翼(Multicopter)的默认配置脚本,实现代码复用
- 设置参数默认值:如果用户未修改参数,则使用此默认值
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):决定飞控输出指令如何映射到执行器
set MIXER quad_x # 使用名为'quad_x'的混控器(适用于X型四旋翼) set PWM_OUT 1234 # 设置PWM输出通道
• 关键点说明:
◦ 引用通用配置:通过 . ${R}etc/init.d/rc.[class]_defaults(如 rc.mc_defaults)引用对应大类的默认配置,避免重复定义。
◦ 参数设置:param set-default 用于设置参数的默认值。
◦ 混控器 (Mixer):混控器文件(如 quad_x)通常存放在 ROMFS/px4fmu_common/mixers 目录下,定义了控制指令到具体输出通道的映射关系。
添加新机型步骤
添加一个新机型通常需完成以下步骤: 创建机型文件:在 airframes 目录下,新建以未使用数字ID开头的文件(如 80003_my_custom_robot)。
编写配置内容:参考现有类似机型文件,使用 Shell 语法编写配置。务必在文件开头定义 @name, @type, @class 等元数据。
注册机型:修改 airframes 目录下的 CMakeLists.txt 文件,将新机型文件名添加到合适的 ID 范围区域内。
(可选)修改 srcparser.py:如果使用了全新的 @type 或 @class,可能需在 Tools/px4airframes/srcparser.py 中添加映射逻辑。注意 Python 缩进规则,否则会导致编译错误。
生成元数据:在 PX4 源码根目录下执行 make airframe_metadata 命令,生成包含所有机型元数据的 airframes.xml 文件。
编译固件:使用 make [你的飞控目标](如 make px4_fmu-v6_default)编译固件。
在地面站中显示(可选):若希望自定义机型在地面站(如 QGroundControl)的机型选择列表中显示,需将生成的 airframes.xml 文件提供给地面站项目并重新编译地面站。
示例:自定义机型片段
- !/bin/sh
- @name My Custom Rover
- @type Differential Rover
- @class Rover
- @maintainer Your Name <your.email@example.com>
- 引用无人车默认配置
. ${R}etc/init.d/rc.rover_defaults
- 设置特定参数
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
• 个人理解与注意事项:
◦ 起步建议:从复制和修改现有相近机型文件开始是最高效的方式。
◦ 参数理解:仔细理解每个参数的意义,错误的参数设置可能导致飞行器控制异常。
◦ 混控器选择:混控器是核心,确保所选混控器与你的硬件布局匹配。
◦ 测试至关重要:任何修改都应在安全环境下充分测试,如仿真环境(Gazebo)。
常见问题与解决
• 编译失败:检查 CMakeLists.txt 中机型注册的格式,以及 srcparser.py 的修改是否符合 Python 缩进规则。
• 地面站不显示机型:确保已执行 make airframe_metadata 并正确更新了地面站的 airframes.xml 文件。
• 参数不生效:确认参数名称正确,且在使用 param set-default 前未在其他地方被覆盖。
总结
PX4 的机型目录是一个通过数字ID和配置文件来管理系统支持的各种飞行器构型的强大且灵活的系统。理解其结构和规则对于进行二次开发或自定义机型至关重要。始终遵循“谨慎修改,充分测试”的原则。
参见
• PX4飞控系统 - PX4系统总体介绍
• PX4混调器配置 - 混调器配置文件详解
• QGroundControl机型配置 - 地面站机型设置指南
注释与参考资料
<references/> 注意:本文基于PX4 v1.13及以上版本编写,不同版本可能存在配置差异。修改前请备份原始文件并查阅对应版本的官方文档。