# 添加新的机身配置

PX4 使用罐装机身配置作为机身的起点。这些配置在 配置文件 中存储的 ROMFS/px4fmu_common/init.d (打开新窗口) 文件夹。

添加配置非常简单:在 init.d/airframes 文件夹 (打开新窗口) (在文件名前加上未使用的自动启动 ID),将新机身配置文件的名称添加到 CMakeLists.txt (打开新窗口)构建和上传 软件。

如果开发人员不想创建自己的配置,可以使用 microSD 卡上的文本文件来定制现有配置,详情请参见 自定义系统启动 page.

备注

要确定需要在配置文件中设置哪些参数/值,可以先分配一个通用机身并调整飞行器,然后使用 参数 show-for-airframe 列出更改的参数。

# 配置文件概述

配置文件由几个主要模块组成:

  • 机身文件(用于 机身参考QGroundControl).
  • 机身特定参数设置,包括 调整参数增益
  • 应启动的控制器和应用程序,如多旋翼或固定翼控制器、着陆探测器等。
  • 系统的物理配置(如飞机、机翼或多旋翼飞行器)和几何形状。可以使用 混合器文件 或使用 控制分配 参数(来自 PX4 v1.13)。

这些方面大多是独立的,这意味着许多配置共享相同的机身物理布局,启动相同的应用,而最大的区别在于其调整增益。

备注

新的机身文件只有在完成构建后才会自动添加到构建系统中(运行 一扫而光).

# 配置文件

典型的配置文件如下 (原文件在此 (打开新窗口)).

第一部分是机身文档。这部分用于 机身参考QGroundControl.

#!/bin/sh
#
# @name Wing Wing(又名 Z-84)飞行翼
#
# @url https://px-4.com/master/en/frames_plane/wing_wing_z84.html
#
# @型飞翼
# @类平面
#
# @输出 MAIN1 左副翼
# @输出 MAIN2 右副翼
# @output MAIN4 throttle
#
# @output AUX1 feed-through of RC AUX1 channel
# @output AUX2 feed-through of RC AUX2 channel
# @output AUX3 feed-through of RC AUX3 channel
#
# @维护者 Lorenz Meier <[email protected]>;
#
# @board px4_fmu-v2 exclude
# @board bitcraze_crazyflie exclude
#

下一节规定了载具的具体参数,包括 调整参数增益:

. ${R}etc/init.d/rc.fw_defaults param set-default BAT_N_CELLS 2
参数 set-default FW_AIRSPD_MAX 15
参数 set-default FW_AIRSPD_MIN 10
参数 set-default FW_AIRSPD_TRIM 13
参数 set-default FW_R_TC 0.3
参数 set-default FW_P_TC 0.3
参数 set-default FW_L1_DAMPING 0.74
参数 set-default FW_L1_PERIOD 16
参数 set-default FW_LND_ANG 15
参数 set-default FW_LND_FLALT 5
参数 set-default FW_LND_HHDIST 15
参数 set-default FW_LND_HVIRT 13
参数 set-default FW_LND_TLALT 5
参数 set-default FW_THR_LND_MAX 0
参数 set-default FW_PR_FF 0.35
参数 set-default FW_RR_FF 0.6
参数 set-default FW_RR_P 0.04

参数 set-default PWM_MAIN_DISARM 1000

设置帧类型 (MAV_TYPE (打开新窗口)):

# 将其配置为平面
设置 MAV_TYPE 1

设置 混频器 使用(如果 控制分配 未启用):

# 设置混合器
设置 MIXER 机翼

配置 PWM 输出(指定要驱动/激活的输出以及电平)。

设置 PWM_OUT 4

警告

如果您想反转频道,千万不要在遥控发射机上进行,或使用例如 RC1_REV.只有在手动模式下飞行时,通道才会反转,而当您切换到自动驾驶飞行模式时,通道输出仍然是错误的(它只是反转您的遥控信号)。因此,要想获得正确的通道分配,可以用以下两种方法改变 PWM 信号 PWM_MAIN_REV1 (例如通道 1)或更改相应混音器中输出缩放的符号(见下文)。

