【问题标题】:Accelerometer accuracy in androidandroid中的加速度计精度
【发布时间】:2014-03-23 18:19:52
【问题描述】:

我希望制作一个 android 应用程序作为大学项目的一部分,该项目使用 android 手机中的传感器来获取距离。

在查看了性质相似的其他问题 1.2. 以及一些代码之后,这个想法看起来真的毫无意义,因为加速度计数据真的很嘈杂。

问题

我正在寻找一个可行的演示。让该应用程序在地铁系统中运行是否可行?这样我就有了初始速度,也只需要处理线性运动。还是噪音仍然会使加速度计数据无用?

任何提示或建议都将得到极大的采纳。

【问题讨论】:

  • 假设您在外面,判断距离的最佳方式是 GPS 系统,而不是加速度计。真的,噪音很快就会使加速度计失去作用。

标签: android accelerometer


【解决方案1】:

如果您真的必须使用他们的加速度计,您可以通过查看数据中的活动量(峰值)来进行简单的估计。

  • 很少或没有峰 = 没有运动
  • 一些不同的山峰 = 步行速度
  • 许多峰值 = 运行速度

这可以通过简单地保存加速度计数据窗口并计算超过给定阈值的值的数量来完成。 或者更高级,您可以对数据进行快速傅立叶变换以确定数据的频率,低频:低活动,反之亦然。

可以使用机器学习进一步改进这个想法,并可能与陀螺仪或指南针等更多传感器融合。这将有助于更准确地确定活动,但这是一个相当大的话题,需要大量的时间和精力。

Android 可以检测到一些用户活动,但不是那么精细:http://developer.android.com/training/location/activity-recognition.html

该链接可以帮助确定何时打开加速度计是有意义的,因为它能够确定用户何时步行:

public class ActivityRecognitionIntentService extends IntentService {
...
/**
 * Map detected activity types to strings
 *@param activityType The detected activity type
 *@return A user-readable name for the type
 */
private String getNameFromType(int activityType) {
    switch(activityType) {
        case DetectedActivity.IN_VEHICLE:
            return "in_vehicle";
        case DetectedActivity.ON_BICYCLE:
            return "on_bicycle";
        case DetectedActivity.ON_FOOT:
            return "on_foot";
        case DetectedActivity.STILL:
            return "still";
        case DetectedActivity.UNKNOWN:
            return "unknown";
        case DetectedActivity.TILTING:
            return "tilting";
    }
    return "unknown";
}
...
}

【讨论】:

    猜你喜欢
    • 2011-06-04
    • 2011-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多