作者priv (邪恶松鼠)
看板AndroidDev
标题Re: [问题] 关於陀螺仪
时间Fri Jul 1 17:16:34 2011
※ 引述《narwhalgary (独角鲸葛瑞)》之铭言:
: 在htc官网上IS是没有搭载陀螺仪的我知道
: 可是用程式读取里面的sensor後发现数量比官网上写的还多
: 原本好像6个 更新到2.3後变成八个
: 官网只有写4个
: 其中我比较困惑的是Orientation sensor这个
: 因为这个东西明显也可以量到手机旋转的角度
: 那不是和陀螺仪(gyroscope)一样吗? 到底这两者有什麽差别?
: 另外还有用orientation sensor和magnetic field sensor都可以做指南针???
: 因为我有程式他们指出来的位置是一样的
: 所以......Orientation sensor到底是什麽东西......
: 有没有人可以解惑一下谢谢
首先你要建立这些sensor是什麽的概念
gyroscope最大的用途是可以精确指示
你的机器「相对」移动了多少度
但是光有gyroscope「没办法」指出手机的「绝对」方向
为了指出手机是正摆、横摆、反摆,你需要配合gsensor
而指出你往哪个方向走,你需要配合GPS的bearing值(GPS定位)
或是用ecompass(地磁)先指出你一开始是往哪个方向
而目前的Orientation sensor其实就是ecompass
那可能你要问,既然手机本身的角度可以靠gsensor
而地图上的方向可以靠ecompass,那gyroscope还要干嘛
重点就是在它的准确性的问题,有gyroscope,就会比较准
Gsenor或ecompass无法精确做到动一度是一度的效果,但是gyroscope可以
所以对游戏来说,如果有gyroscope,效果就会比较好
如果有玩过Wii,最早的WiiMote就是只有gsensor
後来的WiiMote Plus是加上gyroscope,这样应该就可以理解了
如果没玩过Wii就当我没讲这段吧
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.113.23.102
1F:推 narwhalgary:首先谢谢大大回文 但是我的orientation sensor的确可 07/01 22:17
2F:→ narwhalgary:以达到一度一度的测量啊 至於是怎麽样订出原点 我想应 07/01 22:17
3F:→ narwhalgary:该是拿磁场感应器算出南方 重力感应器测出水平 那麽方 07/01 22:18
4F:→ narwhalgary:位感应器就可以测出角度的变化 如果有了角度的变化 那 07/01 22:18
5F:→ narwhalgary:麽有时间的变化 综合起来也可以算角速度 至於陀螺仪应 07/01 22:19
6F:→ narwhalgary:该也可以办到 不过我推论应该是由三轴加速度感应器去 07/01 22:19
7F:→ narwhalgary:模拟出角度变化的方法 用三种不同的sensor以产生了 07/01 22:20
8F:→ narwhalgary:所谓的方位感应器 实际上并没有这个东西这样 推论而已 07/01 22:20
大致上你的想法是对的
至於我说无法做到动一度是一度的原因还是要回到原理上
1. 加速度感应器对加速度产生反应
也就是说,并不是只有地心引力才会让它产生反应
移动装置时的加速度也会影响它的数值
以致於无法随时都很精确地计算出和地面的夹角
2. 地磁感应(e-compass)
我们生活中的空间到处都有电/磁干扰
所以磁力线并不总是均匀地从地磁北指向地磁南
你每移动一个地点,环境磁场都会变化
此时以现代的e-compass来说多半会叫你将device依「无限大」的形状去画圈
让driver收集资料以得到目前位置的磁场校正值
而如果有比较强的金属物或磁性物品影响到磁力线
甚至有可能无法校正成功
如果你晓得原本的gyroscope是什麽的话就会更清楚了
原本传统的gyroscope(非MEMS的gyro)就是用来导航的
当你取得一个固定参考点之後
不管你怎麽动gyroscope都能不受地磁影响指向正确的方向
总之,如果你想要在方向定位上有更顺畅的表现,就必须有gyro
※ 编辑: priv 来自: 140.113.23.102 (07/04 10:51)
9F:推 narwhalgary:感谢大大精确的分享┌(_ _)┐ 07/04 11:09
※ 编辑: priv 来自: 140.113.23.102 (07/04 11:24)