首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在android中校准方向传感器?

如何在android中校准方向传感器?
EN

Stack Overflow用户
提问于 2010-07-04 17:48:49
回答 2查看 17K关注 0票数 17

我正在用Google Android 2.1编写一个应用程序,它需要知道设备(HTC Hero)面向哪个方向(n/w/s/e)。传感器和它的监听器工作得很好,但是我从传感器得到的值完全是烂透了。例如,它告诉我,当设备面向西南方向时,我将面向北……

这似乎是android设备的一个已知问题。我在网上找到的“解决方案”是这样的:

  • 围绕
  • 移动设备,就像在devices back

上敲击eight

  • 一样

这被认为触发了传感器的重新校准。还有:“四处走动”对我来说很管用……但我想那不是很专业。

那么-如何从SDK触发方向传感器的重新校准?我需要传感器得到适当的校准,没有任何花哨的东西,这将使这个应用程序的用户看起来像完全的笨蛋,而他们“手动”重新校准他们的手机…

有没有办法做到这一点“正确”?

编辑:

或者:有没有办法通过编程来确定设备是否被正确校准?作为一种后备选项,可以这么说...然后我可以警告用户该设备需要“手动”重新校准。

EN

回答 2

Stack Overflow用户

发布于 2010-07-05 03:39:28

我不相信有一种方法可以通过编程知道你的罗盘传感器是否被正确校准,除非你使用像GPS这样的辅助数据源。如果您可以使用GPS,那么当用户移动时,您可以将GPS移动与指南针的方向进行比较并进行校正。请记住,局部磁场会使指南针的读数变得混乱,而且这些设备根本不知道你是在森林中央还是在变压器旁边。

对于这些微型设备,你总是需要处理一些偏差。如果你也检查加速度计的值,你会发现它们在静止状态下并不总是返回9.8m/s^2(或者至少在设备之间是一致的)。

在你的帮助下,你可能只需要告诉用户将他们的手机旋转/扭曲成数字8来重置指南针。

票数 3
EN

Stack Overflow用户

发布于 2010-07-24 16:29:03

我猜你指的是英雄内部的磁强计。

校准它是一个困难的问题,并且将/应该总是需要用户交互才能实现可校准。有不同的策略来处理这个问题。你可以要求用户将设备向北拿着,然后重新校准。如果用户不知道北方在哪里,你可以让他们将设备朝向太阳,根据位置和时间,你可以计算出它在哪里。

抛开校准不谈,我猜你的问题是你从传感器得到的读数是不准确的。当然,校准是准确读数的先决条件,但还有其他因素在起作用。

通常的做法是使用不同传感器的数据来补充来自一个传感器的传感器数据,以提高准确性。当用户移动时,您可以使用GPS来确定方向。然而,如果他行动缓慢,这也是不准确的。您可以集成加速度计报告的数据来猜测方向的变化(而不是绝对方向)。但老实说,在这种情况下,陀螺仪会更理想。

这样工作的系统有时被称为Inertial Navigation Systems (INS),因为它们可以在给定空间中的一个固定点的情况下,在没有更多外部数据的情况下准确地确定它们随后的相对位置和方向。使用卡尔曼滤波器是一种常见的做法,当绝对位置(例如,通过GPS检索)可用时,经常重新校准系统。

虽然实现一个完全成熟的INS是不现实的,但你肯定可以从它们的工作原理中得出一些想法,使你的方位读数更准确。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3174309

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档