聊聊体感游戏背后的小科技
运动传感器LSM303 ADXL345 ADXL335 MPU6500
相信不少朋友会喜欢诸如《EA 真实赛车》或
《Labyrinth 2 HD》这类重力传感类游戏。只需要轻轻倾斜手机或平板,就可以操纵汽车或弹珠的运动,简单有趣。
那这类游戏控制过程是如何实现的,或者换句话说,手机和平板是如何感知自身的倾角变化呢?
这不得不提及运动状态检测的两大重量级传感器:
陀螺仪与加速度传感器
陀螺仪和加速度传感器基本上覆盖了从手环、手机、VR头盔到无人机、无人驾驶所有运动检测领域。
我们先来看看最常见的消费电子拆解:
苹果手机传感器(注1)
苹果手表传感器(注2)
HTC VR头盔运动传感器(注3)
华为B2手环传感器(注4)
评测及拆解中的InvenSense 773C、C451、MPU6500、LSM330芯片便是消费电子常用的运动检测芯片,包含3轴陀螺仪与3轴加速度计,也就是常说的6轴运动传感器。
陀螺仪 VS 加速度计
陀螺仪结构(注5)
陀螺仪是利用角动量能量守恒原理制造的仪器,当转子高速旋转时,转子具有定轴性(陀螺仪定轴性可观看文章尾部视频),转子旋转的轴线不会随陀螺仪框架的改变而改变,因此可以通过测量转轴(z轴)与常平架所确立的空间坐标系与陀螺仪相互垂直的框架所确立的坐标系各轴之间的夹角,来获取空间运动姿态,即下图所示的Roll(翻滚)、Pitch(俯仰)、Heading(朝向)三个维度的旋转角度。
飞行姿态(注6)
陀螺仪可以检测角度的变化,但却不擅长检测线性加速度检测,比如上图的飞机,如果遇到上升或下降气流,但只要姿态相对地面保持水平,陀螺仪的读数就不发生变化(转子与框架的相对角度不变)。
但这种变化可以通过加速度计进行测量。
加速度计原理图(单轴)(注7)
图示为单轴的加速度检测计。按照牛顿的第二定律F=ma,检测质量m已知,弹簧形变与外力F正相关,而形变的数值可以通过输出电压获得,进而求出加速度a的数值。按照xyz相互垂直的关系,即可构建出3轴的加速度计。
与陀螺仪类似,加速度计也有自身的不足,不擅长检测物体的旋转运动。比如物体绕z轴旋转时,物体的加速度即所受的重力加速度,加速度方向指向地表,虽然物体在旋转,但加速度计读数无变化。
加速度计水平旋转,读数不变
(数值细小变化是手动旋转无法保持绝对水平所致)
陀螺仪擅长自身旋转运动的检测,不擅长线性运动检测,而加速度计却擅长线性运动检测,两者结合,优势互补,所以文章开头的各类消费电子都采用两者结合的检测芯片,比如MPU-6500。
得益于科技的进步,现在手机里的陀螺仪和加速度计都变成了MEMS(Micro Electromechanical System,微机电系统)了,比如电子陀螺仪:
游戏控制原理解密
回到文章最开始的游戏原理,如果把手机与陀螺仪类比,那玩游戏时手机的倾斜正好与飞机的Roll、Pitch运动类似,自然陀螺仪可以完成游戏的操纵。
加速度计能否实现类似游戏控制呢?
用手机玩这类游戏时,手机的相对位置不会有太大变化,可以近似认为是在相同位置的倾斜变化,此时芯片检测到的加速度为静态加速度,与重力方向相同且大小一致,即xyz轴上的加速度的矢量和等于重力加速度。
加速度计检测坐标系(注8)
所以当手机发生倾斜时,重力加速度在各轴上的分加速度发生变化,且各轴上加速度数值大小与倾斜角度呈线性相关。于是我们可以借此计算出各轴的倾斜角度。
我们查看芯片数据手册中的说明,发现当x轴与重力加速度方向一致时,x轴方向上对应值为-1,相反时为1,可以得到单轴倾斜角度与加速度值之间的关系。以此类推可获取其他轴的倾斜角度,进而推出手机姿态。
芯片水平与垂直状态下各轴加速度计读数(注8)
对于手机游戏而言,通常只需判定1至2轴加速度变化,比如《Labyrinth 2 HD》需要分析x和y轴上的加速度进而计算倾角,而《EA 真实赛车》只需判定x轴(或y轴,取决于芯片安装方向)即可,因为汽车只需要控制左转右转。
ADXL345加速度计
实践是检验真理的唯一标准,我们看下加速度计能否完成倾角检测。
所需元件
Arduino UNO ×1 ADXL345 ×1
9g舵机 ×1 面包板 ×1
杜邦线 若干
连线图
看下运行效果:
加速度计倾角检测
陀螺仪定轴性(注9)
https://v.qq.com/txp/iframe/player.html?vid=b0373vtw81v&width=500&height=375&auto=0
科技学堂
科技辅导员在线学习平台
微信号:sciclass
注1:http://www.52rd.com/S_TXT/2016_9/TXT88953.HTM?WebShieldDRSessionVerify=ufrt47F7e8UncVXriNmG
注2:https://www.ifixit.com/Teardown/Apple+Watch+Teardown/40655
注3:https://www.ifixit.com/Teardown/HTC+Vive+Teardown/62213
注4:http://www.52solution.com/news/80025443.html
注5:陀螺仪百度百科词条
注6:LSM303DLH官方数据手册P5
注7:加速度计百度百科词条
注8:ADXL345官方数据手册P34
注9:视频来自http://v.youku.com/v_show/id_XMTU0MDI5ODc2MA==.html?from=s1.8-1-1.2&spm=a2h0k.8191407.0.0