Sensor Fusion简介

from: http://blog.csdn.net/johnny_9812/article/details/7743131


摘要:本文简单介绍了一下Android Sensor Fusion代码,感兴趣的人可以了解下。


笔者早就打算写篇日记介绍这个了,一直拖啊拖,直到拖到4.1都来了,再拖说不定Android代码全改了,

趁今天上午不忙赶快写写。


说起Sensor fusion,基本上从开始无人问津,到最后兴起,都是跟智能手机的普及有着必然的联系。

最开始的手机只带个加速度传感器,现在Win8系统、Android系统都自带Sensor fusion算法,包括

下一代的超级本也要求带各种传感器。

究竟什么叫sensor fusion呢?简单的说,就是用两套传感器组件同时测量一个数值,然后两个测量

结果A跟B进行一下加权平均得到最终的结果(Fusion这个词是融合的意思,可以理解为A、B结果的融合)。

为什么要使用fusion技术呢?就是为了得到更精确的“结果”。


先说两套传感器组建。第一套:加速度传感器(accelerometer sensor,ACCEL) + 磁力传感器(magnetic sensor,MAG)。

ACCEL测量手机线加速度,MAG测量手机磁场强度。第二套:陀螺仪,或称角速度传感器(Gyroscope, GYRO)。GYRO

测量手机在转动时的角速度。


使用第一套系统(ACCEL+MAG)可以计算出手机当前相对于地磁北极的姿态(orientation)。打开手机大家都能看到一个叫

orientation sensor的虚拟传感器,就是通过ACCEL+MAG的数据得到的。姿态这个概念可以理解飞机在飞行中的姿态,

一半描述飞机的飞行姿态,会使用三个维度。第一维,偏角(Yaw),就是指相对于地磁北极的水平偏角,决定飞机飞向哪个方向

。第二维,仰角(Pitch),就是飞机的俯仰角,一半说飞机俯冲或者拉升多少角度,都是说的仰角。第三维,倾斜角(Roll),这个酷。

看特技飞行的时候,飞机有时会斜着飞,一个翅膀指天一个翅膀指地,这就是在说用90度倾斜角飞行。知道了这三维数据,就能知道

目前一个东西(飞机、手机、或者电视机)在地球上的姿态。


飞机的姿态肯定是非常重要的,不止决定了飞机的航向,也决定了很多动力学的结果。那为什么手机的姿态是有用的呢?手机肯定不打算

飞去北京,而且也不会因为侧着拿手机就会“坠机”。原因有二。其一,有些应用需要使用手机姿态,比如,指南针。指南针是个神奇的应用,

简单的说,手机平方桌面与用户直立拿着手机,指针的方向应该是不用的,也就是说,手机计算出了自己是直立还是平方的,自己的姿态。

其二,体感游戏。这一类的应用非常多,这类的游戏实际上利用了姿态的变化,来操作游戏。上面这两个原因,如果你是app开发者,一定是

非常深有体会。


下面说说第二个系统GYRO。GYRO是角速度传感器,怎么能用来测量手机的姿态呢?答案是不行。GYRO传感器不能直接测量手机的姿态,但是,

可以通过对角速度的积分计算手机姿态的变化!也就是说,可以测量delta orientation,然后用t时刻的姿态加上GYRO计算的delta姿态得到当前的姿态。

有点儿抽象,但是我相信收藏了我RSS的几个读者都看得懂:)


现在就可以看出为什么GYRO,ACCEL与MAG组成的系统是符合开篇提到的fusion的系统了。ACCEL+MAG能直接得到当前姿态,然后减掉上一个时刻姿态

得到delta姿态1,GYRO可以将角速度积分得到delta姿态2,然后用加权平均得到delta姿态3。列车本文的第一个公式:

DO3 = Weight(DO1, DO2)

其中DO是delta orientation,weight是某种加权平均算法。


好了,概念介绍到这里,本章也应该结束了。下一章将介绍Android使用的具体算法。


同时,看官们如果对Linux kernel更感兴趣,我就先写Linux kernel相关的东西。在笔者看来,Android framework对比Linux kernel还是差得远。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值