Что полезно знать при работе с Neo-6M (GPS)

Неудачное использование смартфона в качестве GPS трекера в ракете подвигло к поискам иных поставщиков геоданных…На али… много чего есть, в свое время там был куплен GPS модуль, построенный на базе Neo-6M. Очень «хорошая штучка», легкая в использовании и довольно небольшая. Удобно было поместить модуль под обтекатель. К нему — Arduino, аккумулятор и «флешка» 24С64. Все это, вместе с датчиком давления, позволяет получать и регистрировать много любопытных данных о полете.

Про настройку модуля для его использования в полетном контроллере квадрокоптера много написано в интернете. Из полезного: почти везде упоминается отключение режима (технологии) SBAS. Якобы это плохо влияет на определение местоположения быстродвигающегося объекта.

SBAS (Satellite Based Augmentation System) is an augmentation technology for GPS, which calculates GPS integrity and correction data with RIMS (Ranging and Integrity Monitoring Stations) on the ground and uses geostationary satellites (GEOs) to broadcast GPS integrity and correction data to GPS users.

Остальные настройки модуля понятны из внимательного рассмотрения программы u-center от производителя чипа.


В пятом старте РП-17 полетел модуль с типовыми настройками. По сути, были отключены ненужные строки $GP…, оставлена только $GPGGA (довольно длинная, но там есть все необходимое нам: время, координаты, скорость, высота). Изменен период выводимых данных — уменьшен до полусекунды. Отключен SBAS.

В результате получил невразумительный график. Тут синим показано изменение высоты ракеты по данным датчика давления. Желтым — абсолютная высота относительно уровня моря по данным GPS. Даже так видно, что высота по данным GPS ведет себя «как то странно». (Для удобства — голубая кривая — это тажа желтая приведенная к нулю и умноженная на 4).

Видно, что в обычном режиме в Neo-6M встроен довольно «мощный» фильтр, который, к сожалению, «уничтожает» почти все что нам нужно знать о высоте объекта. Для очень медленных перемещений (например пешком поднимаемся в гору) такое решение вполне оправдано, но для ракеты….


Смотрим режимы работы модуля и видим, что «швейцарцы» из u-blox «догадывались», что их изделие будет не только «путешествовать в кармане пешехода»…

u-blox positioning technology supports different dynamic platform models to adjust the navigation engine to
the expected application environment.

«По умолчанию» модуль работает в режиме «Portable»:

Applications with low acceleration, e.g. portable devices. Suitable for most situations. MAX Altitude [m]: 12000, MAX Velocity [m/s]: 310, MAX Vertical Velocity [m/s]: 50, Sanity check type: Altitude and Velocity, Max Position Deviation: Medium

Изменим динамическую модель на «более скоростную» (выберем «край»): «Airborne <4g»:

Only recommended for extremely dynamic environments. No 2D position fixes supported. MAX Altitude [m]: 50000, MAX Velocity [m/s]: 500, MAX Vertical Velocity [m/s]: 100,
Sanity check type: Altitude, Max Position Deviation: Large

Такая модель полетела в шестом и седьмом старте РП-17. К сожалению, в шестом пуске я рано нажал «старт» и ракета ушла в небо еще до начала регистрации данных. Зафиксировался лишь «хвостик» полета.Синим — данные барометра; зеленым — приведенные к нулю данные GPS. Вроде бы — очень хорошо (постоянная разница — не в счет!)

Нормальная проверка прошла в седьмом старте РП-17Здесь синий и зеленый — абсолютная высота (BMP280 и GPS); красный и коричневый — тоже, но опущенное к нулю; желтый — скорость; голубой и черный — изменение координат. Отсчеты по времени — полусекундные.

Вот тут-то и видно, что даже «экстремальная» динамическая модель не дает нам правильной картины высоты. «Хвостик» очень хорошо коррелируется с данными шестого старта. А вот область больших ускорений и скоростей — «совсем никудышная», хоть и намного лучше, чем «portable».

Вывод: жаль, но GPS модуль не дает нам хорошей картины по высоте полета…

PS: описание протоколов GPS приемника U-blox-6-Receiver-Description-Including-Protocol-Specification