当前位置:   article > 正文

基于F4/F7/H7飞控硬件和px4飞控固件的廉价自主无人机系统(2)- 外设和固件修改_飞控增加i2c

飞控增加i2c

前言

为了实现自主飞行,无人机需要许多的感知设备,而F4/F7/H7所搭载的传感器都很有限,因此需要额外的外设。而外设也分为可以直接与飞控连接的以及无法与飞控连接的。本文主要解决如何在F4 pro V2飞控上挂载可与飞控连接的传感器设备,从而实现基于F4 pro V2飞控的基本自主飞行能力。


GPS及电子罗盘

之前讲过,F4飞控为了节省成本,默认是采用6轴IMU的,也就是3轴加速度和3轴角速度。且穿越机也没有必要配备gps和电子罗盘。

但为了实现无人机自主飞行,增加gps和电子罗盘是必要的。

本文推荐的是相对比较廉价的北天BN880,包含了GPS和电子罗盘。

BN880需要一个I2C和一个串口为F4飞控提供GPS和航向信息。本文为了实现在室内的自主飞行,将采用激光雷达提供主要的定位信息,因此将不会连接I2C,而仅仅连接电子罗盘,因此将只占用F4飞控的一个串口。


定高激光雷达

为了保证高度测量的准确性,解决气压计测量的误差,本文采用了北醒TF luna单点激光雷达。

TF luna的接口支持I2C和串口两种通信协议。本文采用的是串口通讯,根据上图,无需进行设置。

 px4固件默认只支持TF mini激光雷达,但两个激光雷达的通讯协议是一致的,因此可以通过在px4固件中开启TF mini模块来读取TF luna的机关数据。(下面会将如何开启)


固件修改

在默认的px4固件设置中,ominibus F4的设置是在PX4-Autopilot/boards/omnibus/f4sd文件夹下。

通过对default.px4board文件进行编辑,可实现使ominibus F4飞控包括必要的传感器。文件具体内容如下:

  1. CONFIG_BOARD_TOOLCHAIN="arm-none-eabi"
  2. CONFIG_BOARD_ARCHITECTURE="cortex-m4"
  3. CONFIG_BOARD_CONSTRAINED_FLASH=y
  4. CONFIG_BOARD_NO_HELP=y
  5. CONFIG_BOARD_CONSTRAINED_MEMORY=y
  6. CONFIG_DRIVERS_BAROMETER_BMP280=y
  7. CONFIG_DRIVERS_IMU_INVENSENSE_ICM20608G=y
  8. CONFIG_DRIVERS_MAGNETOMETER_HMC5883=y
  9. CONFIG_DRIVERS_DISTANCE_SENSOR_TFMINI=y
  10. CONFIG_DRIVERS_PWM_OUT=y
  11. CONFIG_DRIVERS_RC_INPUT=y
  12. CONFIG_MODULES_EKF2=y
  13. CONFIG_MODULES_BATTERY_STATUS=y
  14. CONFIG_MODULES_COMMANDER=y
  15. CONFIG_MODULES_CONTROL_ALLOCATOR=y
  16. CONFIG_MODULES_DATAMAN=y
  17. CONFIG_MODULES_FLIGHT_MODE_MANAGER=y
  18. CONFIG_MODULES_LAND_DETECTOR=y
  19. CONFIG_MODULES_LOGGER=y
  20. CONFIG_MODULES_MANUAL_CONTROL=y
  21. CONFIG_MODULES_MAVLINK=y
  22. CONFIG_MODULES_MC_ATT_CONTROL=y
  23. CONFIG_MODULES_MC_POS_CONTROL=y
  24. CONFIG_MODULES_MC_RATE_CONTROL=y
  25. CONFIG_MODULES_NAVIGATOR=y
  26. CONFIG_MODULES_RC_UPDATE=y
  27. CONFIG_MODULES_SENSORS=y
  28. CONFIG_SYSTEMCMDS_MIXER=y
  29. CONFIG_SYSTEMCMDS_PARAM=y
  30. CONFIG_SYSTEMCMDS_PWM=y

其中重点要看imu、magnetometer、distance sensor以及EKF2

其中imu要看所购买的飞控上搭载的具体IMU版本。我买的F4 pro V2采用的是ICM20608G。

magnetometer就是电子罗盘,北天的BN880采用的是HMC5883电子罗盘。

然后就是distance sensor,我们采用的是北醒TF luna,TF mini模块支持对该雷达的数据的读取。

最后是EKF2。PX4的F4固件默认采用的是LPE估计器,其不需要电子罗盘信息,也不支持对航向的估计。而EKF2则可以利用电子罗盘进行航向的估计。因此需开启,同时删除LPE的相关设置。


模块启动设置

在连接以上传感器后,还需对固件进行设置,以便启动对应的模块。

需要修改的文件为PX4-Autopilot/boards/omnibus/f4sd/init文件夹下的rc.board_defaults和rc.board_sensors这两个文件。

其中rc.board_defaults文件修改后如下:

  1. #!/bin/sh
  2. #
  3. # board specific defaults
  4. #------------------------------------------------------------------------------
  5. param set-default BAT1_V_DIV 11.12
  6. param set-default BAT1_A_PER_V 31
  7. # system_power unavailable
  8. param set-default CBRK_SUPPLY_CHK 894281
  9. # Disable safety switch by default
  10. param set-default CBRK_IO_SAFETY 22027
  11. # use the Q attitude estimator, it works w/o mag or GPS.
  12. param set-default SYS_MC_EST_GROUP 2
  13. param set-default ATT_ACC_COMP 0
  14. param set-default ATT_W_ACC 0.4000
  15. param set-default ATT_W_GYRO_BIAS 0.0000
  16. param set-default SYS_HAS_MAG 1
  17. #mavlink boot_complete
  18. mavlink start -d /dev/ttyACM0 -b 921600 -m normal -r 80000

其中,SYS_MC_EST_GROUP为将固件设置为EKF2估计器;SYS_HAS_MAG为是否有电子罗盘。

本文为了实现顶层进行SLAM的任务计算机可以通过mavlink与F4飞控进行通讯,采用了将F4的飞控与任务计算机通过USB数据线进行连接,因此在上述文件中的修改为:

mavlink start -d /dev/ttyACM0 -b 921600 -m normal -r 80000 

这将默认在F4飞控上的ACM0(也就是mini USB口)启动mavlink,波特率为921600。

对rc.board_sensors文件修改后如下:

  1. #!/bin/sh
  2. #
  3. # Omnibus F4SD specific board sensors init
  4. #------------------------------------------------------------------------------
  5. board_adc start
  6. icm20608g -s -R 6 start
  7. bmp280 -s start
  8. tfmini start -d /dev/ttyS2

其中,icm20608g为启动imu模块,bmp280为启动气压及模块,tfmini为启动定高雷达模块。


小结

经过以上的修改后,px4的固件将支持我们为实现自动飞行所添加的传感器,并可实现与任务计算机的通讯。具体的编译方法上一篇文章已经提过,仅须根据具体的飞控硬件修改以上三个文件,既可实现F4固件的编译和上传。

下一篇将具体讲解QGroundControl里对F4飞控的设置,并测试相关的传感器。


基于F4/F7/H7飞控硬件和px4飞控固件的廉价自主无人机

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/338426?site
推荐阅读
相关标签
  

闽ICP备14008679号