找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
12
返回列表 发新帖
楼主: gaohan130
打印 上一主题 下一主题
收起左侧

基于STM32的四轴无人机源代码(PID算法、姿态解算、卡尔曼滤波与OLED显示)

  [复制链接]
41#
ID:656973 发表于 2019-12-6 16:55 | 只看该作者
谢谢分享
回复

使用道具 举报

42#
ID:713039 发表于 2020-3-21 19:49 | 只看该作者
谢谢楼主的分享
回复

使用道具 举报

43#
ID:319344 发表于 2020-3-26 10:36 | 只看该作者
这无人机真是够难学的,我就简单分析试着了解一下就用了一天半的时间,同样是从工作原理,系统结构,程序的设计思想,具体的程序设计思路四个方面试图了解一下。首先说明一下,只是我的理解,和楼主的代码实现流程是不一样的。

飞行原理:转速差会推动其向一个方向飞行,有四种飞行方式:上下飞行(垂直运动,如悬停状态时,4个电机同时提高转速,就会升高),前后飞行(俯仰运动,如后方电机转速大于前方,就会往前飞),左右飞行(滚转运动,如左侧电机转速大于右侧,就会往右飞),左右转向(偏航运动,如逆时针转动的M1,M3转速大于顺时针转动的M2,M4,就会右转向)。
四轴飞行为了抵消螺旋桨的自旋,相隔的浆旋转方向是不一样的,适合顺时针转的叫正桨,适合逆时针转的是反桨,正反桨的风都是往下吹的。
有两种飞行姿态,+型和X型,区别是:①电机摆放角度不同(将+型四个电机顺时针旋转45°就是X型),②“前后/左右”飞行时需控制的电机数量不同(+型前后左右每个方位相当于只有一个电机,X型前后左右每个方位相当于都是两个电机)X型对于飞行姿态控制更好。

可能表述不够清楚,可以结合下面这篇文章理解
https://blog.csdn.net/qq_27270029/article/details/79877022
没玩过四旋翼,看看这个文章多少能理解些概念
https://blog.csdn.net/msdnwolaile/article/details/51525245

系统结构:遥控器,飞行器。
遥控器:采集(按键,油门杆,方向杆的动作)控制(数据传输 和OLED显示)
飞行器:采集(MPU5060加速度,陀螺仪,HMC磁力定方位(飞行姿态感测),超声波定高,MS5611气压定高(两者互补),GPS定位点(返回点定位),NRF24L01遥控数据通信)处理(PID算法,姿态解算,卡尔曼滤波算法对数据整合)控制(PID控制算法,控制电调来控制电机转速)
https://v.youku.com/v_show/id_XM ... t.13141534.2_1.d1_2

程序设计思想:
从结果往过程去分析。使用角度:当按顺序打开遥控器和飞行器的电源后,先进行对频(NRF24L01的2.4GHz数据通信(遥控器的指令,飞行器的数据),遥控和飞行器的配对)然后地磁校准(定方位,为了前后左右飞行),再GPS收星(定位点,让飞行器自动返航),再解锁电机,缓推油门(否则好像可能会炸机),使它起飞,然后就是各种操作了。
在飞行过程中,需要融合三轴加速度计和三轴陀螺仪(MPU5060)及磁力计(HMC5883L)的数据进行姿态解算(此时会用到卡尔曼滤波算法),陀螺仪知道“我们转了个身”,加速计知道“我们又向前走了几米”,而磁力计知道“我们是向西方向”的。 然后通过PID控制算法(PID飞行控制算法能有效对飞行器的姿态和位置跟踪进行有效控制),PWM波输出,通过‘电调(电机驱动模块)’来控制电机转速。
高度在3米内,使用超声波(HCSR04)测高,否则用气压计(MS5611)测高,OLED在遥控器上,可能会显示飞行高度。

具体程序设计思路:
首先,关于NRF24L01, OLED,BEEP都没有用到(通过查看初始化函数),也就表示没有遥控器的功能,GPS没有用到,说明就是没有返航功能。没有遥控器控制,就是能飞起来,然后应该对飞行器的飞行姿态来说好控制了很多。功能就是围绕姿态解算和PID飞行控制为核心的,飞个几十秒后落下。关于楼主的代码,没有功能说明注释,没有实现步骤注释,没有使用单片机某些资源的作用注释,总的来说,注释太少,再加上本人水平不高,看得一头雾水。
关于为什么楼主介绍的和代码不一致,我的理解是这样的:楼主完成此项目用时较长,且没有使用版本管理,每过一段时间就保存一个版本,最后都不知道哪个是最新版本,每个版本都实现了哪些细节了,因为疫情,再次接触的时候都过了快两个月了,虽然自己写的但都快忘差不多了,不过好在主要实现的函数都在main里,查看main文件修改日期确定哪个是最新版本,再加上注释还算详尽,补救了回来。

两点注释:
卡尔曼滤波:需要对陀螺仪和加速度传感器所测得的数据进行综合和校正,而均值滤波,很难满足精度和实时性上的要求,通过卡尔曼滤波将加速度传感器和陀螺仪的数据进行融合,在计算实时姿态时很好地抑制了噪声的干扰作用,以提高测量精度。

PID飞行控制算法:对四旋翼的控制包括姿态控制(内环控制)和位置控制(外环控制),外环控制,解算出为了到达预定的位置期望的姿态角,该期望的姿态角作为内环控制器的输入。PID飞行控制算法能有效对飞行器的姿态和位置跟踪进行有效控制。
回复

使用道具 举报

44#
ID:538585 发表于 2020-4-2 17:54 | 只看该作者
代码很不错,多谢楼主分享。
回复

使用道具 举报

45#
ID:316613 发表于 2020-5-21 14:26 | 只看该作者
有原理图PCB吗大佬
回复

使用道具 举报

46#
ID:763457 发表于 2020-5-28 15:36 | 只看该作者
感謝分享
回复

使用道具 举报

47#
ID:555142 发表于 2020-9-18 12:33 | 只看该作者
有个毛的卡尔曼,别一天到晚扯淡好吧
回复

使用道具 举报

48#
ID:819112 发表于 2020-9-22 10:02 | 只看该作者
能全部整合,牛逼啊
回复

使用道具 举报

49#
ID:846386 发表于 2020-11-22 11:40 | 只看该作者
分享快乐,学习一下源码
回复

使用道具 举报

50#
ID:843473 发表于 2020-12-4 20:04 来自手机 | 只看该作者
刚刚看了六轴的,不懂来看一下四轴的
回复

使用道具 举报

51#
ID:186696 发表于 2021-2-4 12:29 | 只看该作者
同求电路原理图,我准备自己再做一版stm32
回复

使用道具 举报

52#
ID:972494 发表于 2021-10-16 10:48 | 只看该作者
最近在研究无人机控制算法优化,希望能和各位前辈学习学习。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表