我有一个关于传感器的非常基本的问题:
磁传感器是否返回手机初始方向或世界坐标的读数?
加速度计呢?他们是否返回以前读数的值,或者每个值是相对于世界坐标系的独立加速度?
我知道陀螺仪返回相对于手机初始方向的读数。那么,如何将陀螺仪的偏航、俯仰和滚动读数转换为智能手机磁传感器的方位角、俯仰和滚动读数(我正在使用 HTC hero)
谢谢!
As mentioned, the gyroscope measures the angular velocity. The third value returned (values[2]) is the angular velocity regarding the z axis. You can use this value together with the initial value from the magnetometer to calculate current heading: Theta(i+1) = Theta(i) + Wgyro*deltaT
You can receive initial heading orientation from 'Orientation' measurement (values[0]) This measurement is dependent only on the magnetometer. (you can put a magnet or a second phone close to the Smartphone and watch the output going crazy)
The second and third values of the 'Orientation' are dependent on the readings of the Accelerometer. Since the Accelerometer measures gravity, it is possible to calculate the pitch and roll angles from the Accelerometer readings in Axis Y and X.
Hope this helps
Ariel
Android 传感器(直到 FroYo)为应用程序提供“原始”数据。
涉及最少的“烹饪”(即加工)。
加速度和罗盘设备分别提供绝对加速度和磁数据。
陀螺仪提供相对角速度。
陀螺仪不提供任何特定状态/位置的相关数据。
您需要了解的是陀螺仪数据是角速度。
角速度很简单,就是手机旋转的速度(以度/秒为单位)。
因此,一旦你保持不动,陀螺仪就会说 (0,0,0)
并且当你旋转时,你就会知道它的旋转速度。
这一直持续到当陀螺仪读数再次变为(0,0,0)时
你再次保持不动。
理论上,陀螺仪可用于“校准”指南针。
但要做到这一点,您需要进行大量的实验。
摆弄的理想场所是传感器-HAL。
注意:即使只需要指南针数据,您也需要打开所有传感器硬件。因为您将为此交叉引用
陀螺仪/加速度数据。这将意味着更大的功耗和
极差的电池寿命。连续开启的所有传感器可以
在 4-5 小时内耗尽标准 Android 手机的电池。
您可以在此处阅读更多Android 传感器。