在文章(十一)PX4+Gazebo标准固定翼硬件在环(HIL)仿真中,我们通过二次开发为PX4新增了固定翼HIL仿真功能,但是由于新定义的机型并不在QGC的机型列表中,下面我们将通过导出机型列表,重新编译QGC,实现在QGC界面对新定义机型的显示。
一、配置文件位置
1.PX4机型配置文件:机型文件配置在ROMFS/px4fmu_common
目录下,这些文件是用Shell脚本编写的,用于设置特定飞行器框架(例如四轴飞行器、地面车辆或船只)所需的一些(或全部)参数、控制器和应用程序。当在QGroundControl中选择并应用相应的机架类型时,将执行这些脚本。
2.配置类别:针对NuttX目标编译的固件配置文件位于ROMFS/px4fmu_common/init.d
文件夹中;针对posix仿真的配置文件存储在ROMFS/px4fmu_common/init.d-posix
中。该文件夹包含针对特定飞行器的完整和全面配置,以及针对不同飞行器类型的部分“通用配置”。通常情况下,通用配置被用作创建新配置文件的起点。
二、文件内容解析
1.通用四轴飞行器机架配置:以通用四轴飞行器框架配置文件为示例,文件该定义了所有四轴飞行器通用的最小设置。
#!/bin/sh # sh文件声明,让NuttX系统知道该文件为sh脚本
# @name Generic Quadcopter # 飞行器名称
#
# @type Quadrotor x # 飞行器子类为四旋翼
# @class Copter # 飞行器大类为多旋翼
#
# @maintainer Lorenz Meier <lorenz@px4.io>
#
. ${R}etc/init.d/rc.mc_defaults # 引用了旋翼的标准配置文件
param set-default CA_ROTOR_COUNT 4 # 电机数量
param set-default CA_ROTOR0_PX 0.15 # 0号电机安装位置X坐标
param set-default CA_ROTOR0_PY 0.15 # 0号电机安装位置Y坐标
param set-default CA_ROTOR1_PX -0.15 # 1号电机安装位置X坐标
param set-default CA_ROTOR1_PY -0.15 # 1号电机安装位置Y坐标
param set-default CA_ROTOR2_PX 0.15 # 2号电机安装位置X坐标
param set-default CA_ROTOR2_PY -0.15 # 2号电机安装位置Y坐标
param set-default CA_ROTOR2_KM -0.05 # 力矩系数,顺时针为负
param set-default CA_ROTOR3_PX -0.15 # 3号电机安装位置X坐标
param set-default CA_ROTOR3_PY 0.15 # 3号电机安装位置Y坐标
param set-default CA_ROTOR3_KM -0.05 # 力矩系数,顺时针为负
2. 多旋翼默认配置文件rc.mc_defaults解析,所以引用该文件的旋翼共用的参数。
#!/bin/sh
#
# Multicopter default parameters.
#
# NOTE: Script variables are declared/initialized/unset in the rcS script.
#
set VEHICLE_TYPE mc
# MAV_TYPE_QUADROTOR 2
param set-default MAV_TYPE 2 # 设置飞行器类型为四旋翼
if param compare IMU_GYRO_RATEMAX 400 # 若IMU中陀螺仪的频率大于400,则设定为800
then
param set-default IMU_GYRO_RATEMAX 800
fi
param set-default NAV_ACC_RAD 2 # 容许半径,距离目标点的距离小于该数值则认为抵达目标点
param set-default RTL_RETURN_ALT 30 # 回到HOME点过程中的飞机高度
param set-default RTL_DESCEND_ALT 10 # 在HOME点上方准备降落前的留待高度
param set-default GPS_UBX_DYNMODEL 6 # 飞行中的加速度小于1个G
三、如何在QGC显示机型
所有在ROMFS/px4fmu_common定义的机型文件,最后在编译时,均通过
~/PX4-Autopilot/Tools/px4airframes/srcparser.py文件生成xml文件。将该文件拷贝到QGC工程目录,再重新编译生成QGC时,机型列表即成功配置到了QGC中,再次连接对应PX4固件的飞控或启动仿真,即可显示相应的机型。
1.编译生成xml文件的(具体工作逻辑可参考文章PX4 编译分析之Airframe文档生成):
make distclean
make airframe_metadata
2.找到文件~/PX4-Autopilot/build/px4_sitl_default/docs/airframes.xml,将文件拷贝到QGC工程目录中替换AirframeFactMetaData.xml。
四、测试自定义机型显示
1.在文章(十一)PX4+Gazebo标准固定翼硬件在环(HIL)仿真中,我们自定义的机型是通过修改SYS_AUTO参数实现的,根据上述步骤重新编译后,我们可以在新生成的airframes.xml找到相应的HIL Standard Plane机型。
2.编译生得到新的固件:
make px4_fmu-v5_default
3.通过QGC将新的固件烧录至飞控后(注意不要使用make px4_fmu-v5_default upload上传),可看见新定义的固定翼HIL仿真机型出现在机型列表中。
对比发现,上述图片的信息与ROMFS/px4fmu_common/init.d/airframes/1004_rc_standard_plane.hil文件开头的声明一致。
#!/bin/sh
#
# @name HIL Standard Plane
#
# @type Simulation
# @class Plane
#
# @output MAIN1 aileron
# @output MAIN2 elevator
# @output MAIN3 throttle
# @output MAIN4 rudder
# @output MAIN5 flaps
# @output MAIN6 gear
#
# @output AUX1 feed-through of RC AUX1 channel
# @output AUX2 feed-through of RC AUX2 channel
# @output AUX3 feed-through of RC AUX3 channel
#
# @maintainer xxxx xxxx <xxxxx@px4.io>
#
# @board bitcraze_crazyflie exclude
#
注:QGC编译过程中出现如下报错可删除编译目录的Makefile文件,再编译就可通过了。
注:若自定义的机型属于不同的group,则还需要进行额外的工作,具体可参考文章PX4从放弃到精通(二十四):自定义机型