对飞控的理解(一)

以主函数为纲,逐个研究各个函数的作用。(备忘:roll翻滚角,pitch俯仰角,yow偏航角)

首先要明确,我们这个程序是在稳定飞行的基础上,进行定高,用到了mpu6050,hmc5883数字罗盘,ms5611气压计,气压定高。

mpu6050获取飞机当前重力加速度与各个轴的角度和角速度,先对加速度计和陀螺仪进行零偏校正,然后对原始数据进行加权平均滤波,消除部分震动影响,供内环pid使用。

为了增加飞机的稳定性,进行角度/角速度的串级pid滤波,内环角速度,外环角度,然后得出需要的四路pwm驱动电机,纠正姿态。

我的理解就是pid建立了一个mcu和电机之间的循环,mcu不断读取四轴的姿态,其中由于电机的震动,包含了大量的噪声,甚至覆盖了真实信息,但是

经过pid的滤波处理,得到相对精确的当前姿态坐标,与期望姿态(r,p,y=0)对比,得出电机需要的pwm波。在输出需要的pwm波之前,进行限幅处理,防止输出错误。

在main中,首先是各个定时器和传感器的初始化,电机使能,中断配置,四元数初始化,pid参数初始化,然后是while循环

在死循环里,loop.cnt_10ms那个没看懂,理解应该是当系统循环一次之后,标志清零,保证程序一直循环下去。

在ms5611文件里,采用软件i2c读取传感器寄存器的值,气压和温度,利用温度对气压数据进行温度补偿,在采集五次气压值的数据进行卡尔曼滤波。得出精确的气压值,return baroAlt。

在定高上面,还是利用pid在传感器得出的数据与电机之间建立一个循环,使飞机保持在一个高度不变,也就是气压不变,利用pid使气压保持在一个范围内。

但是就程序来看,我没有在程序中找到自动定高的值,我猜想他可能是由遥控器起飞,当飞机达到想要的高度时,由遥控器给定信号(油门回中),使飞机保持在当前高度不动。虽然也是定高,

但是与比赛的定高有所不同,所以这方面还是需要改进。我的想法是,比如我们想要定高一米,那么就要提前计算出一米高度的气压值,设定在主函数里,当检测到气压值等于这个值时,保持当前高度。

也就是还是利用pid在传感器获取的高度与期望高度之间建立循环。当低于期望高度时,电机稳定输出,匀速上升。当高于期望高度时,电机减速,缓慢下降。

时间: 2024-10-12 14:50:59

对飞控的理解(一)的相关文章

Mavlink协议理解

来源:blog.csdn.net/super_mice/article/details/44836585 之前看了mavlink协议,网上关于mavlink的资料不多.本文大概总结了下对mavlink协议的理解.以下如不说明都是说mavlink v1.0版本. 首先附上mavlink的各个消息的简介https://pixhawk.ethz.ch/mavlink/(这里的内容很多,建议大概了解mavlink后再去浏览), mavlink协议介绍http://qgroundcontrol.org/m

无人机飞控三大算法汇总

无人机飞控三大算法:捷联式惯性导航系统.卡尔曼滤波算法.飞行控制PID算法. 一.捷联式惯性导航系统 说到导航,不得不说GPS,他是接受卫星发送的信号计算出自身位置的,但是当GPS设备上方被遮挡后,GPS设备无法定位了.比如在室内.隧道内.地下等场所,基本收不到GPS信号. 语录:任何一款有缺点的产品,必然成就了另一款能克服其缺点的产品. 另一种导航方式是不依赖外界信息的,这种导航叫做惯性导航. 那什么是惯性导航呢?他就是利用载体上的加速度计.陀螺仪这两种惯性远见,去分别测出飞行器的角运动信息和

飞控之卡尔曼滤波浅析

卡尔曼滤波 滤波的方法有很多种,针对不同的情况选用的最优滤波方法也是不同的.卡尔曼滤波的特点就是采用递归方法解决线性滤波问题,只需要知道当前的测量值和上一时刻的最优值,就能对此刻进行最优值计算,计算量小,不需要大量储存空间,适合性能不太强的单片机处理.二阶卡尔曼滤波更加可靠,但计算量较大,通常使用的是一阶. 现在网络上卡尔曼滤波的资料有很多,大多是一位大佬生产,说不清的码农搬砖,想要真正理解卡尔曼滤波的道理,还需静下心来从数学理论慢慢体会.分享一个正在研究的文档,比较深入的那种. https:/

