四旋翼基础算法学习2-IMU输入滤波算法
前言:
处理器读取陀螺仪加速度计数据后首先需要对数据进行滤波处理,此文分析比较几种常用的滤波算法。
参考学习:四轴加速度计滤波
IMU:
IMU使用MPU9250(即MPU6500),设置加速度量程±8G,陀螺仪±2000dps,数字低通滤波设置42Hz。
IMU采集频率:Crazepony 100Hz(10ms),匿名小四 1000Hz(1ms),圆点博士小四333Hz(3ms)。本次测试使用250Hz(4ms)。
在从传感器读取的原始数据滤波之前,一般需要进行零偏校准。一般陀螺仪需要上电校准零偏,加计的零偏与IMU安装有关,校准一次以后上电始终使用校准值即可(或者不予校准)。零偏校准方法基本都是水平静止放置机体多次采样取均值。
三轴加速度三轴陀螺仪原始数据 –> 减去零偏 –> 数据滤波
加速度计滤波:
滤波方法有 滑动均值滤波,2阶低通滤波
使用匿名地面站显示加速度数据波形,滤波后数据由陀螺仪通道波形显示。
ACC_X 原始加速度x轴数据
ACC_Y 原始加速度y轴数据
ACC_Z 原始加速度z轴数据
GYRO_X 滤波后加速度x轴数据
GYRO_Y 滤波后加速度x轴数据
GYRO_Z 滤波后加速度z轴数据
1.加速度计滑动均值滤波
代码:
#define SAF_NUM 10void Slide_Average_Filter(int16_t acc_x,int16_t acc_y,int16_t acc_z,int16_t *acc_out_x,int16_t *acc_out_y,int16_t *acc_out_z){static uint8_t filter_cnt=0,cnt=0;static int16_t filter_buffer[3][SAF_NUM];int32_t temp1=0,temp2=0,temp3=0;filter_buffer[0][filter_cnt]=acc_x;filter_buffer[1][filter_cnt]=acc_y;filter_buffer[2][filter_cnt]=acc_z;for(cnt=0;cnt<SAF_NUM;cnt++){temp1 += filter_buffer[0][cnt];temp2 += filter_buffer[1][cnt];temp3 += filter_buffer[2][cnt];}*acc_out_x = temp1/SAF_NUM;*acc_out_y = temp2/SAF_NUM;*acc_out_z = temp3/SAF_NUM;filter_cnt++;if(filter_cnt==SAF_NUM)filter_cnt=0;}
水平静止放置然后拍击三次桌子 下图
水平静止放置然后旋转晃动 下图
滑动滤波大体上消除了静止时的微小抖动,平滑了波形,但是能看到少许的延时。
2.加速度计2阶低通滤波
四旋翼基础算法学习2-IMU输入滤波算法的更多相关文章
- 数据挖掘算法学习(一)K-Means算法
博主近期实习開始接触数据挖掘,将学习笔记分享给大家.眼下用的软件是weka.下篇文章会着重解说. 转载请附上链接http://blog.csdn.net/iemyxie/article/details ...
- 数据挖掘算法学习(三)NaiveBayes算法
算法简单介绍 NBC是应用最广的分类算法之中的一个.朴素贝叶斯模型发源于古典数学理论,有着坚实的数学基础,以及稳定的分类效率.同一时候,NBC模型所需预计的參数非常少,对缺失数据不太敏感,算法也比較简 ...
- 数据挖掘算法学习(八)Adaboost算法
本文不定期更新.原创文章,转载请附上链接http://blog.csdn.net/iemyxie/article/details/40423907 谢谢 Adaboost是一种迭代算法,其核心思想是针 ...
- 算法学习导图+经典排序算法PHP实现
周末抽时间整理下算法,完整导图可点击下面链接获取. 点我看完整算法导图 八种排序算法的php实现 代码如下 拷贝后可直接运行 先上个运行后的图 代码:(有的自己些的 有的根据网友整理) <?ph ...
- PHP算法学习(4) 随机算法
svn地址:svn://gitee.com/zxadmin/live_z <?php /* * 随机数算法 * 伪随机数 根据分布概率 */ final class Random { /* * ...
- 第四百一十五节,python常用排序算法学习
第四百一十五节,python常用排序算法学习 常用排序 名称 复杂度 说明 备注 冒泡排序Bubble Sort O(N*N) 将待排序的元素看作是竖着排列的“气泡”,较小的元素比较轻,从而要往上浮 ...
- php四种基础排序算法的运行时间比较
/** * php四种基础排序算法的运行时间比较 * @authors Jesse (jesse152@163.com) * @date 2016-08-11 07:12:14 */ //冒泡排序法 ...
- 算法学习之C语言基础
算法学习,先熟悉一下C语言哈!!! #include <conio.h> #include<stdio.h> int main(){ printf(+); getch(); ; ...
- 第四百一十四节,python常用算法学习
本节内容 算法定义 时间复杂度 空间复杂度 常用算法实例 1.算法定义 算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机 ...
随机推荐
- Pytorch基本变量类型FloatTensor与Variable
pytorch中基本的变量类型当属FloatTensor(以下都用floattensor),而Variable(以下都用variable)是floattensor的封装,除了包含floattensor ...
- [LeetCode&Python] Problem 283. Move Zeroes
Given an array nums, write a function to move all 0's to the end of it while maintaining the relativ ...
- 20155219 《Java程序设计》实验一(Java开发环境的熟悉)实验报告
一.实验内容及步骤 1.使用JDK编译.运行简单的java程序 先在命令行中按老师要求输入,之后编译运行,如下图. 具体代码如下: package src.shiyan1; import java.u ...
- Codeforces 766C:Mahmoud and a Message(DP)
题目链接:http://codeforces.com/problemset/problem/766/C 题意 有一个长度为n的字符串,第二行有26个数字,位置1~26对应为a~z的字母,数值表示该字母 ...
- sudo命令 和限制root 远程登陆
1.对sudo命令的配制,输入 visudo 然后,找到92行进行以下配制 以下就是效果 比如: 如果要同时给两个普通用户设置这样子的权限,就可以用另一种方式,下面这种方式不可取的 而是用这种 效果如 ...
- java路径
System.out.println(ResourceUtils.getURL("classpath:").getPath());
- UV纹理+修改器:VertexWeightEdit+修改器:Mask遮罩
UV纹理+修改器: VertexWeightEdit+修改器: Mask遮罩 基本流程, 如下图,准备地图一份, 黑白色即可. 纹理使用颜色绘制权重. 白色为1, 黑色为0. 新增球体, 细分多次, ...
- java依赖注入(injection)
和SpringSource分别通过其开源项目Guice及Spring Framework提供了依赖注入的功能.然而直到现在开发者也没有一种标准的.独立于供应商的方式从而无需修改其源文件就能在这些框架之 ...
- servlet创建项目过程中,servlet内容重写的两种搭建,tomcat的配置,class的存放位置,web.xml的搭建等注意事项与易错点
运行一个servlet项目:需要做这些前提工作: 1.配置tomcat,在server选项卡的设置也就基本的设置,HTTP port与JMX port等端口号:基本都是默认的.这里需要注意的是,有的教 ...
- MySQL--数据超时相关参数
=============================================== connect_timeout connect_timeout用在client和server之间建立连接 ...