# 添加新的机身配置
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
- 如果要反转 PWM 信号,就必须改变输出标度的符号:
- 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 伺服器输出端 0 和 1 和电机速度控制输出 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 (打开新窗口).
如果机身用于 新组 您还需要
- 将该组的 svg 图像添加到用户指南文档中(如果未提供图像,则显示占位符图像): assets/airframes/types (打开新窗口)
- 中添加新组名和图像文件名之间的映射。 srcparser.py (打开新窗口) 方法
GetImageName()
(按照下面的模式):def GetImageName(self): """ 获取参数组图像的基本名称(不含扩展名) """ if (self.name == "Standard Plane"): return "Plane" elif (self.name == "Flying Wing"): return "FlyingWing" ... ... return "AirframeUnknown";
- 更新 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 机身配置:
- 进行干净的构建(例如,运行
一扫而光
然后make px4_fmu-v5_default
) - 打开 QGC 并选择 自定义固件文件... 如下图所示:
您将被要求选择 .px4 要闪存的固件文件(该文件是一个压缩的 JSON 文件,包含机身元数据)。
- 导航至构建文件夹并选择固件文件(例如 PX4-Autopilot/build/px4_fmu-v5_default/px4_fmu-v5_default.px4).
- 新闻 好的 开始刷新固件。
- 重新启动 QGroundControl.
届时,新机身将在以下地点供选择 QGroundControl.