查看“︁PX4机型目录”︁的源代码
←
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范围及其类别: {| class="wikitable" |+ PX4机型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 # # @name Generic Quadcopter # 机型名称:显示在地面站的选择列表中 # @type Quadrotor x # 机型子类型:如X型四旋翼,影响地面站显示 # @class Copter # 机型大类:决定飞控使用的核心控制算法(如多旋翼、固定翼) # @maintainer Name <email> # 维护者信息 # @output MAIN1 aileron # 输出通道功能描述:MAIN1通道控制副翼 # @board px4_fmu-v2 exclude # 板卡排除:此配置不适用于指定飞控板 #'''个人理解''':这些元数据标签是连接机型配置与地面站UI的桥梁,确保用户能正确识别和选择机型。 === 配置文件内容解析 === 机型文件是 Shell 脚本,主要进行参数设置、引用通用配置和设置混控器。 bashbash复制#!/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文件提供给地面站项目并重新编译地面站。 === 示例:自定义机型片段 === bashbash复制{{Aircraft | name = My Custom Rover | type = Differential Rover | class = Rover | autostart_id = 80003 | maintainer = Your Name <your.email@example.com> }}bashbash复制#!/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机型配置]] - 地面站机型设置指南 [https://docs.px4.io/main/zh/dev_airframes/adding_a_new_frame.htmlPX4官方文档:添加新机型]
该页面使用的模板:
模板:Path
(
查看源代码
)
返回
PX4机型目录
。
导航菜单
个人工具
创建账号
登录
命名空间
页面
讨论
大陆简体
查看
阅读
查看源代码
查看历史
更多
搜索
无人智胜
PX4 介绍
PX4与ArduPilot对比
PX4与Pixhawk关系
PX4与NuttX关系
PX4 官方镜像
发布日志
QGC地面站下载
新手上路
首次飞行
机架选择
传感器校准
遥控器连接
遥控器校准
电机电调测试
飞行模式
六段开关飞行模式
参数列表
任务规划
安全飞行
飞控硬件
Pixhawk飞控
电机与电调
传感器指南
GPS与罗盘
数传与遥控
PX4二次开发
PX4源码目录
PX4核心源码
PX4机型目录
4001_quad_x
编译PX4
模块开发
驱动程序
仿真教程
调试技巧
传感器与估计
EKF2状态估计
IMU校准
视觉定位
光流定位
日志分析
机架与平台
飞行器气动布局
多旋翼无人机
固定翼无人机
VTOL无人机
无人地面车辆
无人船
外围设备
相机与云台
任务载荷
避障与导航
RTK-GPS
编程与开发
Linux
ESP32
STM32
ArduPilot
修改侧边栏
社区讨论
贡献文档
PX4官网
开发文档
工具
链入页面
相关更改
页面信息
导航
特殊页面