Skip to content

添加机架配置

PX4 的机架配置文件是一些 shell 脚本,用于设置特定载具机架(如四旋翼飞行器、地面车辆或船只)所需的部分(或全部)参数、控制器和应用程序。 当在 QGroundControl 中选择并应用相应的机架时,这些脚本就会被执行。

编译到基于 NuttX 目标的固件中的配置文件位于 ROMFS/px4fmu_common/init.d 文件夹中(基于 POSIX 模拟器的配置文件存储在 ROMFS/px4fmu_common/init.d-posix 中)。 该文件夹包含特定载具的完整配置文件,以及不同载具类型的部分“通用配置”文件。 通用配置文件通常作为创建新配置文件的起点。

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

INFO

您还可以使用 SD 卡上的文本文件来“微调”当前的机架配置。 这在 系统启动 > 自定义系统启动 页面中有介绍。

INFO

要确定在配置文件中需要设置哪些参数/值,您可以先指定一个通用机架并对载具进行调优,然后使用 param show-for-airframe 列出已更改的参数。

开发机架配置

开发新机架配置的推荐步骤如下:

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

一旦获得了所需的参数,您可以通过复制通用配置的配置文件,并添加新参数来创建一个新的机架配置文件。

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

如何将配置添加到固件中

要将机架配置添加到固件中,请执行以下步骤:

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

如何将配置添加到 SD 卡中

要从 SD 卡启动的机架配置文件与存储在固件中的配置文件是相同的。

要使 PX4 使用机架配置启动,请将其重命名为 rc.autostart,并将其复制到 SD 卡的 /ext_autostart/rc.autostart 位置。 PX4 将找到固件中所有相关联的文件。

配置文件概述

配置文件主要由几个部分组成:

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

一个典型的配置文件如下所示 (原始文件在此处) 。

INFO

新的机架配置文件只有在进行干净构建(运行 make clean)后才会自动添加到构建系统中。

示例 - 通用四旋翼机架配置

下面展示了一个通用“X”型四旋翼机架的配置文件(原始文件在此处)。 这个配置非常简单,因为它只定义了所有四旋翼通用的最小设置。

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

c
#!/bin/sh

接下来是机架文档部分。@name@type@class 用于在 API 参考 和 QGroundControl 的机架选择中识别和分组机架。

plain
# @name 通用四旋翼
#
# @type 十字形四旋翼
# @class 多旋翼
#
# @maintainer Lorenz Meier <lorenz@px4.io>
#

下一行导入了适用于所有指定类型载具的通用参数(请参阅 init.d/rc.mc_defaults)。

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

最后,该文件列出了控制分配参数(以 CA_ 开头),这些参数定义了机架的默认几何结构。 在 执行器配置 中,您可以针对您的机架几何结构修改这些参数,并且可以添加输出映射。

sh
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 垂直起降完整载具

下面提供了一个更复杂的完整载具的配置文件。 这是 Baby Shark 标准垂直起降机 的配置(原始文件在此处)。

shebang 和文档部分与通用机架的类似,但在这里我们还记录了每个电机和执行器映射到的 outputs。 请注意,这些输出仅用于文档说明;实际的映射是通过参数完成的。

sh
#!/bin/sh
#
# @name BabyShark 垂直起降机
#
# @type 标准垂直起降机
# @class 垂直起降机
#
# @maintainer Silvan Fuhrer <silvan@auterion.com>
#
# @output 电机1 电机 1
# @output 电机2 电机 2
# @output 电机3 电机 3
# @output 电机4 电机 4
# @output 电机5 推进电机
# @output 舵机1 副翼
# @output 舵机2 尾翼左侧
# @output 舵机3 尾翼右侧
#
# @board px4_fmu-v2 排除
# @board bitcraze_crazyflie 排除
# @board holybro_kakutef7 排除
#

与通用机架一样,我们接着包含通用的垂直起降机默认设置。

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

然后我们定义配置参数和 调优增益

sh
param set-default MAV_TYPE 22

param set-default BAT1_N_CELLS 6

