Мы используем устройство слежения GPS, установленное на транспортных средствах, а затем отображаем движения в нашем приложении. Однако у нас небольшая проблема с автомобилями, когда они НЕ движутся.
Несмотря на то, что устройство GPS стоит на месте, он отправляет информацию с различными позициями, иногда даже сообщает о движении автомобиля (время от времени сообщая, что автомобиль движется довольно быстро). Конечным результатом является уродливое представление движения в нашем приложении и, что еще хуже, неправильные расчеты относительно того, как долго транспортное средство двигалось и стояло на месте (у нас также есть некоторый статистический анализ).
Я знаю, что проблема не нова: Google Navigation на моем телефоне Android также имеет проблемы, когда я время от времени останавливаюсь на перекрестке, обнаруживая, что я сейчас еду в противоположном направлении (хотя на самом деле я стою на месте ).
Но нам действительно нужно иметь какой-то способ сказать, что транспортное средство не движется, особенно в течение длительных периодов времени.
Проблема усугубляется в некоторых транспортных средствах, которые держатся под крышами на ночь, что приводит к тому, что GPS отключается из-за более слабого сигнала (который все еще достаточно силен, чтобы получить позицию).
Мы можем определить, включен или выключен двигатель транспортного средства, но мы не можем предположить, что он не двигается с выключенным двигателем (были случаи, когда поврежденное транспортное средство было отбуксировано ... и, конечно, есть случай потенциальной кражи, который также должен сообщать).
Как лучше всего подойти к этой проблеме?
РЕДАКТИРОВАТЬ:
Чтобы добавить больше информации:
Устройство GPS имеет акселерометр, но он возвращает только двоичную информацию (движется / не движется), и он либо слишком чувствителен, либо просто не работает.
У нас есть доступ к таким вещам, как количество спутников или качество, но мы не уверены, как использовать эту информацию. Таким образом, мой вопрос. :)
Проблема не в том, чтобы определить, движется автомобиль или нет в режиме реального времени. Мы собираем данные, а затем проводим статистический анализ и отображаем их. Мы показываем текущее положение транспортного средства, но это не имеет большого значения. Таким образом, в основном мы должны быть в состоянии сказать, что транспортное средство двигалось или не двигалось, просматривая исторические данные.
источник
Ответы:
Комментарии ниже вашего вопроса поднимают некоторые хорошие моменты, особенно в отношении интерпретации качества спутниковых данных (количество спутников, уровень сигнала), и вы можете использовать эту информацию либо на мобильном устройстве, либо на сервере, чтобы отфильтровать «плохие» значения GPS. Вопрос сводится к двум частям: 1) как вы определяете ложные показания GPS, и 2) как вы определяете стационарное состояние.
Давайте начнем с пары параметров:
Это сложно рассчитать эти скорости с точностью. Предположим, что вы вычисляете скорость как / между предыдущим показанием (в момент времени t0) и текущим показанием (в момент времени t1). Если разница во времени велика, а единица обходит кривую, то фактическое пройденное расстояние будет больше, чем рассчитанное расстояние. Кроме того, если вы получаете два ложных показания подряд, и они достаточно близки друг к другу, вы можете получить непредсказуемые результаты.
Если у вас есть скорость, просто сравните ее с вашими параметрами, чтобы увидеть, является ли показание GPS ложным или устройство неподвижно.
Вы можете сделать более сложную фильтрацию с фильтрами Калмана , но это может быть намного сложнее.
источник
Нам удалось настроить данные датчика движения.
Используя данные датчика движения, данные зажигания и скорость, сообщаемые GPS-трекером, мы должны быть в состоянии определить, движется автомобиль или нет, с довольно хорошей точностью.
Также мы взглянули на количество спутников, и это не очень хорошо. В то время как количество спутников было меньше для автомобиля под крышей, оно все еще было относительно высоким. 9-10 - обычное значение для такого транспортного средства, в то время как под крышей оно падает до 7 (но иногда может получить сигнал и подняться). Излишне говорить, что количество спутников оказалось менее чем полезным.
источник
Вы можете использовать количество сат, использованных для получения последнего исправления, а не те, которые были в поле зрения. Например. View = 11, Fix = 5 И использовать значения Max DB для сигнала самого сильного сат. Это должно быть более 30 дБ, чтобы получить достойный сигнал.
Устройства, которые мы используем, имеют концепцию движения / неподвижности, датчики: ускорение, вибрация, входное напряжение, входной сигнал (от ключевого контакта), данные GPS. Чтобы сообщить о таких позициях, как запуск / остановка (это основано на событии) и событиях направления / расстояния, устройство должно находиться в режиме движения (это счетчик обратного отсчета, настраивается).
Датчики имеют возможность комбинироваться. Ни о событиях направления / расстояния, ни о таймерах не сообщается, пока трассировщик определяет, что он не находится в режиме движения. Когда задействованные датчики перестают сообщать, таймер начинает обратный отсчет до нуля, и затем генерируется событие остановки + устройство переводится в неподвижный режим. До следующего раза. Таким образом, вы можете разделить начальные значения ускорения двигателя, чтобы «перевести» его в режим движения, и отдельный нижний порог для «удержания» его в режиме движения, так как оба являются очень разными схемами ускорения.
Единицы, которые мы используем, сообщат, если точка была взята с плохими данными, не уверенными, делает ли это ваше оборудование. У нас есть SV_Position, SV_KeepAlive или SV_TimeAlive. Keepalive будет повторять точное последнее значение, поскольку GPS не может ни обновлять свои таблицы, ни получать точные данные, даже плохие. TimeAlive - это то, что вы увидите, когда переходите туннель или кто-то припарковался в гараже.
Один из способов также контролировать, хотя это частично обоснованные предположения, и это зависит от того, какие активы вы отслеживаете, это источник напряжения. например. устройство, работающее в 12.30, - это машина, двигатель которой не работает. Если вы видите тот, который сообщает 14.2v, вы знаете, что генератор вращается. Для транспортных средств 24 В есть аналогичная схема на месте.
Надеюсь, что это дает вам некоторые идеи. Все зависит от того, насколько хорошо оборудование. Источник ваших данных начинается там, а все остальное после этого только так хорошо, как есть. Но я настоятельно рекомендую вам использовать возможности юнитов для различения качества, а не для всего сервера (задним числом). После того, как вы наберете 3000 единиц, вам понадобится мощный сервер для постоянного анализа всех данных отслеживания, и к тому времени вы поймете, что он не будет масштабироваться.
источник
У меня была похожая проблема при использовании GPS-регистратора для отслеживания скутера. Я наложил трек GPS на слой дороги и вручную удалил ошибочные местоположения на перекрестке или на светофоре или рядом с ним. Я уверен, что есть автоматизированные инструменты, чтобы справиться с этим, возможно, буферизировать вокруг пересечений и вычислять минимальное и максимальное время входа и выхода из этого буфера.
источник
Термин искусства для этого является паутинга . Обычный подход состоит в том, чтобы просто выполнять выборку только тогда, когда исправление находится в 10 метрах от предыдущего исправления. Например, портативные устройства Garmin фиксируют исправления в зависимости от расстояния, в то время как фитнес наблюдает исправления в зависимости от времени . Карманные компьютеры не очень паук, но часы делают.
источник