отслеживание карты метро - PullRequest
1 голос
/ 01 ноября 2010

скажем, я хочу создать приложение для смартфона, которое сообщит пользователю, когда и где выйти из станции метро.я могу придумать два способа сделать это:

1) с помощью GPS и карты маршрутов метро, ​​отследить местоположение пользователя и уведомить его о достижении пункта назначения 2) попросить его нажать старт, когда он получитв поезде, когда он начинается (что может быть нереально, потому что пользователь может просто забыть это сделать), использовать известное время в пути от начальной станции до конечной станции и просто уведомляет его, когда время истекло.

может кто-нибудь сказать мне, есть ли другие хорошие подходы?спасибо.

Ответы [ 4 ]

2 голосов
/ 01 ноября 2010

Возможно, вам придется пойти с «мертвым расчетом».По сути, мертвый расчет - это метод навигации, который использует подтвержденное начальное местоположение плюс точную скорость и время для расчета нового местоположения.Имейте в виду, что скорость сама по себе является комбинацией курса и скорости и что курс должен быть истинным курсом.В самолете направление компаса должно сочетаться со скоростью и направлением ветра, чтобы получить истинное направление.Я не думаю, что вы должны учитывать дрейф в метро, ​​но вам придется учитывать различную ориентацию устройства, когда пользователь перемещается или использует само устройство.Кроме того, только потому, что заголовок обычно является компасным, не означает, что он должен быть.Вы можете выполнить работу, используя только акселерометры и таймер.

Правильное использование подсчета мертвых предметов также требует частых «перезагрузок» в известные местоположения по мере их достижения, чтобы ошибки не могли появитьсяслишком плохоДля этого приложения, я бы сказал, что обнаружение кривой и остановки может использоваться как сброс.Вы можете получить ложные срабатывания для «сервисных» остановок, которые слишком близки к реальным остановкам, но они могут быть достаточно редкими, чтобы их игнорировать.На самом деле, если это не была остановка на выходе, это может не иметь значения, потому что вы все еще можете быть достаточно точными для предупреждения о следующей остановке, и если это была остановка на выходе, это не будет иметь значения, потому что поездка окончена.

Подводя итог: вы должны быть уверены, что у вас есть хорошая начальная отправная точка;вам нужно компенсировать переориентацию устройства, чтобы получить истинный курс;вам нужно знать среднюю скорость между изменениями курса и временем нахождения на курсе для расчета расстояния на курсе.Вы можете улучшить общую точность путем сброса на известных ориентирах.

Редактировать: я не знаю, приближает ли это вас к ответу, но Крис Страттон поднял интересный вопрос о суммировании векторов акселерометра.Можно ли достаточно точно отслеживать ориентацию устройства, чтобы иметь надежный, независимый от ориентации вектор гравитации?Можете ли вы сохранить это из вашей векторной суммы?Может ли это обеспечить полезное ускорение вдоль полезного независимого от ориентации вектора?Если это так, то отслеживание продолжительности ускорения даст вам среднюю скорость для этой продолжительности и окончательную скорость для конца ускорения.При отсутствии ускорения скорость останется постоянной.Объединение всего этого может накапливать неточность на вершине неточности до точки бесполезности.

2 голосов
/ 01 ноября 2010

Если на линии метро есть услуга сотовой связи (некоторые, которые собирались отключить ее по соображениям безопасности), возможно, вы сможете что-то сделать с сетевым расположением.

Вы можете использовать акселерометр для обнаружения и подсчета остановок станций, но поезда время от времени останавливаются между станциями из-за задержек впереди. Также срок службы батареи будет сокращен. РЕДАКТИРОВАТЬ: понял, что вы не сможете отличить ускорение от замедления, поскольку у вас нет представления об ориентации (если вы не найдете датчик компаса работоспособным в этой среде) - вы могли только видеть, что векторная сумма трех акселерометров была больше силы тяжести в течение секунд.

Вы можете попытаться использовать микрофон для обнаружения звуков двигателей и тормозов поездов (некоторые из них чрезвычайно характерны), но это имеет ту же проблему со сроком службы аккумулятора и незапланированными остановками между станциями. Не говоря о намеченных станциях, обойденных для ремонтных работ.

Возможно, вам следует предоставить пользователю прокручиваемый список станций, отмечающих поездку, и позволить ему отслеживать.

1 голос
/ 01 ноября 2010

Внимательно прочитайте ответ Фальмарри.Он совершенно прав, хотя и не дал вам ответа.Позвольте мне тогда попробовать ...

Если маршруты не имеют много кривых, это будет проще: вам просто нужно жестко указать широту и долготу каждой станции, а затем вычислить положение пользователя.просто (немного математики и все тут).Если маршруты имеют кривые, то у вас есть больше работы, но в основном она такая же.

Возможно, вы захотите использовать способ, чтобы узнать расстояние между текущим местоположением и местоположением станции.Вы можете использовать некоторые из существующих алгоритмов, например формула Haversine .

1 голос
/ 01 ноября 2010

Оба из них звучат как плохие решения.Вы почти наверняка не получите след GPS в метро.А второй способ звучит так, как будто он будет достаточно неточным, чтобы сделать приложение бесполезным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...