当前位置:网站首页>PX4从放弃到精通(二十四):自定义机型

PX4从放弃到精通(二十四):自定义机型

2022-06-11 00:25:00 Mbot

前言

本教程用PX4实现自定义一些新构型的载具
PX4固件版本:1.12.3
QGC版本:4.0.11
PIXHAWK4 飞控

一、定义机型文件

PX4的机型文件存放在Firmware/ROMFS/px4fmu_common/init.d/airframes目录下,每个机型文件开头的数字代表是该机型的ID,即参数SYS_AUTOSTART,设置不同的SYS_AUTOSTART参数即可设置不同的机型,每个机型的SYS_AUTOSTART都不一样,本文自定义了一个机型文件80003_testframs,该机型文件对应的SYS_AUTOSTART即是80003。
在这里插入图片描述
添加完机型文件后,还需要修改该目录下的CMakeLists.txt文件,
在文件的最后添加上自定义机型的名字

# [80000, 81000] (Unmanned) TEST
80003_testframs

在这里插入图片描述
本例中定义的机型文件如下:注意name、type、class要自己定义,其他的部分我是参考的其他的机型写的。

#!/bin/sh
#
# @name Test
#
# @url https://www.baidu.com
#
# @type Test
# @class Test
#
# @output MAIN0 Speed of left wheels
# @output MAIN1 Speed of right wheels
#
# @maintainer Xujun
#
# @board px4_fmu-v2 exclude
# @board bitcraze_crazyflie exclude
#

. ${
    R}etc/init.d/rc.rover_defaults


param set-default BAT_N_CELLS 4

param set-default EKF2_GBIAS_INIT 0.01
param set-default EKF2_ANGERR_INIT 0.01
param set-default EKF2_MAG_TYPE 1

param set-default FW_AIRSPD_MIN 0
param set-default FW_AIRSPD_TRIM 1
param set-default FW_AIRSPD_MAX 3

param set-default GND_SP_CTRL_MODE 1
param set-default GND_L1_DIST 5
param set-default GND_L1_PERIOD 3
param set-default GND_THR_CRUISE 0.7
param set-default GND_THR_MAX 0.5

# Because this is differential drive, it can make a turn with radius 0.
# This corresponds to a turn angle of pi radians.
# If a special case is made for differential-drive, this will need to change.
param set-default GND_MAX_ANG 3.142
param set-default GND_WHEEL_BASE 0.3

# TODO: Set to -1.0, to allow reversing. This will require many changes in the codebase
# to support negative throttle.
param set-default GND_THR_MIN 0
param set-default GND_SPEED_P 0.25
param set-default GND_SPEED_I 3
param set-default GND_SPEED_D 0.001
param set-default GND_SPEED_IMAX 0.125
param set-default GND_SPEED_THR_SC 1

param set-default MIS_LTRMIN_ALT 0.01
param set-default MIS_TAKEOFF_ALT 0.01

param set-default NAV_ACC_RAD 0.5

# Provide ESC a constant 1500 us pulse, which corresponds to
# idle on the Roboclaw motor controller on the Aion R1
param set-default PWM_MAIN_DISARM 1500
param set-default PWM_MAIN_DIS0 1500
param set-default PWM_MAIN_DIS1 1500
param set-default PWM_MAIN_MAX 2000
param set-default PWM_MAIN_MIN 1000

# Enable Airspeed check circuit breaker because Rovers will have no airspeed sensor
param set-default CBRK_AIRSPD_CHK 162128

# Differential drive acts like ackermann steering with a maximum turn angle of 180 degrees, or pi radians
param set-default GND_MAX_ANG 3.1415

param set-default RBCLW_BAUD 8
param set-default RBCLW_COUNTS_REV 1200
param set-default RBCLW_ADDRESS 128
# param set SER_TEL4_BAUD 115200
# 104 corresponds to Telem 4
param set-default RBCLW_SER_CFG 104
# Start this driver after setting parameters, because the driver uses some of those parameters.
# roboclaw start /dev/ttyS3

# Configure this as rover
set MAV_TYPE 10

# Set mixer
set MIXER generic_diff_rover

set PWM_MAIN_REV2 1

type对应地面站上的机架类型,name对应地面站上的载具。
在这里插入图片描述

二、修改srcparser.py

修改下图的srcparser.py文件
在这里插入图片描述
在下图位置加入一行:

elif (self.name == "Test"):
    return "Test"

在这里插入图片描述

三、编译并下载固件

先在Firmware路径下执行

make clean

然后执行

make airframe_metadata

然后会在下面的目录生成airframes.xml文件
在这里插入图片描述
可以在里面找到生成了之前定义的80003这个机型
在这里插入图片描述
然后执行下面命令编译固件

make px4_fmu-v5_default

注意在编译固件时不要使用upload上传代码,必须用地面站进行上传
打开下图这个页面,然后插上飞控

在这里插入图片描述
选择自定义固件
在这里插入图片描述
选择刚才编译生成的.px4固件,双击上传即可
在这里插入图片描述

四、修改QGC

将第三步生成的airframes.xml中所有内容复制到QGC的AirframeFactMetaData.xml文件中,替换掉原有的内容
在这里插入图片描述
将自定义机型的svg图标放在qgroundcontrol/src/AutoPilotPlugins/PX4/Images目录下,命名为Test.svg:
在这里插入图片描述
qgcimages.qrc中点击添加-》添加文件,然后选择上一步的Test.svg,并将别名命名为Airframe/Test
在这里插入图片描述
然后重新编译地面站

然后将飞控连到新编译的地面站上,就可以在机架那一栏设置新添加的机型
在这里插入图片描述
设置之后如下:
在这里插入图片描述
机型对应的SYS_AUTOSTART参数为80003
在这里插入图片描述

原网站

版权声明
本文为[Mbot]所创,转载请带上原文链接,感谢
https://mbot1.blog.csdn.net/article/details/124945512