加速度计的数据解读

摘要:
本文只对从加速度计得到的数据进行解读。只是把里面的一份加速度计的数据抽取出来,分析一下为什么加速度计的读数会是那个样子。三个轴的方向是这样定义的:二:加速度计的输出分析我们对加速度计三个轴的输出进行了描述:从上到下,依次是X,Y,Z三个轴上的加速度数据。

一:加速度计介绍

加速度计是用来测试线性加速度的一种传感器,相对于电子陀螺仪,它具有长时间稳定的特点。但因为受到重力的影响,短时间内会有噪声。关于加速度计的原理和结构,可以参考我CSDN上转载的一篇文章:http://blog.csdn.net/lovewubo/article/details/9084291

里面的内容很详细。本文只对从加速度计得到的数据进行解读。数据是从国外的一个大牛博客那里得到的(那人貌似是叫SOH Madgwick),那篇博文讲解了一种融合加速度计和陀螺仪的姿态解算算法,这里不讨论。只是把里面的一份加速度计的数据抽取出来,分析一下为什么加速度计的读数会是那个样子。

首先说明一下,那位大牛的实验中,把传感器设备分别围绕三个轴旋转正90度,回到起始位置,再反向旋转90度,回到起始位置。三个轴的方向是这样定义的:

加速度计的数据解读第1张

二:加速度计的输出分析

我们对加速度计三个轴的输出进行了描述:

加速度计的数据解读第2张

从上到下,依次是X,Y,Z三个轴上的加速度数据。让我们分析一下,为什么会产生这样的输出。首先看这个图:

加速度计的数据解读第3张

我将图中用三种颜色标识了三个区域,矩形框1-3标识区域1,2-6标识区域2,7标识区域3。ok,现在开始。

其实这三个区域分别代表了三次绕不同轴旋转的过程。第一个是绕X轴正负旋转90度,第二个对应Y轴旋转,第三个对应Z轴旋转。下面逐一分析,首先看区域1,它的三个矩形分别代表了这样三个子过程:

1 绕X轴旋转90度

解释如下:当绕X轴旋转90度时,Y轴慢慢向上翘,Z轴慢慢向下靠(我擦,蛮押韵的)。当完全达到90度时,由于Y轴与重力方向刚好相反,所以Y轴的输出是1g(1g==9.8m/s^2),而Z轴的值从原来的1逐渐减小为0。这个状态估计保持了1秒钟吧,对应矩形1和2之间的平坦区域

2 回到初始位置,并反向旋转90度

解释如下:接着当回到初始位置时,Y轴数据慢慢减小为0,而Z轴数据慢慢上升为1。然后逆向旋转90度,Y轴慢慢减小,直至为-1,因为此时Y轴方向与重力方向一致了,而反应出来的加速度值应该是负值。而Z轴慢慢减小为0

3 回到初始位置

解释如下:然后从逆向90度回到初始位置。此时Y轴和Z轴的数据慢慢恢复到初始值,Y轴为0,而Z轴为1

分析完了X轴的旋转,其实Y轴的旋转也是类似的,就不说了。现在说说Z轴的,因为绕Z轴旋转时,相当于左右摆动90度,此时Z轴的输出始终是1,而X轴和Y轴由于是正交于重力轴的,所以输出值都是0,当然这都是在相对静止的条件下的值。如果是将这个设备安装在车辆上,当车左右转弯时,X轴和Y轴的读数可不一定是0,因为这两个方向会受到车辆速度冲击力的影响,这就是加速度引起的惯性力,正是借助与这个惯性力,加速度计才能测量加速度。而自然界的重力成为影响传感器的噪声来源,而如何消除这些噪声,就是另外要考虑的滤波算法了。正如那位国外大牛的文章,可以用陀螺仪进行矫正。也可以参考本文最开始的CSDN上的那个链接里面讲到的融合算法,当然也可以考虑用卡尔曼滤波,以后慢慢研究。

三:计算倾斜角

先上图:

加速度计的数据解读第4张

我们感兴趣的角度是向量R和X,Y,Z轴之间的夹角,那就令这些角度为Axr,Ayr,Azr。观察由R和Rx组成的直角三角形:
cos(Axr) = Rx / R
cos(Ayr) = Ry / R
cos(Azr) = Rz / R
其中,R = SQRT( Rx^2 + Ry^2 + Rz^2)
通过arccos()函数(cos()的反函数)我们可以计算出所需的角度:
Axr = arccos(Rx/R)
Ayr = arccos(Ry/R)
Azr = arccos(Rz/R)

