# 添加框架配置
PX4 飞行器机型文件 是 shell 脚本,用于设置特定飞行器框架(如四旋翼飞行器、地面飞行器或船只)所需的部分(或全部)参数、控制器和应用程序。当相应的 选择并应用机身 于 QGroundControl.
编译成 NuttX 目标器固件的配置文件位于 ROMFS/px4fmu_common/init.d (打开新窗口) 文件夹(POSIX 模拟器的配置文件存储在 ROMFS/px4fmu_common/init.d-posix (打开新窗口)).该文件夹既包含特定载具的完整配置,也包含不同载具类型的部分通用配置。通用配置通常用作创建新配置文件的起点。
此外,还可以从 SD 卡加载机架配置文件。
备注
您还可以使用 SD 卡上的文本文件调整当前飞行器机型。这在 系统启动> 自定义系统启动 page.
备注
要确定需要在配置文件中设置哪些参数/值,可以先分配一个通用机身并调整飞行器,然后使用 参数 show-for-airframe
列出更改的参数。
# 开发框架配置
开发新框架配置的建议流程是
- 首先在 QGC 中为目标载具类型选择合适的通用配置,例如 通用四旋翼飞行器.
- 配置 几何形状和执行器输出.
- 执行其他 基本配置.
- 调整载具。
- 运行
参数 show-for-airframe
控制台命令,列出与原始通用 airfame 相比的参数差异。
获得参数后,您可以复制通用配置的配置文件并添加新参数,从而创建新的框架配置文件。
或者,您也可以直接将修改后的参数附加到启动配置文件中。 系统启动> 自定义系统启动 (调整通用配置")。
# 如何在固件中添加配置
要将飞行器机型添加到固件中:
- 在 init.d/airframes (打开新窗口) 文件夹。
- 给它起一个简短的描述性文件名,并在文件名前加上一个未使用的自动启动 ID(例如、
1033092_superfast_vtol
). - 用配置参数和应用程序更新文件(见上节)。
- 给它起一个简短的描述性文件名,并在文件名前加上一个未使用的自动启动 ID(例如、
- 将新框架配置文件的名称添加到 CMakeLists.txt (打开新窗口) 在载具类型的相关部分
- 构建和上传 软件。
# 如何将配置添加到 SD 卡中
从 SD 卡启动的飞行器机型文件与固件中存储的配置文件相同。
为使 PX4 以框架配置启动,将其重命名为 rc.autostart
并将其复制到位于 /ext_autostart/rc.autostart
.PX4 会在固件中找到任何链接文件。
# 配置文件概述
配置文件由几个主要模块组成:
这些方面大多是独立的,这意味着许多配置共享相同的机身物理布局,启动相同的应用,而最大的区别在于其调整增益。
备注
新的框架配置文件只有在完成构建后才会自动添加到构建系统中(运行 一扫而光
).
# 示例 - 通用四旋翼飞行器机架配置
通用 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 (打开新窗口).
如果机身用于 新组 您还需要
- 将该组的 svg 图像添加到用户指南文档中(如果未提供图像,则显示占位符图像): assets/airframes/types (打开新窗口)
- 中添加新组名和图像文件名之间的映射。 srcparser.py (打开新窗口) 方法
GetImageName()
(按照下面的模式):捍卫 获取图像名称(自我): """获取参数组图像基本名称(不含扩展名)"""; 如果 (自我.名字 == "标准平面";): 返回 "平面"; 如果 (自我.名字 == "飞翼";): 返回 "FlyingWing"; ... ... 返回 "机身未知";
- 更新 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.