В этой статье мы разберём методы расчета скорости и направления движения в транспортной телематике, а также сравним их точность на реальных данных. Можно было бы назвать эту публикацию аналогичным образом: “Скорость автомобиля: почему значение в навигаторе и стрелка спидометра расходятся?”.
Нельзя обойти тему скорости в рамках цикла наших статей, так как ранее мы выяснили, что одометр транспортного средства считает пробег именно на основе скорости движения. Направление или курс движения - менее важный параметр, который зачастую используется только для визуализации маркера объекта на картографической подложке.
Скорость
Для водителя значение скорости доступно благодаря спидометру на приборной панели. Спидометр в любой машине (независимо от ее марки, модели, цены), не просто может, а должен «врать», причем, обязательно в сторону завышения скорости. В противном случае он будет считаться неисправным. Эти требования определены документами регламентирующими производство автомобилей (вернее, спидометров к ним). Да и сами автопроизводители всегда перестраховываются, исходя из стандартных инженерных соображений.
Требование к введению в спидометры поправки завышающей скорость, для мировых производителей определяется требованием ЕЭК ООН №39, которое много лет работало в России под видом ГОСТ Р41.39-99, а после 2019 года - это требование определено ГОСТ 12936-2017. Конкретная величина завышения скорости спидометром устанавливается техническими стандартами, но в среднем, производители закладывают величину завышения до 10% от фактической скорости. Причем зависимость не линейная, а с ростом скорости растет и величина завышения.
Спидометр вряд ли можно назвать точным измерительным прибором, но это обязательный инструмент для водителя. В любом случае в задачах транспортного мониторинга и аналитики полагаются на спутниковые данные и программные методы. Получение скорости через CAN также возможно, как и показания одометра, но мы уже знаем, что чтение CAN-шины - дополнительная опция в мониторинге транспорта, поэтому данные по CAN не всегда доступны.
Самым очевидным способом вычисления скорости является расчет на основе изменения координат. Если доступно два последовательных положения и интервал времени между ними, то посчитать расстояние можно, например, с помощью формулы гаверсинуса. А зная пройденное расстояние и время движения, посчитать среднюю, т.е. прямолинейную и равномерную, скорость несложно.
Скорость может быть скорректирована дополнительными датчиками из инерциального блока (IMU). Автомобильные трекеры, оснащенные IMU, дополнительно используют акселерометр для определения ускорения, что позволяет вычислять скорость более точно в моменты быстрого изменения движения, а также снизить “размотку” во время стоянок. Например, профессиональный GPS-логгер для замера разгона автомобилей Dragy использует всевозможные технические средства, чтобы получить максимально точный результат, что также влияет и на его конечную стоимость.
В спутниковой навигации есть понятие псевдоскорости, определяемое как производная псевдодальности по времени, где псевдодальность - расстояние между спутником и приемником, вычисленное по времени распространения сигнала без поправки за расхождение часов спутника и приемника.
Простыми словами псевдоскорость - это скорость изменения расстояния между спутником и приемником, определенная без учета отличия частоты в приемнике от номинальных значений частоты на спутнике. Используется для определения вектора скорости перемещения спутникового приемника.
Псевдоскорость можно определить в реальном времени без необходимости точного определения текущих координат объекта. Используя доплеровский сдвиг, ГНСС-приемник рассчитывает относительную скорость по каждому видимому спутнику. Итоговая скорость — это векторная сумма всех скоростей, рассчитанных относительно спутников.
Доплеровский сдвиг основан на эффекте Доплера: частота сигнала, излучаемого спутником, изменяется в зависимости от относительной скорости между спутником и приемником. Навигационный приёмник измеряет разницу между ожидаемой и принятой частотой спутникового сигнала и вычисляет относительную скорость объекта.
Для высокой точности псевдоскорость должна быть уточнена с использованием данных изменения координат и показаний других сенсоров. В итоге такой комбинированный подход из формулы скорость = путь / время, инерциального блока с датчиков ускорения и доплеровского сдвига обеспечивает высокую точность, вплоть до ±0.1 км/ч.
Большинство современных автомобильных трекеров используют метод определения скорости по GPS-координатам, а также коррекции с помощью инерциального блока. При наличии считывателя CAN-шины можно дополнительно получать скорость с автомобиля, например, для использования этих показаний в зонах плохого или отсутствующего спутникового сигнала. Использование доплеровского сдвига доступно только в высокоточных приемниках и дорогостоящих профессиональных трекерах, например, в Dragy, который был упомянут выше. Ниже представлена таблица различным методов, использующихся для определения скорости движения объекта:
Метод |
Точность |
Особенности |
Спидометр |
+5–10% |
Завышение по ГОСТ |
CAN (датчик скорости) |
±0.5–1% |
Зависит от техсостояния ТС |
ГНСС |
±0.1–1 км/ч |
Зависит от стабильности сигнала |
IMU (акселерометр) |
Высокая (±0.1 км/ч) |
Коррекция резких ускорений |
Псевдоскорость (доплер) |
Высокая (±0.1 км/ч) |
Реальное время, без координат |
В нашем датасете, к сожалению, нет скорости движения по CAN. Но зато мы можем сравнить скорость, рассчитанную GPS-трекером со скоростью, которую вычислим сами по формуле скорость = путь / время для каждой последовательной пары точек. Для начала посмотрим на все показания скорости по GPS у того же объекта, что мы использовали для анализа высот в прошлой статье:
И отдельно посмотрим на скорости больше нуля, т.к. стоянка для автотранспорта вполне типичное состояние. Например, для легкого автомобиля личного пользования состояние стоянки в большинстве случает может превышать 90% всего времени (режим поездок “работа / дом”). У коммерческой техники, в частности грузового автотранспорта, этот показатель обычно колеблется в районе 50%. Если исключить все точки с нулевой скоростью, результат будет следующий:
Очень типичная картина для автомобиля, учитывая скоростные лимиты в ПДД. Но давайте возьмем выборку побольше, скажем 50 случайных ТС из датасета. Это порядка 20 миллионов точек:
Картина практически никак не изменилась. Половину времени автомобили стоят, а оставшуюся половину по большей части движутся со скорость до 60 км/ч. Ну и лимит в 90 км/ч по трассе с прибавкой в 19 км/ч до получения штрафа по камерам на графике также видно ;) Ниже представлена таблица перцентилей по скорости с шагом 0.05 для всего датасета:
Теперь напишем SQL-запрос, который позволяет посчитать скорость на основе расстояния и времени между парами точек в нашей таблице. Для расчета расстояний используем PostGIS функцию ST_Distance, с которой мы познакомились в предыдущей статье. Здесь мы используем два CTE-запроса, чтобы сначала собрать пары из соседних точек, затем посчитать расстояние между ними, а далее в основном запросе по формуле скорость = путь / время посчитаем среднюю скорость в км/ч:
Теперь перенесем запрос в Jupyter и посмотрим на отклонения и корреляцию:
В результате получаем очень высокую корреляцию и минимальное отклонение, что означает, что расчет скорости в этом GPS-трекере очень близок к нашему расчету. В этом трекере используется модуль SimCom SIM868E, который обновляет ГНСС-данные с частотой 1 Гц (раз в секунду), а взаимодействие выполняются через протокол NMEA (National Marine Electronics Association) с текстовыми сообщениями RMC (Recommended Minimum Specific GNSS Data).
Интересно было бы к этому сравнению добавить скорость по CAN, возможно, в одной из статей за рамками данного цикла так и поступим, но даже без этого можно сделать вывод, что показания скорости по ГНСС достаточно точные при условии стабильного спутникового сигнала и хорошей компонентной базы самого приемника.
Курс
Курс указывает направление движения объекта относительно географического севера. Географический азимут (дирекционный угол) — горизонтальный угол, измеряемый на плоскости по ходу часовой стрелки от 0° до 360° между северным направлением осевого меридиана зоны прямоугольных координат (линией сетки топографической карты) и направлением на ориентир.
В навигационном оборудовании курс вычисляется на основе последовательных координат с использованием тригонометрических формул и обновляется только во время движения. Если объект неподвижен, трекер может возвращать курс последнего движения. На низких скоростях (менее 5 км/ч) курс может быть нестабильным из-за незначительных изменений в координатах.
Аналогичным скорости образом попробуем посчитать программно направление движения и сравнить его со значениями, полученными от самого трекера. Используем встроенную в PostGIS функцию ST_Azimuth:
Функция ST_Azimuth рассчитывает азимут между двумя точками на сферической поверхности с использованием сферической тригонометрии. Она основана на формуле азимута для сферических координат. В случае, если координаты точек совпадают, функция возвращает пустое значение (NULL). Теперь перенесем этот SQL-запрос в Jupyter и визуализируем данные:
На графиках видно, что есть 2 типа областей. В одной области данные очень близки и практически отсутствует шум, в другой - максимальный разброс и никакой корреляции. Найдем участок перехода из одного типа области в другую и посмотрим поближе:
Я дополнительно вывел скорость, т.к. все довольно очевидно. В точках, где скорость нулевая, т.е. объект не двигается, программный расчет азимута невозможен, но GPS-азимут присутствует, т.к. навигационный терминал продолжает фиксировать направление. Как ранее указывалось, это либо просто последнее известное направление, либо его скорректированное значение с помощью того же инерциального блока с акселерометром.
Конкретно у этого трекера отсутствует датчик ускорения и курс во время стоянки колеблется во всем интервале от 0 до 360 градусов. Поэтому в случае невозможности корректировки курса на стороне навигационного оборудования, как минимум, стоит отсекать направление движение при условии нулевой или лучше околонулевой (менее 5 км/ч) скорости.
Мы рассмотрели методы расчета скорости и направления движения в спутниковой навигации и транспортной телематике. Показано, что скорость по ГНСС имеет высокую точность при стабильном сигнале. Использование дополнительных датчиков позволяет корректировать показания при резких ускорениях. Доплеровский сдвиг отличный способ расчета скорости, но доступен только в дорогостоящем профессиональном оборудовании. Программный расчет азимута требует учета стоянок, где данные становятся некорректными.
А в следующей статье мы разберем флаг валидности, который определяется внутренними алгоритмами трекера, количество видимых спутников при решении навигационной задачи и значение снижения точности в горизонтальной плоскости (HDOP).
Автор: binakot