PX4机型目录:修订间差异

来自无人智胜
跳转到导航 跳转到搜索
Root留言 | 贡献
无编辑摘要
Root留言 | 贡献
无编辑摘要
第1行: 第1行:
PX4 的机型配置是其飞控系统的核心之一,它通过一系列配置文件定义了各类飞行器(如多旋翼、固定翼、车辆、船只等)的参数、混控器设置和控制逻辑。下面我将为你详细解析 PX4 的机型目录结构、文件内容,并提供丰富的中文注释。
== PX4 机型目录详解 ==
'''PX4 机型目录'''是 PX4 飞控系统中定义飞行器平台配置的核心部分,位于固件源代码的特定路径中。
=== 目录结构 ===
<pre>
{{Path|ROMFS/px4fmu_common/init.d/airframes}}  # 主机型配置目录
├── 1001_rc_quad_x        # 遥控X型四旋翼配置
├── 2100_standard_plane    # 标准固定翼配置
├── 4001_quad_x          # 通用X型四旋翼
├── 5001_quad_plus        # 通用+型四旋翼
└── CMakeLists.txt        # 机型编译配置文件
</pre>
'''中文注释''':此目录包含所有支持的机型定义文件,每个文件通过数字ID标识特定机型。
=== 机型配置文件示例 ===
<syntaxhighlight lang="bash">
!/bin/sh


📁 一、机型目录位置与结构
@name Generic Quadcopter X      # 机型名称:通用X型四旋翼
@type Quadrotor X                # 机型类型:X布局四旋翼
@class Copter                    # 机型类别:多旋翼类
@maintainer John Doe <john@px4.io> # 维护者信息


PX4 的机型配置文件主要存放在固件源码的以下路径中:
加载多旋翼默认参数
PX4-Autopilot/ROMFS/px4fmu_common/init.d/airframes
. ${R}etc/init.d/rc.mc_defaults   # 引用多旋翼默认配置脚本
 
设置电机参数
•  中文注释:
param set-default CA_ROTOR_COUNT 4    # 旋翼数量:4个
 
param set-default CA_ROTOR0_PX 0.15    # 0号电机X轴位置:0.15米
    ◦  ROMFS:这是一个只读文件系统,这些配置文件在编译时会被打包进最终的固件映像中,确保运行时不会被修改。
param set-default CA_ROTOR0_PY 0.15    # 0号电机Y轴位置:0.15米
 
param set-default CA_ROTOR1_PX -0.15  # 1号电机X轴位置:-0.15米
    ◦  px4fmu_common:这表示这些配置是针对常见的 Pixhawk 系列飞控硬件(如 FMU 版本)的通用设置。
param set-default CA_ROTOR1_PY 0.15    # 1号电机Y轴位置:0.15米
 
配置混控器
    ◦  init.d:此目录包含了 PX4 系统的启动脚本。在飞控板上电后,这些脚本会按顺序执行,初始化系统。
set MIXER quad_x           # 使用X型四旋翼混控器
 
set PWM_OUT 1234          # PWM输出通道配置
    ◦  airframes:这就是 存放所有机型定义文件的核心目录。每一个文件通常对应一种特定构型或类型的飞行器。
</syntaxhighlight>
 
=== 机型ID范围说明 ===
🔢 二、机型文件命名与 ID
{| class="wikitable"
 
|+ PX4机型ID范围分配表
机型配置文件的命名遵循 [数字ID]_[描述性名称] 的格式(例如 4001_quad_x, 2100_standard_plane)。
! ID范围 !! 机型类别 !! 示例 !! 说明
•  中文注释:
|-
 
| 1000-1999 || 仿真机型 || 1001_rc_quad_x || 硬件在环仿真配置
    ◦  数字 ID:这个数字至关重要,它唯一地对应飞控参数 SYS_AUTOSTART 的值。通过在地面站(如 QGroundControl)中设置 SYS_AUTOSTART 参数为特定的 ID 值,就可以选择并使用对应的机型配置。
|-
 
| 2000-2999 || 固定翼 || 2100_standard_plane || 标准固定翼飞机
    ◦  描述性名称:这通常是一个人类可读的名称,简要描述了机型的类别和构型,例如 quad_x 代表 X 型四旋翼,standard_plane 代表标准固定翼。这主要用于开发者和管理,不影响飞控逻辑。
|-
 
| 4000-4999 || 多旋翼 || 4001_quad_x || X型四旋翼飞行器
为了更清晰地了解不同ID范围对应的机型类别,可以参考下表:
|-
 
| 13000-13999 || VTOL || 13000_standard_vtol || 垂直起降飞行器
ID 范围 机型类别 示例机型 示例 ID
|}
 
'''中文注释''':ID范围系统化分配确保机型配置的一致性,自定义机型建议使用80000以上ID。
[1000, 1999] 仿真设置 (HIL/STIL) HIL 标准固定翼 1004
=== 添加新机型步骤 ===
 
