2014-03-23 3 views
3

Я ищу, чтобы сделать приложение для Android как часть университетского проекта, который использует датчики в телефоне Android, чтобы дистанцироваться.Точность акселерометра в android

После того, как некоторые смотрят на другие вопросы, похожие на природу 1. и 2., а некоторые играют с кодом, идея выглядит действительно бессмысленной, поскольку данные акселерометра действительно шумные.

Вопрос

Как я ищу работоспособную демо-то лет. Будет ли приложение работать в системе метро? Таким образом, у меня была бы начальная скорость, и мне также пришлось бы иметь дело с линейным движением. Или шум все равно сделает данные акселерометра бесполезными?

Любые советы или советы были бы очень полезными.

+0

Предполагая, что вы снаружи, лучшим способом рассказать расстояние будет система GPS, а не акселерометр. Действительно, шум быстро заставил бы акселерометр бесполезным. –

ответ

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"; 
} 
... 
} 
Смежные вопросы