# 添加框架配置

PX4 飞行器机型文件 是 shell 脚本,用于设置特定飞行器框架(如四旋翼飞行器、地面飞行器或船只)所需的部分(或全部)参数、控制器和应用程序。当相应的 选择并应用机身QGroundControl.

编译成 NuttX 目标器固件的配置文件位于 ROMFS/px4fmu_common/init.d (打开新窗口) 文件夹(POSIX 模拟器的配置文件存储在 ROMFS/px4fmu_common/init.d-posix (打开新窗口)).该文件夹既包含特定载具的完整配置,也包含不同载具类型的部分通用配置。通用配置通常用作创建新配置文件的起点。

此外,还可以从 SD 卡加载机架配置文件。

备注

您还可以使用 SD 卡上的文本文件调整当前飞行器机型。这在 系统启动> 自定义系统启动 page.

备注

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

# 开发框架配置

开发新框架配置的建议流程是

  1. 首先在 QGC 中为目标载具类型选择合适的通用配置,例如 通用四旋翼飞行器.
  2. 配置 几何形状和执行器输出.
  3. 执行其他 基本配置.
  4. 调整载具。
  5. 运行 参数 show-for-airframe 控制台命令,列出与原始通用 airfame 相比的参数差异。

获得参数后,您可以复制通用配置的配置文件并添加新参数,从而创建新的框架配置文件。