无人机--飞控科普

无人机是无人驾驶飞机的简称(Unmanned Aerial Vehicle,UAV),是利用无线电遥控设备和自备的程序控制装置的不载人飞机,包括无人直升机.固定翼机.多旋翼飞行器.无人飞艇.无人伞翼机.广义地看也包括临近空间飞行器(20-100 公里空域),如平流层飞艇.高空气球.太阳能无人机等.从某种角度来看,无人机可以在无人驾驶的条件下完成复杂空中飞行任务和各种负载任务,可以被看做是“空中机器人”. 飞控系统是无人机完成起飞.空中飞行.执行任务和返场回收等整个飞行过程的核心系统,飞控对于无人

Python——深入理解urllib、urllib2及requests(requests不建议使用?)

深入理解urllib.urllib2及requests            python Python 是一种面向对象.解释型计算机程序设计语言,由Guido van Rossum于1989年底发明,第一个公开发行版发行于1991年,Python 源代码同样遵循 GPL(GNU General Public License)协议[1] .Python语法简洁而清晰,具有丰富和强大的类库. urllib and urllib2 区别 urllib和urllib2模块都做与请求URL相关的操作,但

关于SVM数学细节逻辑的个人理解(三) :SMO算法理解

第三部分:SMO算法的个人理解 接下来的这部分我觉得是最难理解的?而且计算也是最难得,就是SMO算法. SMO算法就是帮助我们求解: s.t.   这个优化问题的. 虽然这个优化问题只剩下了α这一个变量,但是别忘了α是一个向量,有m个αi等着我们去优化,所以还是很麻烦,所以大神提出了SMO算法来解决这个优化问题. 关于SMO最好的资料还是论文<Sequential Minimal Optimization A Fast Algorithm for Training Support Vector

2.2 logistic回归损失函数(非常重要,深入理解)

上一节当中,为了能够训练logistic回归模型的参数w和b,需要定义一个成本函数 使用logistic回归训练的成本函数 为了让模型通过学习来调整参数,要给出一个含有m和训练样本的训练集 很自然的,希望通过训练集找到参数w和b,来得到自己得输出 对训练集当中的值进行预测,将他写成y^(I)我们希望他会接近于训练集当中的y^(i)的数值 现在来看一下损失函数或者叫做误差函数 他们可以用来衡量算法的运行情况 可以定义损失函数为y^和y的差,或者他们差的平方的一半,结果表明你可能这样做,但是实际当中

理解信息管理系统

1.信息与数据的区别是什么? 数据是记录客观事物,可鉴别的符号,而信息是具有关联性和目的性的结构化,组织化的数据.数据经过处理仍是数据,而信息经过加工可以形成知识.处理数据是为了便于更好的解释,只有经过解释,数据才有意义,才可以成为信息.可以说信息是经过加工以后,对客观世界产生影响的数据. 2.信息与知识的区别是什么? 信息是具有关联性和目的性的结构化,组织化的数据,知识是对信息的进一步加工和应用,是对事物内在规律和原理的认识.信息经过加工可以形成知识. 3.举一个同一主题不同级别的数据.信息.

深度理解div+css布局嵌套盒子

1. 网页布局概述 网页布局的概念是把即将出现在网页中的所有元素进行定位,而CSS网页排版技术有别于传统的网页排版方法,它将页面首先在整体上使用<div>标记进行分块,然后对每个快进行CSS定位以及设置显示效果,最后在每个块中添加相应的内容.利用CSS排版方法更容易地控制页面每个元素的效果,更新也更容易,甚至页面的拓扑结构也可以通过修改相应的CSS属性来重新定位.  2. 盒子模型 盒子模型是CSS控制页面元素的一个重要概念,只有掌握了盒子模型,才能让CSS很好地控制页面上每一个元素,达到我们