PX4机型目录
PX4 机型目录详解
PX4 机型目录是 PX4 飞控系统中定义飞行器平台配置的核心部分,它通过一系列配置文件决定了飞控如何控制不同类型的飞行器(如多旋翼、固定翼、车辆、船只等)。这些配置文件包含了参数设置、混控器配置和控制逻辑。
目录位置与结构
PX4 的机型配置文件主要存放在固件源码的以下路径中: bashbash复制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范围及其类别:
ID范围 | 机型类别 | 示例ID | 说明 |
---|---|---|---|
1000-1999 | 仿真设置 (HIL/STIL) | 1004
硬件在环仿真配置2000-2999标准固定翼2100标准固定翼飞机-3000-3999飞翼3000通用飞翼-4000-4999X型四旋翼4001通用 X 四旋翼-5000-5999+型四旋翼5001通用 + 四旋翼-13000-13999VTOL13000垂直起降飞行器-............}注意:自定义机型通常建议使用较大的 ID(如 8xxxx, 9xxxx),以避免冲突。 机型元数据标签在机型文件中,使用特定格式的注释标签定义元数据,这些信息用于地面站(如 QGroundControl)的显示和选择: bashbash复制#!/bin/sh
配置文件内容解析机型文件是 Shell 脚本,主要进行参数设置、引用通用配置和设置混控器。 bashbash复制#!/bin/sh
. ${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)增益
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文件提供给地面站项目并重新编译地面站。 示例:自定义机型片段bashbash复制模板:Aircraftbashbash复制#!/bin/sh
. ${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机型配置 - 地面站机型设置指南 [1] |