【问题标题】:Android Sensors安卓传感器
【发布时间】:2010-12-05 18:57:34
【问题描述】:

我有一个关于传感器的非常基本的问题:

磁传感器是否会根据手机的初始方向或世界坐标返回读数?

加速度计呢?它们是根据之前的读数返回值,还是每个值都是相对于世界坐标系的独立加速度?

我知道陀螺仪会返回相对于手机初始方向的读数。那么,如何将陀螺仪的偏航、俯仰和滚动读数转换为智能手机磁传感器的方位角、俯仰和滚动读数(我正在使用 HTC hero)

谢谢!

【问题讨论】:

  • 当您说初始手机方向时,会是哪个?手机开机时的方向?他什么时候第一次启动?每次开机?什么时候开始使用传感器?如果是后者,那么您可以轻松检查它,只需制作一个显示俯仰和滚动的测试仪并使用您的设备进行测试:将 i 放在桌子上,启动它,查看应用程序是否显示 0,0 然后移动所以它不会是 0,0,再次重置 anc 检查...
  • 我的意思是应用程序启动时。每次我开始用我的方向传感器感应时,它都会返回相同的值,所以我猜它的绝对读数
  • 但是对于我的加速度计,即使我保持不动或稍微倾斜它,其值也大约为 4m/s^2、7m/s^2 等。我知道重力也是该向量的一部分,当我倾斜手机时尤其令人困惑,因此重力沿不同轴“分量化”,但我不知道这些值是相对于先前的读数还是彼此独立
  • 我想我可以使用初始位置将陀螺仪读数转换为罗盘读数。即罗盘(t)=陀螺(t)+罗盘(0),以这种方式从相对坐标转换到世界坐标是否有意义?谢谢
  • 我不确定,我从来没有使用过陀螺仪,只是运动传感器可以让我在功能手机上精确移动手机(加速度计可以让你在某个向量中加速)。听起来你有更多的数学问题更多的程序问题:-)

标签: android sensors wiimote


【解决方案1】:

如前所述,陀螺仪测量角速度。 返回的第三个值 (values[2]) 是关于 z 轴。您可以将此值与磁力计的初始值一起使用 计算当前航向:Theta(i+1) = Theta(i) + Wgyro*deltaT

您可以从“方向”测量中接收初始航向方向(值 [0]) 此测量仅取决于磁力计。 (您可以将磁铁或第二部手机靠近智能手机,然后观看输出变得疯狂)

“方向”的第二个和第三个值取决于 加速度计。由于加速度计测量重力,因此可以计算 轴 Y 和 X 中加速度计读数的俯仰角和滚动角。

希望对你有帮助

爱丽儿

【讨论】:

    【解决方案2】:

    Android 传感器(直至 FroYo)为应用程序提供“原始”数据。
    涉及最少的“烹饪”(即加工)。

    加速度和罗盘设备分别提供绝对加速度和磁数据。
    陀螺仪提供相对角速度。

    陀螺仪不提供任何特定状态/位置的相关数据。
    您需要了解的是陀螺仪数据是角速度。
    角速度很简单,就是手机旋转的速度(以度/秒为单位)。
    因此,一旦您保持不动,陀螺仪就会说 (0,0,0) &
    旋转时,您会知道它的旋转速度。
    这种情况一直持续到你再次坚持下去
    当陀螺仪读数再次变为(0,0,0)时。

    理论上,陀螺仪可用于“校准”指南针。
    但要做到这一点,您需要进行大量实验。
    摆弄的理想场所是传感器-HAL。

    注意:您需要打开所有传感器硬件,即使
    仅需要指南针数据。因为您将交叉引用
    陀螺仪/加速度数据。这将意味着更大的功耗&
    电池寿命极差。所有传感器连续开启
    在 4-5 小时内耗尽标准 Android 手机的电池。

    您可以阅读更多Android Sensors here

    【讨论】:

    • 你能帮我解决这个question吗?
    猜你喜欢
    • 1970-01-01
    • 2022-10-09
    • 2017-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-17
    • 1970-01-01
    相关资源
    最近更新 更多