# 混合器文件

备注

混合器文件将由 控制分配 参数的下一个版本(PX4 v1.13 之后)。

在 PX4 v1.13 中,您可以通过设置 sys_ctrl_alloc=1.如果启用,则可以使用 CA_* 机身配置文件中的参数,如图所示 13200_generic_vtol_tailsitter (打开新窗口).

备注

首读 概念 > 混合.这提供了解释该混音器文件所需的背景信息。

混音器文件 描述了系统的物理配置,并存储在 ROMFS/px4fmu_common/mixers (打开新窗口) 文件夹。

典型的混合器文件如下 (原文件在此 (打开新窗口)).混合器文件名,在本例中为 wingwing.main.mix在该文件中,提供了有关机身类型的重要信息 (翼翅)、输出类型 (.main.aux最后,它是一个混合文件 (.混合).

混合器文件包含多个代码块,每个代码块指向一个执行器或电调。因此,如果您有两个舵机和一个电调,混合器文件将包含三个代码块。

备注

舵机/电机的插头按照该文件中混频器的顺序排列。

因此,MAIN1 为左副翼,MAIN2 为右副翼,MAIN3 为空(注意 Z:零混合器),MAIN4 为节流阀(将节流阀保持在输出 4 上,用于常见的固定翼配置)。

混频器以 -10000 至 10000 的标准化单位进行编码,相当于 -1...+ 1。

M: 2 O: 10000 10000 0 -10000 10000 S: 0 0 -6000 -6000 0 -10000 10000 S: 0 1 6500 6500 0 -10000 10000

从左到右每个数字的含义是

  • M:表示两个控制输入的两个缩放器。它表示混音器将接收的控制输入的数量。
  • O:表示输出缩放(负*1,正*1)、偏移(此处为零)和输出范围(此处为-1...+1)。
    • 如果要反转 PWM 信号,就必须改变输出标度的符号:
      O: -10000 -10000 0 -10000 10000
      
    • 如果这一行指定了默认缩放比例,则可以(也应该)完全省略:
      O: 10000 10000 0 -10000 10000
      
  • S:表示第一个输入缩放器:它接收来自 0 号控制组(飞行控制)的输入和第一个输入(滚动)。它对滚动控制输入*0.6 进行缩放并反转符号(-0.6 在缩放单位中变为 -6000)。它不应用偏移(0),并在全范围内输出(-1...+1)
  • S:表示第二个输入缩放器:它接收来自 0 号控制组(飞行控制)和第二个输入(俯仰)的输入。
    它对频率控制输入进行缩放 * 0.65。它没有偏移(0),输出为全量程(-1...+1)。

备注

简而言之,该混合器的输出为 SERVO = ( (滚动输入 * -0.6 + 0) * 1 + (俯仰输入 * 0.65 + 0) * 1 )* 1 + 0

在幕后,两个缩放器都被添加,这对飞行翼来说意味着控制面最大承受 60% 的滚转偏转和 65% 的俯仰偏转。

完整的混合器看起来是这样的

三角翼混合器 对于 PX4FMU
===========================

设计 对于 Wing Wing Z-84 This 文件 定义适合的搅拌器 对于 使用 PX4FMU 控制三角翼飞机。该配置假定升降舵伺服器连接到 PX4FMU 伺服器输出端 01 和电机速度控制输出 3.输出 2 假定未使用。混音器的输入来自通道组 0 (车态)渠道 0
(滚动), 1 (沥青)3 (主要内容).请参见 README 对于 更多 有关缩放器格式的信息。Elevon 混合器 ------------- 共三个缩放器 (输出、滚动、俯仰).缩放因子 对于 调整滚动输入,以实现差分行程
对于 升降器。这第一段代码是 对于 伺服 0...M: 2
O:      10000  10000      0 -10000  10000
S: 0 0  -6000 -6000      0 -10000  10000
S: 0 1   6500   6500      0 -10000  10000

这就是 对于 伺服 1...M: 2
O:      10000  10000      0 -10000  10000
S: 0 0  -6000 -6000      0 -10000  10000
S: 0 1  -6500 -6500      0 -10000  10000

请注意  原则上,可以实现左右翼不对称混合,但  一般来说,这两个代码块的数字相等,只是第三行的符号不同而已 (S: 0 1)因为要使飞机翻滚,两个副翼必须移动  相反方向。第二行的标志 (S: 0 0) 是相同的,因为要使飞机俯仰,两个舵机都需要移动  方向相同。输出 2
-------- 该混合器是空的。Z:电机转速混合器 ----------------- 共两个缩放器 (输出、推力).该混音器可产生全频输出 (-1至 1) 从输入 (0 - 1)
范围。低于零的输入被视为零。M: 1
O:      10000  10000      0 -10000  10000
S: 0 3      0  20000 -10000 -10000  10000

# 添加新机身组

机身组用于将相似的机身归为一组,以便在以下应用程序中进行选择 QGroundControl (打开新窗口) 并在 机身参考 文件 (PX4 开发指南PX4 用户指南).每个组都有一个名称和一个相关的 svg 图像,其中显示了分组机身的通用几何形状、发动机数量和发动机旋转方向。

所使用的机身元数据文件。 QGroundControl 和文档源代码是通过脚本使用构建命令从机身描述中生成的: 制作机身元数据

对于隶属于现有组别的新机体,您只需在位于以下网址的机体说明中提供文档即可。 ROMFS/px4fmu_common/init.d (打开新窗口).

如果机身用于 新组 您还需要

  1. 将该组的 svg 图像添加到用户指南文档中(如果未提供图像,则显示占位符图像): assets/airframes/types (打开新窗口)
  2. 中添加新组名和图像文件名之间的映射。 srcparser.py (打开新窗口) 方法 GetImageName() (按照下面的模式):
    def GetImageName(self): """ 获取参数组图像的基本名称(不含扩展名) """ if (self.name == "Standard Plane"): return "Plane" elif (self.name == "Flying Wing"): return "FlyingWing" ... ... return "AirframeUnknown";
    
  3. 更新 QGroundControl:
    • 将 svg 图像添加到组中: src/AutopilotPlugins/Common/images (打开新窗口)
    • qgcimages.qrc (打开新窗口)按照下面的模式进行:
      <qresource prefix="/qmlimages"> ... <file alias="Airframe/AirframeSimulation">src/AutoPilotPlugins/Common/Images/AirframeSimulation.svg</file> <file alias="Airframe/AirframeUnknown">src/AutoPilotPlugins/Common/Images/AirframeUnknown.svg</file> <file alias="Airframe/Boat">src/AutoPilotPlugins/Common/Images/Boat.svg</file> <file alias="Airframe/FlyingWing">src/AutoPilotPlugins/Common/Images/FlyingWing.svg</file> ...
      

    备注

    其余的机身元数据应自动包含在固件中(一旦 srcparser.py 已更新)。

# 调整参数增益

以下主题将介绍如何调整配置文件中指定的参数:

# 为 QGroundControl 添加新机身

要使新机身在 QGroundControl 机身配置:

  1. 进行干净的构建(例如,运行 一扫而光 然后 make px4_fmu-v5_default)
  2. 打开 QGC 并选择 自定义固件文件... 如下图所示:

QGC 闪存定制固件

您将被要求选择 .px4 要闪存的固件文件(该文件是一个压缩的 JSON 文件,包含机身元数据)。

  1. 导航至构建文件夹并选择固件文件(例如 PX4-Autopilot/build/px4_fmu-v5_default/px4_fmu-v5_default.px4).
  2. 新闻 好的 开始刷新固件。
  3. 重新启动 QGroundControl.

届时,新机身将在以下地点供选择 QGroundControl.