硬件廉价自主无人机系统:基于F4/F7/H7飞控硬件与PX4固件的实现

前言

穿越机F4/F7/H7飞控是一系列采用stm32系列F4xx和F7xx处理器的飞控的统称,是目前穿越机爱好者非常喜欢使用的飞控硬件,其价格也非常便宜180~410。

而px4则是一款常见的开源飞控固件,是自主无人机系统开发中非常常用的飞控固件。但是其对应的硬件往往都比较贵,即使是早期的pixhawk版本也要600+。

如果要开发一款廉价自主无人机系统,那么采用F4/F7/H7飞控硬件配合px4飞控固件是一种非常好的组合,但是需要很多的修改才能实现。

本系列文章将一步一步的通过修改F4/F7/H7飞控硬件和px4飞控固件、并搭载一些必要的设备,搭建一套廉价自主无人机系统。


飞控硬件选择

生产F4/F7/H7飞控硬件的厂家很多,也有一些自制的硬件。不论是F4、F7还是H7飞控,他们的处理器一般都是stm32f4xx和stm32f7xx。而px4固件本身除支持标准的pixhawk系列外,还支持一些其他厂家的飞控固件,其中F4系列中被比较好支持的是omnibus f4 sd系列, F7和H7系列中支持比较好的是holybro的kakute F7和H7系列飞控。

对于F7和H7,目前F7只能买到F7 mini(300+),H7则都可以买到(400+),推荐买H7系列。

对于F4,选择则非常多,但是也有很多坑。

首先,购买时一定要看是否是omnibus F4,否则不保证能成功。

而对于支持omnibus F4的飞控中,还要避开的大坑就是传感器。很多商家卖的F4飞控版本非常多,常见的有:F4 pro v2,F4 v3,F4 v3s, F4 v3 plus。其实版本不是很重要,但是重要是以下两点:1. IMU,2. 气压计。

IMU

这个是个巨坑!购买时千万不要只看网页说明,要问店家要实物图片看。F4支持的IMU很多,包括:MPU6050,L3G4200D,MPU3050,L3GD20,MPU6000,MPU6500,MPU9250,ICM20601,ICM20602,ICM20608G,ICM20649,ICM20689,ICM42605,ICM42688P,BMI160,BMI270,LSM6DSO。而px4的omnibus f4固件支持的IMU则包括:MPU6000,ICM20602,ICM20608G,ICM42670,ICM42605,ICM42688P等。可以看到,交集挺多,但是目前我只遇到这MPU6000和ICM20608g/IC268g这两种px4固件支持且F4常用的IMU。尤其注意F4 V3 plus这个版本,一定要和店家确认用的是不是mpu6000,我买的用的都看不出来是哪款IMU,估计是bmi280,px4不支持!!!

气压计

许多F4飞控没有气压计!!!这个一定要注意!

主要看硬件参数就可以,F4常用的气压计型号为bmp280。所以只要包含这个,就有气压计。

GPS和电子罗盘

另外,要实现自主飞行,F4/F7/H7系列还缺少的就是电子罗盘,而常见的解决方案就是北天GPS出品的BN880模块,该模块既有GPS还有一个常见的电子罗盘芯片HMC5883。有了这两个,就可以实现有GPS下使用auto mission进行飞行了。

推荐购买:

目前淘宝上能买到的可用的是F4 pro V2这个版本的飞控(截止2022年5月10日),这个搭载的IMU是IC268g(ICM20608g);holybro的kakute H7/H7 mini以及F7 mini,搭载MPU6000。


固件更新

一般F4/F7/H7购买时都可以选择刷好了固件,但是可选的固件是不包含px4的。这里推荐选择让店家默认刷betaflight的固件,也就是BF固件。

然后就可以利用betaflight configurator来实现刷px4固件了。

betaflight configurator的下载链接如下:

https://github.com/betaflight/betaflight-configurator/releases/latesthttps://github.com/betaflight/betaflight-configurator/releases/latest

下载后,为了刷px4固件,则需要先给飞控刷上bootloader。这里可以先刷上官方的bootloader,链接为:

https://github.com/PX4/PX4-user_guide/tree/master/assets/flight_controller/omnibus_f4_sdhttps://github.com/PX4/PX4-user_guide/tree/master/assets/flight_controller/omnibus_f4_sd

由于这个bootloader很老了,所以如果默认用这个,在后期修改px4固件代码并编译后再刷固件后,可能会在Qgroundcontrol上遇到以下错误:

Fail: No CPU load information

这是因为bootloader和px4固件不匹配的原因,方法也很简单,就是更新bootloader。


F4/F7飞控更新bootloader

对于F4飞控的bootloader刷机的方法如下:

https://docs.px4.io/master/en/advanced_config/bootloader_update_from_betaflight.htmlhttps://docs.px4.io/master/en/advanced_config/bootloader_update_from_betaflight.html首先就是下载bootloader的代码:

git clone --recursive  https://github.com/PX4/Bootloader.git
cd Bootloader
make <target> upload # For example: omnibusf4sd_bl or kakutef7_bl

完成编译后,可利用betaflight configurator进行bootloader的刷机。


H7飞控更新bootloader

对于H7飞控的bootloader刷机的方法如下:

https://docs.px4.io/master/en/advanced_config/bootloader_update.htmlhttps://docs.px4.io/master/en/advanced_config/bootloader_update.html直接在飞控固件里进行编译,并利用QGroundcontrol进行bootloader的更新即可。


利用以上方法更新bootloader后,接可以编译固件了。固件的下载地址为:

https://github.com/PX4/PX4-Autopilot.githttps://github.com/PX4/PX4-Autopilot.git默认编译和上传如下:

make omnibus_f4sd_default upload

如果更新bootloader和固件后,仍然有no cpu load information的提示,也可以用暴力的方法解决。

这个问题的核心就是preflight check里需要保证飞控的cpu负载不要过高,默认设置是90%以下才能解锁。所以暴力的方法就是不让飞控检查cpu负载即可。方法如下:

在QGroundControl里的vehicle setup里,在parameters下面搜索COM_CPU_MAX,并把这个值设置为-1,即为不检查cpu的负载了。

如此设置后,无人机就不会继续报no cpu load information的错误了。

 


参考链接:

  1. Omnibus F4 SD:https://docs.px4.io/master/zh/flight_controller/omnibus_f4_sd.htmlhttps://docs.px4.io/master/zh/flight_controller/omnibus_f4_sd.html
  2. holybro kakute F7:https://docs.px4.io/master/zh/flight_controller/kakutef7.htmlhttps://docs.px4.io/master/zh/flight_controller/kakutef7.html
  3. holybro kakute H7:https://docs.px4.io/master/zh/flight_controller/kakuteh7.htmlhttps://docs.px4.io/master/zh/flight_controller/kakuteh7.html
  4. bootloader编译:https://docs.px4.io/master/en/advanced_config/bootloader_update.htmlhttps://docs.px4.io/master/en/advanced_config/bootloader_update.html
  5. 刷bootloader:https://docs.px4.io/master/en/advanced_config/bootloader_update_from_betaflight.htmlhttps://docs.px4.io/master/en/advanced_config/bootloader_update_from_betaflight.html以及https://mbot1.blog.csdn.net/article/details/106988811https://mbot1.blog.csdn.net/article/details/106988811
  6. 更新bootloader:https://docs.px4.io/master/en/config/firmware.html#bootloaderhttps://docs.px4.io/master/en/config/firmware.html#bootloader
物联沃分享整理
物联沃-IOTWORD物联网 » 硬件廉价自主无人机系统:基于F4/F7/H7飞控硬件与PX4固件的实现

发表评论