param set-default FW_AIRSPD_MAX 30
param set-default FW_AIRSPD_MIN 19
param set-default FW_AIRSPD_TRIM 23
param set-default FW_PN_R_SLEW_MAX 40
param set-default FW_PSP_OFF 3
param set-default FW_P_LIM_MAX 18
param set-default FW_P_LIM_MIN -25
param set-default FW_RLL_TO_YAW_FF 0.1
param set-default FW_RR_P 0.08
param set-default FW_R_LIM 45
param set-default FW_R_RMAX 50
param set-default FW_THR_TRIM 0.65
param set-default FW_THR_MIN 0.3
param set-default FW_THR_SLEW_MAX 0.6
param set-default FW_T_HRATE_FF 0
param set-default FW_T_SINK_MAX 15
param set-default FW_T_SINK_MIN 3
param set-default 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

param set-default MPC_ACC_DOWN_MAX 2
param set-default MPC_ACC_HOR_MAX 2
param set-default MPC_ACC_UP_MAX 3
param set-default MC_AIRMODE 1
param set-default MPC_JERK_AUTO 4
param set-default MPC_LAND_SPEED 1
param set-default MPC_MAN_TILT_MAX 25
param set-default MPC_MAN_Y_MAX 40
param set-default COM_SPOOLUP_TIME 1.5
param set-default MPC_THR_HOVER 0.45
param set-default MPC_TILTMAX_AIR 25
param set-default MPC_TKO_RAMP_T 1.8
param set-default MPC_TKO_SPEED 1
param set-default MPC_VEL_MANUAL 3
param set-default MPC_XY_CRUISE 3
param set-default MPC_XY_VEL_MAX 3.5
param set-default MPC_YAWRAUTO_MAX 40
param set-default MPC_Z_VEL_MAX_UP 2

param set-default NAV_ACC_RAD 3

param set-default SENS_BOARD_ROT 4

param set-default VT_ARSP_BLEND 10
param set-default VT_ARSP_TRANS 21
param set-default VT_B_DEC_MSS 1.5
param set-default VT_B_TRANS_DUR 12
param set-default VT_ELEV_MC_LOCK 0
param set-default VT_FWD_THRUST_SC 1.2
param set-default VT_F_TR_OL_TM 8
param set-default VT_PSHER_SLEW 0.5
param set-default VT_TRANS_MIN_TM 4
param set-default VT_TYPE 2

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

sh
param set-default CA_AIRFRAME 2
param 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
param set-default CA_ROTOR2_PY -1
param set-default CA_ROTOR2_KM -0.05
param set-default CA_ROTOR3_PX -1
param set-default CA_ROTOR3_PY 1
param set-default CA_ROTOR3_KM -0.05
param set-default CA_ROTOR4_AX 1.0
param set-default CA_ROTOR4_AZ 0.0

param 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
param set-default CA_SV_CS1_TRQ_P 0.5000
param 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
param set-default CA_SV_CS2_TRQ_P 0.5000
param set-default CA_SV_CS2_TRQ_Y 0.5000
param set-default CA_SV_CS2_TYPE 14

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

param set-default PWM_MAIN_TIM0 50
param set-default PWM_MAIN_DIS1 1500
param set-default PWM_MAIN_DIS2 1500
param set-default PWM_MAIN_DIS3 1000
param set-default PWM_MAIN_DIS4 1500

增加一个新的机型组(Airframe Group)

机型“组”用于对相似的机架进行分组,以便在 QGroundControl机架参考 中进行选择。 每个组都有一个名称,以及一个相关的 svg 图像,该图像展示了分组机架的常见几何结构、电机数量和电机旋转方向。

QGroundControl 和文档源代码使用的机架元数据文件是通过构建命令 make airframe_metadata 从机架描述中生成的。

对于属于现有组的新机架,您只需在位于 ROMFS/px4fmu_common/init.d 的机架描述中提供文档即可。

如果机架属于一个 新组,您还需要执行以下操作:

  1. 将该组的 svg 图像添加到用户指南文档中(如果未提供图像,则会显示占位符图像):assets/airframes/types

  2. srcparser.py 方法 GetImageName() 中添加新组名称和图像文件名之间的映射(遵循以下模式):

    python
    def GetImageName(self):
        """
        获取参数组图像的基本名称(不带扩展名)
        """
        if (self.name == "标准固定翼"):
            return "Plane"
        elif (self.name == "飞翼"):
            return "FlyingWing"
         ...
     ...
        return "AirframeUnknown"
  3. 更新 QGroundControl

    • 将该组的 svg 图像添加到:src/AutopilotPlugins/Common/images

    • 按照以下模式将对 svg 图像的引用添加到 qgcimages.qrc 中:

      xml
      <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>
         ...

      INFO

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

:::

调参

以下主题解释了如何调整将在配置文件中指定的参数: