跳至内容

添加框架配置

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 脚本。

c
#!/箱柜/

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

平实
# @名称 通用四旋翼飞行器
#
# @type Quadrotor x
# @类直升机
#
# @维护者 Lorenz Meier <[email protected]>;
#

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

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

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

停止 设置-默认 CA_ROTOR_COUNT 4
停止 设置-默认 CA_ROTOR0_PX 0.15
停止 设置-默认 CA_ROTOR0_PY 0.15
停止 设置-默认 CA_ROTOR1_PX -0.15
停止 设置-默认 CA_ROTOR1_PY -0.15
停止 设置-默认 CA_ROTOR2_PX 0.15
停止 设置-默认 CA_ROTOR2_PY -0.15
停止 设置-默认 CA_ROTOR2_KM -0.05
停止 设置-默认 CA_ROTOR3_PX -0.15
停止 设置-默认 CA_ROTOR3_PY 0.15
停止 设置-默认 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

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

停止 设置-默认 MAV_TYPE 22

停止 设置-默认 BAT1_N_CELLS 6

停止 设置-默认 FW_AIRSPD_MAX 30
停止 设置-默认 FW_AIRSPD_MIN 19
停止 设置-默认 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_too_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

停止 设置-默认 imu_dgyro_cutoff 15
停止 设置-默认 mc_pitchrate_max 60
停止 设置-默认 最大滚动率 60
停止 设置-默认 MC_YAWRATE_I 0.15
停止 设置-默认 MC_YAWRATE_MAX 40
停止 设置-默认 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_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_yawrautoo_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

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

停止 设置-默认 CA_AIRFRAME 2
停止 设置-默认 CA_ROTOR_COUNT 5
停止 设置-默认 CA_ROTOR0_PX 1
停止 设置-默认 CA_ROTOR0_PY 1
停止 设置-默认 CA_ROTOR1_PX -1
停止 设置-默认 CA_ROTOR1_PY -1
停止 设置-默认 CA_ROTOR2_PX 1
停止 设置-默认 CA_ROTOR2_PY -1
停止 设置-默认 CA_ROTOR2_KM -0.05
停止 设置-默认 CA_ROTOR3_PX -1
停止 设置-默认 CA_ROTOR3_PY 1
停止 设置-默认 CA_ROTOR3_KM -0.05
停止 设置-默认 CA_ROTOR4_AX 1.0
停止 设置-默认 CA_ROTOR4_AZ 0.0

停止 设置-默认 CA_SV_CS_COUNT 3
停止 设置-默认 CA_SV_CS0_TYPE 15
停止 设置-默认 ca_sv_cs0_trq_r 1.0
停止 设置-默认 ca_sv_cs1_trq_p 0.5000
停止 设置-默认 ca_sv_cs1_trq_r 0.0000
停止 设置-默认 ca_sv_cs1_trq_y -0.5000
停止 设置-默认 CA_SV_CS1_TYPE 13
停止 设置-默认 ca_sv_cs2_trq_p 0.5000
停止 设置-默认 ca_sv_cs2_trq_y 0.5000
停止 设置-默认 CA_SV_CS2_TYPE 14

停止 设置-默认 PWM_MAIN_FUNC1 201
停止 设置-默认 PWM_MAIN_FUNC2 202
停止 设置-默认 PWM_MAIN_FUNC3 105
停止 设置-默认 PWM_MAIN_FUNC4 203
停止 设置-默认 PWM_MAIN_FUNC5 101
停止 设置-默认 PWM_MAIN_FUNC6 102
停止 设置-默认 PWM_MAIN_FUNC7 103
停止 设置-默认 PWM_MAIN_FUNC8 104

停止 设置-默认 PWM_MAIN_TIM0 50
停止 设置-默认 PWM_MAIN_DIS1 1500
停止 设置-默认 PWM_MAIN_DIS2 1500
停止 设置-默认 PWM_MAIN_DIS3 1000
停止 设置-默认 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按照下面的模式进行:

      xml
      <;q 资源 词头="/qmlimages";>;
         ...
         <;文件 别称="机身/机身仿真";>src/AutoPilotPlugins/Common/Images/AirframeSimulation.svg</文件>;
         <;文件 别称="机身/机身未知";>src/AutoPilotPlugins/Common/Images/AirframeUnknown.svg</文件>;
         <;文件 别称="机身/船";>src/AutoPilotPlugins/Common/Images/Boat.svg</文件>;
         <;文件 别称="机身/飞行翼";>src/AutoPilotPlugins/Common/Images/FlyingWing.svg</文件>;
         ...

      信息

      其余的机身元数据应自动包含在固件中(一旦 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.