前言

为了实现自主飞行,无人机需要许多的感知设备,而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飞控包括必要的传感器。文件具体内容如下:

CONFIG_BOARD_TOOLCHAIN="arm-none-eabi"
CONFIG_BOARD_ARCHITECTURE="cortex-m4"
CONFIG_BOARD_CONSTRAINED_FLASH=y
CONFIG_BOARD_NO_HELP=y
CONFIG_BOARD_CONSTRAINED_MEMORY=y
CONFIG_DRIVERS_BAROMETER_BMP280=y
CONFIG_DRIVERS_IMU_INVENSENSE_ICM20608G=y
CONFIG_DRIVERS_MAGNETOMETER_HMC5883=y
CONFIG_DRIVERS_DISTANCE_SENSOR_TFMINI=y
CONFIG_DRIVERS_PWM_OUT=y
CONFIG_DRIVERS_RC_INPUT=y
CONFIG_MODULES_EKF2=y
CONFIG_MODULES_BATTERY_STATUS=y
CONFIG_MODULES_COMMANDER=y
CONFIG_MODULES_CONTROL_ALLOCATOR=y
CONFIG_MODULES_DATAMAN=y
CONFIG_MODULES_FLIGHT_MODE_MANAGER=y
CONFIG_MODULES_LAND_DETECTOR=y
CONFIG_MODULES_LOGGER=y
CONFIG_MODULES_MANUAL_CONTROL=y
CONFIG_MODULES_MAVLINK=y
CONFIG_MODULES_MC_ATT_CONTROL=y
CONFIG_MODULES_MC_POS_CONTROL=y
CONFIG_MODULES_MC_RATE_CONTROL=y
CONFIG_MODULES_NAVIGATOR=y
CONFIG_MODULES_RC_UPDATE=y
CONFIG_MODULES_SENSORS=y
CONFIG_SYSTEMCMDS_MIXER=y
CONFIG_SYSTEMCMDS_PARAM=y
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文件修改后如下:

#!/bin/sh
#
# board specific defaults
#------------------------------------------------------------------------------param set-default BAT1_V_DIV 11.12
param set-default BAT1_A_PER_V 31# system_power unavailable
param set-default CBRK_SUPPLY_CHK 894281# Disable safety switch by default
param set-default CBRK_IO_SAFETY 22027# use the Q attitude estimator, it works w/o mag or GPS.
param set-default SYS_MC_EST_GROUP 2
param set-default ATT_ACC_COMP 0
param set-default ATT_W_ACC 0.4000
param set-default ATT_W_GYRO_BIAS 0.0000param set-default SYS_HAS_MAG 1#mavlink boot_complete
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文件修改后如下:

#!/bin/sh
#
# Omnibus F4SD specific board sensors init
#------------------------------------------------------------------------------board_adc starticm20608g -s -R 6 start
bmp280 -s start
tfmini start -d /dev/ttyS2

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


小结

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

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


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