matlab代码:

function AcceCalDegree
%%加速度计计算角度,这个角度是传感器三个坐标轴的倾斜角
%%%%%%%%%%%%%%%%%%%%%%%
clc;
clear;

load('ExampleData.mat');

nCount = length(time);
Degree = zeros(nCount,3);
for i=1:nCount
    [Degree(i,1) Degree(i,2) Degree(i,3)] = GetDegreeFromAcce(Accelerometer(i,1), Accelerometer(i,2), Accelerometer(i,3));
end

figure(1);
subplot(3,1,1);plot(time, Degree(:,1));title('x轴的倾斜角度');
subplot(3,1,2);plot(time, Degree(:,2));title('y轴的倾斜角度');
subplot(3,1,3);plot(time, Degree(:,3));title('z轴的倾斜角度');

function [dx dy dz] = GetDegreeFromAcce(ax, ay, az)
%%%ax ay az代表加速度计的三个轴的读数
%%%dxy dxz dyz分别代表在三个平面内的角度,即旋转角度

R = sqrt(ax^2 + ay^2 + az^2);
%%计算角度
dx = acos(ax/R) * 180 / pi;
dy = acos(ay/R) * 180 / pi; 
dz = acos(az/R) * 180 / pi; %将弧度转换为角度

加速度计的数据解读第5张

从上图中,可以直观的看到,绕不同的轴旋转是,重力方向与三个轴的角度变化。

四:总结

初学这些东西,如果有不对的,请指正。

免责声明:文章转载自《加速度计的数据解读》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇[转]TCP/IP 协议基础(一)正则表达式以斜杠星(/*)开始,以星斜杠结束(*/)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

极坐标系 下的 牛顿第二定律

在 一个 极坐标系 里,  可以这样 来 描述 牛顿第二定律, 如图,  图中 是一个 极坐标系,  质点 从 A 点 运动到 C 点,   极角 的 变化量 就是 ⊿θ  ,   极径 的 变化量  ⊿ρ = BC 。    其中  OA = OB,  AH 垂直于 OB,  AB 间 的 弧 记为  弧AB,   AB 间 的 线段 仍然 称为 AB ...

iOS加速计、陀螺仪(CoreMotion.framework)

https://www.jianshu.com/p/c4fff00b50ff?open_source=weibo_search CoreMotion.framework框架介绍 CoreMotion.framework是iOS中的一个核心运动框架,它能够满足我们手机许多应用的一些需求,比如: 指南针 加速计:微信摇一摇 游戏中根据重力感应的操作 计步...

粒子编辑器的选择

乎是没得选,目前在windows上就发现了一款粒子编辑器,叫做cocos2d-windows-particle-editor。 这是一个开源项目,你可以从下面的网址获取。http://code.google.com/p/cocos2d-windows-particle-editor/ 编辑器属性 粒子和发射器是粒子系统不可或缺的组成部分。发射器将大...

html5实现web app摇一摇换歌

微信可以摇歌曲,根据声音识别出歌曲,然后返回歌曲信息,利用html5的deviceOrientation特性和deviceMotion事件也可以在web app上实现类似于微信摇一摇的功能,原生的app实现也有相关接口,这里只考虑web app的情况...... Section One 先来看下demo效果图: 测试地址:http://hcy2367...

内置传感器---智能手机(资料)

1.  简单介绍 手机传感器介绍手机传感器检測安卓手机上全部可用感应器,并通过图像生动的展示它们是怎样运作的。 手机传感器也可以识别该手机硬件支持哪些传感器,并提供对我们日常生活起着重要作用的传感工具。手机传感器仅仅能检測到变化。假设属性没有变化。它显示的温度值、距离值、光和压力的值可能不准确。 2. 手机中经常使用的传感器 在Android2.3 g...

Android操作系统11种传感器介绍

我们依次看看这十一种传感器   1 加速度传感器 加速度传感器又叫G-sensor,返回x、y、z三轴的加速度数值。 该数值包含地心引力的影响,单位是m/s^2。 将手机平放在桌面上,x轴默认为0,y轴默认0,z轴默认9.81。 将手机朝下放在桌面上,z轴为-9.81。 将手机向左倾斜,x轴为正值。 将手机向右倾斜,x轴为负值。 将手机向上倾斜,y轴为负值。...