气压计

无人机小四轴定高篇

偶尔善良 提交于 2020-03-08 09:11:45
无人机定高篇 定高,也是无人机的标配功能,可以说必须要有的。一般来说定高怎么做,常规的思维就是计算出无人机的高度和Z轴速度,然后对高度和速度进行PID运算。实际上大思想就是这么的简单,但是要真的调的好那可就不简单了。 1、计算高度和速度 一般来说要定高就需要相应的能够计算高度的传感器,在这我以气压计为例。市面上的气压计很多种,气压计根据海拔高度不同而气压不同的这个原理可以相对的计算出无人机的高度,记住这个是相对高度,绝对高度并不精确。 但是气压计有它本身非常致命的缺点,那就是更新速率慢,一般的PID单是靠气压计完全没有办法实现定高。这是我们想到无人机还有一个传感器,那就是加速计。加速计这个器件反应很快,也很灵敏,但是会有积分飘漂移,所以单靠加速计实现定高也没办法实现。由此,聪明的人类就想到了为何不各采用他们两的优点呢,让他们形成一个取长补短的关系。这个关系就是气压计加速计的数据融合了。 最简单的融合方法就是互补滤波,下面我们就先来了解气压计加速计的互补滤波融合,直接上代码: void ahrs_update_R_bf_to_ef ( float angle_pitch , float angle_roll , float angle_yaw ) { float sin_pitch = sin ( angle_pitch * M_DEG_TO_RAD ) ; float cos

气压计 MS5611-01BA03 数据读取

最后都变了- 提交于 2020-01-10 17:34:01
气压计 MS5611-01BA03 数据读取 1、简介及注意事项   气压计MS5611-01BA03 采用 24位 的气压和温度AD转换值, SPI 、 IIC 接口协议读取,采用 256、512、1024、2048和4096 的过采样率提高采样精度。256的过采样率最低转换时间为0.5ms。   该气压计仅仅只有5个基本指令: 复位 、 读ProM校准值 、 D1启动温度转换 、 D2启动气压转换 、 读取ADC转换值结果。 关于初始化 在上电之后,需要执行 复位指令 ,确保校准值Prom都载入到寄存器中。 Prom寄存器值, 读取一次 即可。Prom值中从0xA0-0xAE,最后一位始终为0,所以共八个指令,第一个是厂商信息,2-7是六个系数信息,8是CRC校验信息。 SPI模式可以采用 0和3模式 ,即:SPI_CPOL_Low和SPI_CPHA_1Edge、SPI_CPOL_High和SPI_CPHA_2Edge。 在启动AD转换之后, 需要等待相应的时间 去读取,否则读取的时候可能为0;连续读取两次数据也为0; 关于协议时序图 气压、温度转换数据读取   在发送完0x48(OSR 4096)之后,需要等待8.22ms,之后再去读取数据,读取数据的时候,也需要发送相应的数据,才能传回数据。 Prom数据读取    2、数据读取 来源: CSDN 作者: 张一西 链接:

基于加速度计与气压计的三阶卡尔曼滤波计算加速度、速度及高度

家住魔仙堡 提交于 2019-12-18 19:47:21
本文主要介绍了卡尔曼滤波器的使用原理,给出了matlab代码,并在STM32F407平台对卡尔曼滤波器进行了验证,传感器为MPU6050与DPS310,测试结果令人满意,速度与高度无累积误差。 系统状态方程 在开始讲卡尔曼滤波器之前需要先提一下状态方程。因为卡尔曼的计算公式是建立在状态方程上的,所以我们需要先写出系统的状态方程。离散状态方程为: 其中 X (k)为当前状态, X (k+1)为下一时刻状态, Φ 为转移矩阵, B 为控制矩阵, u 为控制量, Г 为噪声矩阵, W 为系统噪声, Y 为输出量, H 为输出矩阵, V 为观测噪声。简单来说就是通过这一时刻已知的状态、控制量及系统噪声可以求出此刻的能观测到的输出以及下一时刻的状态。 那什么又是状态呢?对于我们要分析的系统来说,加速度、速度、以及高度就是系统的状态,也就是说公式中的 X (k)就是包含加速度、速度、以及高度的向量。 同理: 而状态转移矩阵 Φ 是表述下一时刻状态与此刻状态关系的矩阵,在本系统中我们能够非常清楚得列出他们的关系,假设我们采样周期T比较短,可以近似认为加速度a几乎不变,则 将上面几个等式写成矩阵形式则为: 由此我们可以得到转移矩阵Φ就是: 对于我们要分析的系统,没有控制量,不考虑其他系统噪声的情况下,后面两项可以直接拿掉,状态方程简化为: 状态方程第一个式子分析完了接下来分析下第二个式子。