{{Path|airframes}}目录创建新配置文件(例:{{Path|80001_my_custom_drone}})
[2000, 2999] 标准固定翼 标准飞机 2100
在{{Path|CMakeLists.txt}}中注册新机型:<code>80001_my_custom_drone</code>
 
编写机型配置内容(参考上述示例结构)
[3000, 3999] 飞翼 通用飞翼 3000
生成元数据:<code>make airframe_metadata</code>
 
编译固件:<code>make px4_fmu-v6_default</code>
[4000, 4999] X型四旋翼 通用 X 四旋翼 4001
=== 参见 ===
 
[[PX4飞控系统]] - PX4系统总体介绍
[5000, 5999] +型四旋翼 通用 + 四旋翼 5001
[[PX4混调器配置]] - 混调器配置文件详解
 
[[QGroundControl机型配置]] - 地面站机型设置指南
[6000, 6999] X型六旋翼 通用 X 六旋翼 6001
=== 注释 ===
 
<references/>
[7000, 7999] +型六旋翼 通用 + 六旋翼 7001
'''注意''':本页面基于PX4 v1.13版本编写,不同版本可能存在配置差异。修改机型配置前请备份原始文件。
 
如果您需要更详细的信息,建议查阅 [https://px4.io/PX4官方文档] 或访问 [https://github.com/PX4/PX4-AutopilotGitHub仓库] 获取最新代码和文档。
[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)的显示和选择:
#!/bin/sh
#
# @name Generic Quadcopter  # 机型名称:通用四旋翼
# @type Quadrotor x        # 机型类型:X 型四旋翼
# @class Copter            # 机型大类:多旋翼
# @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 板卡
# @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
| 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
 
 
希望以上对 PX4 机型目录的详细解析和中文注释能帮助你更好地理解和进行机型配置。如果你在实践中遇到更具体的问题,欢迎随时提出。

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

PX4 机型目录详解

PX4 机型目录是 PX4 飞控系统中定义飞行器平台配置的核心部分,位于固件源代码的特定路径中。

目录结构

{{Path|ROMFS/px4fmu_common/init.d/airframes}}  # 主机型配置目录
├── 1001_rc_quad_x         # 遥控X型四旋翼配置
├── 2100_standard_plane    # 标准固定翼配置
├── 4001_quad_x           # 通用X型四旋翼
├── 5001_quad_plus        # 通用+型四旋翼
└── CMakeLists.txt        # 机型编译配置文件

中文注释:此目录包含所有支持的机型定义文件,每个文件通过数字ID标识特定机型。

机型配置文件示例

<syntaxhighlight lang="bash"> !/bin/sh

@name Generic Quadcopter X # 机型名称:通用X型四旋翼 @type Quadrotor X # 机型类型:X布局四旋翼 @class Copter # 机型类别:多旋翼类 @maintainer John Doe <john@px4.io> # 维护者信息

加载多旋翼默认参数 . ${R}etc/init.d/rc.mc_defaults # 引用多旋翼默认配置脚本 设置电机参数 param set-default CA_ROTOR_COUNT 4 # 旋翼数量:4个 param set-default CA_ROTOR0_PX 0.15 # 0号电机X轴位置:0.15米 param set-default CA_ROTOR0_PY 0.15 # 0号电机Y轴位置:0.15米 param set-default CA_ROTOR1_PX -0.15 # 1号电机X轴位置:-0.15米 param set-default CA_ROTOR1_PY 0.15 # 1号电机Y轴位置:0.15米 配置混控器 set MIXER quad_x # 使用X型四旋翼混控器 set PWM_OUT 1234 # PWM输出通道配置 </syntaxhighlight>

机型ID范围说明

PX4机型ID范围分配表
ID范围 机型类别 示例 说明
1000-1999 仿真机型 1001_rc_quad_x 硬件在环仿真配置
2000-2999 固定翼 2100_standard_plane 标准固定翼飞机
4000-4999 多旋翼 4001_quad_x X型四旋翼飞行器
13000-13999 VTOL 13000_standard_vtol 垂直起降飞行器

中文注释:ID范围系统化分配确保机型配置的一致性,自定义机型建议使用80000以上ID。

添加新机型步骤

模板:Path目录创建新配置文件(例:模板:Path) 在模板:Path中注册新机型:80001_my_custom_drone 编写机型配置内容(参考上述示例结构) 生成元数据:make airframe_metadata 编译固件:make px4_fmu-v6_default

参见

PX4飞控系统 - PX4系统总体介绍 PX4混调器配置 - 混调器配置文件详解 QGroundControl机型配置 - 地面站机型设置指南

注释

<references/> 注意:本页面基于PX4 v1.13版本编写,不同版本可能存在配置差异。修改机型配置前请备份原始文件。 如果您需要更详细的信息,建议查阅 [1] 或访问 [2] 获取最新代码和文档。