基于F4/F7/H7飞控硬件和px4飞控固件的廉价自主无人机系统(2)- 外设和固件修改相关推荐

  1. F4/F7飞控betaflight固件烧写,地面站 BF无法读取、不识别、未发现等飞控疑难杂症问题解决与驱动安装

    目录 1.安装驱动 2.测试固件 3.烧录固件 4.寻找补充代码 betaflight/unified_targets/configs/OMNIBUSF4SD.config 5.连接飞控,点击cli命 ...

  2. 基于PX4的地面无人车避障系统及路径规划研究

    基于PX4的地面无人车避障系统及路径规划研究 人工智能技术与咨询 来源:<动力系统与控制> ,作者姜琼阁等 关键词: 地面无人车:避障:PX4: 摘要: 地面无人车避障及路径规划是指,无人 ...

  3. STM32CubeMX | 基于STM32使用HAL库硬件SPI驱动WK2124一拖四SPI转四路串口芯片

    STM32CubeMX | 基于STM32使用HAL库硬件SPI驱动WK2124一拖四SPI转四路串口芯片 STM32基础工程生成 首先使用STM32CUBEMX生成STM32的基础工程,配置时钟到7 ...

  4. STM32F0/F1/F2/F3/F4/F7编程数据中英文手册(所有型号中文参考手册)

    STM32F0/F1/F2/F3/F4/F7编程数据中英文手册(所有型号中文参考手册) 免费获取STM32所有手册 ST官方免费的资料不应该共享的吗?怎么还欺负人,明码标价.进入官方,第一个就是. 感 ...

  5. 工业机器人-基于伺服电机的PMSM控制系统硬件电路设计

    第十章 基于单片机的PMSM控制系统硬件电路设计 10.1 硬件电路设计概述 在对腕关节的控制器的设计上,主要采用单片机作为主控制器,通过双电源为控制机和伺服电机进行供电,从而保障机械臂的正常使用.电 ...

  6. LCD接口设计系列一:基于eDP接口屏的硬件电路设计

    LCD的接口类型较多,主要有RGB接口.LVDS接口.eDP接口.MIPI-DSI接口.HDMI接口等,这些接口的定义/协议/特点等各有不相同,一直想对这些接口电路做一个总结.由于涉及到的内容比较多, ...

  7. 智能家居-2.基于esp8266的语音控制系统(硬件篇)

    智能家居-1.基于esp8266的语音控制系统(开篇) 智能家居-2.基于esp8266的语音控制系统(硬件篇) 智能家居-3.基于esp8266的语音控制系统(软件篇) 赞赏支持 QQ:505645 ...

  8. LCD接口设计系列二:基于LVDS接口屏的硬件电路设计

    LCD的接口类型较多,主要有RGB接口.LVDS接口.eDP接口.MIPI-DSI接口.HDMI接口等,这些接口的定义/协议/特点等各有不相同,一直想对这些接口电路做一个总结.由于涉及到的内容比较多, ...

  9. PX4原生固件SPI驱动动编写与IMU传感器替换

    适用于PX4原生固件 核心目标:完成XSENS的MTI3,IMU替换.MTI3是一款航姿参考系统,可以独立的输出四元数,加速度,磁力计等,角速度等航姿信息.里面有完整的卡尔曼滤波,可以替换飞控本身里面 ...

  10. ROS实验笔记之——基于Prometheus自主无人机开源项目的学习与仿真

    最近在公众号上看到Prometheus无人机的资料,发现里面开源了很好的无人机的仿真环境,并且有很好的教程.而本人正好在上<Introduction to Aerial Robotics> ...

最新文章

  1. 旷视科创板IPO过会:拟募资60.18亿元,阿里系为最大股东
  2. springIOC的那些事
  3. mysql null的作用_MySQL中对于NULL值的理解和使用教程
  4. mysql sleep详解_MySQL中sleep函数的特殊现象示例详解
  5. qcow2磁盘格式分析
  6. python爬虫之 ---------------- 正则表达式(1)
  7. VueRouter导航守卫
  8. 轮播图高度自适应_【2020顶会NIPS】用于交通预测的自适应图卷积循环网络
  9. SQLSERVER查询数据库所有表名及行数
  10. HP电脑的增霸卡功能操作详解
  11. 如何根据动态SQL代码自动生成DTO
  12. 浅层砂过滤器 全自动浅层介质过滤系统
  13. 一加6android9玩飞车掉,解锁新速度:一加6T深度评测
  14. 数学分析高等代数考研试题荟萃[更新至2017年12月28日]
  15. Python str方法
  16. 两个技巧教你怎么裁剪视频尺寸,手残党也能掌握
  17. 生物识别设备有问题_有您数据的生物识别
  18. PS四种扁平化设计风格-网摘
  19. WPS、Excel对大量数据进行统计公式计算
  20. 北京理工大学22计算机考研初试成绩公布了吗?

热门文章

  1. ​你不是真正的“匿名”:如何划定匿名数据和去识别化数据?
  2. 2016 工作、生活与得失
  3. .Net Framework 中设置Web Proxy 的方法
  4. Java 读取jpeg图片 Unsupported Image Type 异常
  5. IETester汉化文件下载
  6. 关于公共安全解决方案的思考
  7. 【教程】如何批量获取图片信息,尺寸、大小、路径、文件名,然后导出表格或者txt的文本,下面教你使用方法
  8. Reducing Language Biases in Visual Question Answering with Visually-Grounded Question Encoder 论文笔记
  9. tasklist、taskkill、taskmgr
  10. LC.1056. Confusing Number, LC.246. Strobogrammatic Number