或者,您也可以直接将修改后的参数附加到启动配置文件中。 系统启动> 自定义系统启动 (调整通用配置")。

# 如何在固件中添加配置

要将飞行器机型添加到固件中:

  1. init.d/airframes (打开新窗口) 文件夹。
    • 给它起一个简短的描述性文件名,并在文件名前加上一个未使用的自动启动 ID(例如、 1033092_superfast_vtol).
    • 用配置参数和应用程序更新文件(见上节)。
  2. 将新框架配置文件的名称添加到 CMakeLists.txt (打开新窗口) 在载具类型的相关部分
  3. 构建和上传 软件。

# 如何将配置添加到 SD 卡中

从 SD 卡启动的飞行器机型文件与固件中存储的配置文件相同。

为使 PX4 以框架配置启动,将其重命名为 rc.autostart 并将其复制到位于 /ext_autostart/rc.autostart.PX4 会在固件中找到任何链接文件。

# 配置文件概述

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

  • 文件(用于 机身参考QGroundControl).机身特定参数设置
  • 应启动的控制器和应用程序,如多旋翼或固定翼控制器、着陆探测器等。

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

备注

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

# 示例 - 通用四旋翼飞行器机架配置

通用 Quad X 直升机的配置文件如下 (原文件在此 (打开新窗口)).这非常简单,因为它只定义了所有四旋翼飞行器通用的最小设置。

第一行是 Shebang,它告诉 NuttX 操作系统(PX4 在其上运行),配置文件是一个可执行的 shell 脚本。

#!/bin/sh

随后是框架文件。文件 @ 名称, @ 类型@ 类 用于识别和分组帧中的 应用程序接口参考 和 QGroundControl 机身选择。

# @name Generic Quadcopter # # @type Quadrotor x # # @class Copter # # @maintainer Lorenz Meier <[email protected]> #

下一行导入的通用参数适用于所有指定类型的载具(参见 init.d/rc.mc_defaults (打开新窗口)).

.${R}etc/init.d/rc.mc_defaults

最后,文件列出了控制分配参数(以 CA_ 定义了框架的默认几何形状。您可以在 执行机构配置还可以添加输出映射。

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

# 示例 - Babyshark VTOL 整个载具

下面提供了一个更复杂的整个载具配置文件。这是 "鲨鱼宝宝 "的配置文件 标准 VTOL (原文件在此 (打开新窗口)).

其功能和文档部分与通用框架类似,但这里我们还记录了以下内容 产出 映射到每个电机和执行器。请注意,这些输出仅为文档;实际映射是通过参数完成的。

#!/bin/sh
#
# @name BabyShark VTOL
#
# @类型 标准 VTOL
# @类 VTOL
#
# @维护者 Silvan Fuhrer <[email protected]>;
#
# @output Motor1 电机 1
# @输出 电机2 电机2
# @output Motor3 电机 3
# @输出 电机4 电机4
# @输出 电机5 推杆电机
# @输出伺服1副翼
# @output Servo2 A-tail left
# @output Servo3 A-tail right
#
# @board px4_fmu-v2 exclude
# @board bitcraze_crazyflie exclude
# @board holybro_kakutef7 exclude
#

至于通用框架,我们还包括通用 VTOL 默认设置。

. ${R}etc/init.d/rc.vtol_defaults

然后,我们定义配置参数和 调整参数增益:

参数设置-default MAV_TYPE 22 参数设置-default BAT1_N_CELLS 6 参数设置-default FW_AIRSPD_MAX 30 参数设置-default FW_AIRSPD_MIN 19 参数设置-default FW_AIRSPD_TRIM 23默认 FW_PN_R_SLEW_MAX 40 参数设置-默认 FW_PSP_OFF 3 参数设置-默认 FW_P_LIM_MAX 18 参数设置-默认 FW_P_LIM_MIN -25 参数设置-默认 FW_RLL_TO_YAW_FF 0.1 参数设置默认 FW_RR_P 0.08 参数设置默认 FW_R_LIM 45 参数设置默认 FW_R_RMAX 50 参数设置默认 FW_THR_TRIM 0.65 参数设置-默认 FW_THR_MIN 0.3 参数设置-默认 FW_THR_SLEW_MAX 0.6 参数设置-默认 FW_T_HRATE_FF 0 参数设置-默认 FW_T_SINK_MAX 15 参数设置-默认 FW_T_SINK_MIN 3 参数设置-默认 FW_YR_P 0.15 param set-default IMU_DGYRO_CUTOFF 15 param set-default MC_PITCHRATE_MAX 60 param set-default MC_ROLLRATE_MAX 60 param set-default MC_YAWRATE_I 0.15 param set-default MC_YAWRATE_MAX 40 param set-default MC_YAWRATE_P 0.3 参数设置-默认 MPC_ACC_DOWN_MAX 2 参数设置-默认 MPC_ACC_HOR_MAX 2 参数设置-默认 MPC_ACC_UP_MAX 3 参数设置-默认 MC_AIRMODE 1 参数设置-默认 MPC_JERK_HOR_MAX 2 参数设置-默认 MC_YAWRATE_P 0.默认 MPC_JERK_AUTO 4 参数设置-默认 MPC_LAND_SPEED 1 参数设置-默认 MPC_MAN_TILT_MAX 25 参数设置-默认 MPC_MAN_Y_MAX 40 参数设置-默认 COM_SPOOLUP_TIME 1.5 参数设置默认 MPC_THR_HOVER 0.45 参数设置默认 MPC_TILTMAX_AIR 25 参数设置默认 MPC_TKO_RAMP_T 1.8 参数设置默认 MPC_TKO_SPEED 1 参数设置默认 MPC_VEL_MANUAL 3 参数设置默认 MPC_XY_CRUISE 3 参数设置默认 MPC_XY_VEL_MAX 3.5 参数设置默认 MPC_YAWRAUTO_MAX 40 参数设置默认 MPC_Z_VEL_MAX_UP 2 参数设置默认 NAV_ACC_RAD 3 参数设置默认 SENS_BOARD_ROT 4 参数设置默认 VT_ARSP_BLEND 10 参数设置默认 VT_ARSP_TRANS 21 参数设置默认 VT_B_DEC_MSS 1.5 参数设置-默认 VT_B_TRANS_DUR 12 参数设置-默认 VT_ELEV_MC_LOCK 0 参数设置-默认 VT_FWD_THRUST_SC 1.2 参数设置-默认 VT_F_TR_OL_TM 8 参数设置-默认 VT_PSHER_SLEW 0.5 参数设置-默认 VT_TRANS_MIN_TM 4 参数设置-默认 VT_TYPE 2

最后,该文件定义了几何体的控制分配参数,以及设置不同电机和舵机输出的参数。

参数 set-default CA_AIRFRAME 2
参数 set-default CA_ROTOR_COUNT 5
param set-default CA_ROTOR0_PX 1
param set-default CA_ROTOR0_PY 1
param set-default CA_ROTOR1_PX -1 param set-default CA_ROTOR1_PY -1 param set-default CA_ROTOR2_PX 1
参数设置-默认 CA_ROTOR2_PY -1 参数设置-默认 CA_ROTOR2_KM -0.05 参数设置-默认 CA_ROTOR3_PX -1 参数设置-默认 CA_ROTOR3_PY 1
param set-default CA_ROTOR3_KM -0.05 param set-default CA_ROTOR4_AX 1.0
参数 set-default CA_ROTOR4_AZ 0.0

参数 set-default CA_SV_CS_COUNT 3
param set-default CA_SV_CS0_TYPE 15
param set-default CA_SV_CS0_TRQ_R 1.0
参数 set-default CA_SV_CS1_TRQ_P 0.5000
参数 set-default CA_SV_CS1_TRQ_R 0.0000
param set-default CA_SV_CS1_TRQ_Y -0.5000 param set-default CA_SV_CS1_TYPE 13
参数 set-default CA_SV_CS2_TRQ_P 0.5000
参数 set-default CA_SV_CS2_TRQ_Y 0.5000
param set-default CA_SV_CS2_TYPE 14

参数 set-default PWM_MAIN_FUNC1 201
参数 set-default PWM_MAIN_FUNC2 202
参数 set-default PWM_MAIN_FUNC3 105
参数 set-default PWM_MAIN_FUNC4 203
参数 set-default PWM_MAIN_FUNC5 101
参数 set-default PWM_MAIN_FUNC6 102
参数 set-default PWM_MAIN_FUNC7 103
参数 set-default PWM_MAIN_FUNC8 104

参数 set-default PWM_MAIN_TIM0 50
参数 set-default PWM_MAIN_DIS1 1500
参数 set-default PWM_MAIN_DIS2 1500
参数 set-default PWM_MAIN_DIS3 1000
参数 set-default PWM_MAIN_DIS4 1500

# 添加新机身组

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

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

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

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

  1. 将该组的 svg 图像添加到用户指南文档中(如果未提供图像,则显示占位符图像): assets/airframes/types (打开新窗口)
  2. 中添加新组名和图像文件名之间的映射。 srcparser.py (打开新窗口) 方法 GetImageName() (按照下面的模式):
    捍卫 获取图像名称(自我):
        """获取参数组图像基本名称(不含扩展名)""";
        如果 (自我.名字 == "标准平面";):
            返回 "平面";
        如果 (自我.名字 == "飞翼";):
            返回 "FlyingWing";
         ...
     ...
        返回 "机身未知";
    
  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.