👉👉👉**推荐硬件链接,店家提供全程指导**👈👈👈
文章目录
前言
硬件:F4sd飞控一个,usb线一个
测试过可用的f4飞控有下面两种
软件:px4 1.10.1 stable版或更高版本
QGC地面站
参考连接
https://docs.px4.io/master/en/flight_controller/omnibus_f4_sd.html
一、刷bootloader
首先按住boot0
通过usb连到电脑
打开zadig,选择Options->List All Devices
选择STM32 BOOTLOADER,然后点击Reinstall Driver
安装成功后,断电,按住boot0,重新上电
打开INAV
显示DFU表示驱动正常
按上图设置,点击右下加载Firmware
我这里下载的bl是px4最新的f4bl,
选择好后点击下载
下载完后插掉usb
二、刷PX4固件并调参
打开qgc
切换到固件下载的页面,插上飞控
我这里下载的是最新的PX4固件
下载完后查看端口如下
表示固件下载完毕
打开QGC,连上飞控后,将机型设为四旋翼
接下来就是校准传感器之类的
在调试的时候遇到一个问题,我是按官网的步骤将接收机用sbus协议接的uart1,但是飞控识别不到接收机。解决办法是用ppm协议,将板子上的ppm脚短接,将接受机接到RCIN口
将飞控装到无人机上,接上电调,我这里是用ubec给飞控供电,f4好像可以直接用电池供电,我第一次用,还没试过,ubec的正极接VBAT接口,负极接地。
笔者下完PX4固件后,发现没有姿态信息
解决办法,在nsh终端先执行
attitude_estimator_q stop
再执行
attitude_estimator_q start
attitude_estimator_q stop
最后还有一个问题
F4的板子上是有气压计的,但是飞控并没有解算出高度信息,先检查气压计
发现是有数据的
我一开始以为是解算的算法设置有误,
于是将这里改成带lpe的,但是没有效果,原因在于这里
可以把这几行去掉,或者手动启动lpe
在四旋翼启动脚本里加入
local_position_estimator start
重新编译烧录
这个时候高度可以正常解算,也可以切定高。
需要注意的是,因为f4没有磁力计,所以不能使用ekf进行状态估计,要想用ekf,需要外接一个磁力计。
我这里用的是一个带罗盘的gps
GPS线头定义如下:
将gps的iic接口接到飞控的iic(和uart3是复用的)口上。
注意编译脚本里要有磁力计的驱动,如果被注释的话要取消注释
然后在qgc中使能一下磁力计
终端测试一下正常
将解算方式换成ekf2,注意如果用ekf2的话,就不需要按上面的将lpe在启动脚本里启动了,因为ekf2本身可以结算位置,如果再用lpe会导致重复发布两个不同的位置
然后就可以校准罗盘了。
我这里GPS是接的uart6,所以将GPS的接口要改一下
uart6的波特率也要改一下
终端测试一下
在室内,所以是0颗星
固件里默认只有usb口做mavlink的通讯接口,如果要接数传的话还要配置下mavlink,f4里只有一个telem2用作数传口,配置如下
将飞控上的rssi作为tx,pwm5作为rx接到数传上,我这里的RSSI口在下图位置,有的f4飞控的RSSI口在排针上,根据具体的飞控来即可。
接好后数传可以连地面站,但是只能显示高度,不能显示姿态,用commander等命令也提示找不到,解决办法是将mavlink的模式设为config
到此基本所有问题都解决了
接好后校准一下电调
其他都校准好了就可以解锁试飞了
三、PX4 1.13.0固件调参
PX4 1.13.0固件与前面的固件调参方法类似,但有一些区别。
刷完PX4固件后,bmp280和mpu6000可以正常识别,可以通过四元数互补滤波解算姿态。
通过第二节的方法接上乐迪的GPS后,可以识别到hmc5883以及GPS
PX4 1.13.0固件默认没有编译EKF2。所以无法使用EKF2,如果想使用EKF2,可以修改编译脚本
添加一行
CONFIG_MODULES_EKF2=y
同时将CONFIG_MODULES_ATTITUDE_ESTIMATOR_Q
和CONFIG_DRIVERS_IMU_INVENSENSE_ICM20602
改成n,也就是不编译
如果不把CONFIG_MODULES_ATTITUDE_ESTIMATOR_Q
和CONFIG_DRIVERS_IMU_INVENSENSE_ICM20602
改成n取消编译的话,编译固件的时候会报下面内存不够的错:
编译完下载到飞控,设置SYS_MC_EST_GROUP
为ekf2,然后重启飞控
重启后飞控能正常解算位姿,ekf2状态如下
注意接收机只能用ppm模式