Сверните свой собственный анализатор NMEA или используйте GPS-анализатор с открытым исходным кодом? - PullRequest
12 голосов
/ 25 февраля 2009

Я много работаю с данными о местоположении, часто используя GPS. У меня есть свой собственный маленький простой анализатор NMEA, который не делает ничего особенного - просто преобразует конкретные предложения GPS в полезные числа, флаги и т. Д.

Однако в таких проектах, как GPSD и Gypsy, ведется активная разработка. Если бы GPS был простым делом, проекты давно бы завершились и просто перешли бы в режим обслуживания.

  • Что они знают / делают, о чем я не знаю, и поэтому мой код не учитывается?

Ответы [ 3 ]

9 голосов
/ 25 февраля 2009

Из превосходной статьи от GPSD:

  • Стандарт NMEA не обеспечивает полный кортеж TPV (время, положение, скорость) с ошибкой, геоидными и магнитными колебаниями и т. Д.
  • Так как разные значения находятся в разных предложениях, и нет определенного порядка, вы не можете легко определить, какая скорость соответствует отчету о местоположении.
  • Некоторые значения приведены не полностью (т. Е. Год - две цифры в наиболее распространенных и доступных предложениях)
  • Нет стандартизированного способа определения поставщика, модели, прошивки
  • Нет стандартизированного способа изменения настроек (скорость связи, количество предложений, количество выборок в секунду и т. Д.)
  • Несовместимые двоичные протоколы для расширенного использования и ускорения создания отчетов
  • Из-за интересных условий гонки для USB на последовательные мосты и Bluetooth на последовательные мосты изменение скорости является очень сложной проблемой

-Adam

3 голосов
/ 18 марта 2012

Я работал с NMEA, мой опыт:

Формат NMEA разработан плохо. Профессиональные приложения, которые имеют прямой доступ к GPS-приемнику, должны избегать NMEA. Они должны учитывать конкретный двоичный формат устройства GPS.

В дополнение к темам, упомянутым Адамом Дэвисом выше:

  • Не определено, как обращаться с недействительными атрибутами: например, Если транспортное средство стоит на месте, особенно если оно не двигалось с момента запуска приемника GPS, атрибут курса / курса является недействительным; Большинство получателей выведет пустой атрибут ",,". Но это не определено.
  • Поле времени: некоторые поставщики используют дробную часть после второй. Точно не указано (?), Разрешено это или нет; некоторые устройства делают это, другие нет. (Далее: предложение GGA определяет две цифры после второй, в предложении RMC используются целые секунды)
  • Порядок предложений RMC, GSV и т. Д. Отличается от одного получателя к другому. Это приводит к проблеме, чтобы знать, когда определение местоположения завершено. Либо вы проверяете, что пришла новая отметка времени, затем вы знаете, что позиция завершена, но тогда вы потеряете одну секунду, с точки зрения поведения в реальном времени. Или вы знаете своего получателя и знаете, какое последнее предложение исправления. Или вы делаете некоторый «искусственный интеллект» для анализа порядка в первые десять секунд, а затем вы знаете, какой из них является последним.

Вы можете посмотреть в спецификации протокола SIRF и UBLOX и посмотреть, какие у них огромные главы, чтобы описать, как они интерпретируют протокол NMEA.

Если кто-то знает действительно хороший анализатор / писатель NMEA, написанный на java или Objective-C, с открытым исходным кодом, а не под лицензией GPL, пожалуйста, дайте мне знать.

0 голосов
/ 25 февраля 2013

С таким большим количеством хороших альтернатив, вы можете не беспокоиться об этом.

Вот библиотека, оптимизированная для анализатора NMEA, оптимизированная для микроконтроллеров (AVR): https://code.google.com/p/avr-nmea-gps-library/

Код прост, поэтому вы можете учиться и адаптироваться, если это вызывает беспокойство.

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