添加机架配置
PX4 的机架配置文件是一些 shell 脚本,用于设置特定载具机架(如四旋翼飞行器、地面车辆或船只)所需的部分(或全部)参数、控制器和应用程序。 当在 QGroundControl 中选择并应用相应的机架时,这些脚本就会被执行。
编译到基于 NuttX 目标的固件中的配置文件位于 ROMFS/px4fmu_common/init.d 文件夹中(基于 POSIX 模拟器的配置文件存储在 ROMFS/px4fmu_common/init.d-posix 中)。 该文件夹包含特定载具的完整配置文件,以及不同载具类型的部分“通用配置”文件。 通用配置文件通常作为创建新配置文件的起点。
此外,机架配置文件也可以从 SD 卡中加载。
INFO
您还可以使用 SD 卡上的文本文件来“微调”当前的机架配置。 这在 系统启动 > 自定义系统启动 页面中有介绍。
INFO
要确定在配置文件中需要设置哪些参数/值,您可以先指定一个通用机架并对载具进行调优,然后使用 param show-for-airframe
列出已更改的参数。
开发机架配置
开发新机架配置的推荐步骤如下:
- 首先在 QGC 中为目标载具类型选择合适的“通用配置”,例如“通用四旋翼”。
- 配置几何结构和执行器输出。
- 执行其他基本配置。
- 对载具进行调优。
- 运行
param show-for-airframe
控制台命令,列出与原始通用机架相比的参数差异。
一旦获得了所需的参数,您可以通过复制通用配置的配置文件,并添加新参数来创建一个新的机架配置文件。
或者,您也可以将修改后的参数直接添加到 系统启动 > 自定义系统启动 中描述的启动配置文件中(“微调通用配置”)。
如何将配置添加到固件中
要将机架配置添加到固件中,请执行以下步骤:
- 在 init.d/airframes 文件夹中创建一个新的配置文件。
- 给它起一个简短的描述性文件名,并在文件名前加上一个未使用的自动启动 ID(例如,
1033092_superfast_vtol
)。 - 使用配置参数和应用程序更新该文件(请参阅上文)。
- 给它起一个简短的描述性文件名,并在文件名前加上一个未使用的自动启动 ID(例如,
- 在 CMakeLists.txt 中,将新机架配置文件的名称添加到相关载具类型的部分。
- 构建并上传软件。
如何将配置添加到 SD 卡中
要从 SD 卡启动的机架配置文件与存储在固件中的配置文件是相同的。
要使 PX4 使用机架配置启动,请将其重命名为 rc.autostart
,并将其复制到 SD 卡的 /ext_autostart/rc.autostart
位置。 PX4 将找到固件中所有相关联的文件。
配置文件概述
配置文件主要由几个部分组成:
一个典型的配置文件如下所示 (原始文件在此处) 。
INFO
新的机架配置文件只有在进行干净构建(运行 make clean
)后才会自动添加到构建系统中。
示例 - 通用四旋翼机架配置
下面展示了一个通用“X”型四旋翼机架的配置文件(原始文件在此处)。 这个配置非常简单,因为它只定义了所有四旋翼通用的最小设置。
第一行是一个 shebang,它告诉 NuttX 操作系统(PX4 运行在其上)该配置文件是一个可执行的 shell 脚本。
#!/bin/sh
接下来是机架文档部分。@name
、@type
和 @class
用于在 API 参考 和 QGroundControl 的机架选择中识别和分组机架。
# @name 通用四旋翼
#
# @type 十字形四旋翼
# @class 多旋翼
#
# @maintainer Lorenz Meier <lorenz@px4.io>
#
下一行导入了适用于所有指定类型载具的通用参数(请参阅 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 垂直起降完整载具
下面提供了一个更复杂的完整载具的配置文件。 这是 Baby Shark 标准垂直起降机 的配置(原始文件在此处)。
shebang 和文档部分与通用机架的类似,但在这里我们还记录了每个电机和执行器映射到的 outputs
。 请注意,这些输出仅用于文档说明;实际的映射是通过参数完成的。
#!/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 排除
#
与通用机架一样,我们接着包含通用的垂直起降机默认设置。
. ${R}etc/init.d/rc.vtol_defaults
然后我们定义配置参数和 调优增益:
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
最后,该文件定义了机架几何结构的控制分配参数,以及设置不同电机和舵机输出映射的参数。
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 的机架描述中提供文档即可。
如果机架属于一个 新组,您还需要执行以下操作:
将该组的 svg 图像添加到用户指南文档中(如果未提供图像,则会显示占位符图像):assets/airframes/types
在 srcparser.py 方法
GetImageName()
中添加新组名称和图像文件名之间的映射(遵循以下模式):pythondef GetImageName(self): """ 获取参数组图像的基本名称(不带扩展名) """ if (self.name == "标准固定翼"): return "Plane" elif (self.name == "飞翼"): return "FlyingWing" ... ... return "AirframeUnknown"
更新 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 更新)。
:::
调参
以下主题解释了如何调整将在配置文件中指定的参数:
- 自动调参(多旋翼)(或 [多旋翼 PID 调参指南](../