Перейти к содержанию
GPS навигатор СитиГИД

GPS протокол HIPPO


Рекомендуемые сообщения

Может у кого есть опыт работы с этим чёртовым протоколом?

1. Интересует преобразование их радиальный координат в градусы.

2. Описание пакета инфы о спутниках (не сходится с мануалом).

В остальном вроде разобрался.

Ссылка на сообщение
Поделиться на другие сайты
  • Ответов 69
  • Дата создания
  • Последний ответ

Лучшие авторы в теме

Лучшие авторы в теме

Популярные посты

Это в целом вообще не важно. Это просто понимать, что я правильно разбираю данные от GPS. А графическое оформление - это мой Шелл по выбору нави. Мне проще на его базе добавить экран с данными, чтоб

В общем так.. Считаю, что мечта идиота сбылась.     А тут видео, как работает СитиГИД, ПроГород и 7дорог:   Извиняюсь за качество видео, но рулить, смотря на дорогу, и снимать видео - как-

Ну что... тест с подоконника успешен. СитиГИД и 7дорог кушают мой NMEA и показывают где я. Завтра попробую прокатиться... Правда производительность оставляет желать лучшего. Голова редкостная срань

Изображения в теме

Неужели забрезжила возможность поставить Ситигид на корейские балалайки?

Ссылка на сообщение
Поделиться на другие сайты

Ну а что делать.. рас всем всё до балды - приходится ковыряться.

Шелл мой по выбору нави на AVN-100/200 головах людям пришелся по душе.

Сейчас накарябал наброски по транслятору GPS из этого долбаного HIPPO в NMEA, рас уж разработчику навигационного софта совсем влом добавить парсинг 2-3 пакетов от HIPPO.

Время кажет на ура, да и координаты тоже.

Спутники несколько странно кажет, т.к. описалово протокола в этом месте не соответствует данным с чипа.

Ну и вот как эти долбаные радианы перевести в градусы. Я не туп, я знаю как их перевести, но получается бред, а не значения. При всём при том сама Trimble студия эти же мои координаты с HIPPO жуёт на ура и выдаёт нужные координаты в градусах.

 

В общем пока загвоздка в трансляции координат и разобрать пакет спутников. А дальше уже сам конвертер буду отлаживать.

Судя по описалову протокола широта и долгота в радианах по форумуле x*2-31 радиальных сек..

И если взять из лога GPS например значение 629867265 * 2-31 = 0,2933048014529049396514892578125 сек, что в радианах будет ~0,00000142 и в градусах 0,0000814.

Что как-то нифига не похоже на ~ 52° 47.69201

 

Вот и не понимаю, что за хрень.. Фик с ними со спутниками. Можно пока забить. Но без координат и прочих мелочей типа направления движения не получится затею реализовать.

Ссылка на сообщение
Поделиться на другие сайты

Ну а что делать.. рас всем всё до балды - приходится ковыряться.

Шелл мой по выбору нави на AVN-100/200 головах людям пришелся по душе.

Сейчас накарябал наброски по транслятору GPS из этого долбаного HIPPO в NMEA, рас уж разработчику навигационного софта совсем влом добавить парсинг 2-3 пакетов от HIPPO.

Время кажет на ура, да и координаты тоже.

Спутники несколько странно кажет, т.к. описалово протокола в этом месте не соответствует данным с чипа.

Ну и вот как эти долбаные радианы перевести в градусы. Я не туп, я знаю как их перевести, но получается бред, а не значения. При всём при том сама Trimble студия эти же мои координаты с HIPPO жуёт на ура и выдаёт нужные координаты в градусах.

 

В общем пока загвоздка в трансляции координат и разобрать пакет спутников. А дальше уже сам конвертер буду отлаживать.

Судя по описалову протокола широта и долгота в радианах по форумуле x*2-31 радиальных сек..

И если взять из лога GPS например значение 629867265 * 2-31 = 0,2933048014529049396514892578125 сек, что в радианах будет ~0,00000142 и в градусах 0,0000814.

Что как-то нифига не похоже на ~ 52° 47.69201

 

Вот и не понимаю, что за хрень.. Фик с ними со спутниками. Можно пока забить. Но без координат и прочих мелочей типа направления движения не получится затею реализовать.

Показания*2^(-31)*180=величина в градусах.

 

Из протокола диапазон изменения широты [-1/2 1/2] sc, долготы - [-1 1] sc. Что значит, что 1 sc - это не секунда, а 180 град. или пи радиан

Ссылка на сообщение
Поделиться на другие сайты

Показания*2^(-31)*180=величина в градусах.

 

Из протокола диапазон изменения широты [-1/2 1/2] sc, долготы - [-1 1] sc. Что значит, что 1 sc - это не секунда, а 180 град. или пи радиан

оу! большое спасибо за формулу! меня вот и смущали эти "sc"

Сейчас поглядим что выходит..

Ссылка на сообщение
Поделиться на другие сайты


Показания*2^(-31)*180=величина в градусах.
Ну да. И в вышеозначенном примере даёт 52.794864
Ссылка на сообщение
Поделиться на другие сайты

Вроде теперь всё получилось с определением координат, кроме спутников.

 

Осталось пакет со спутниками разобрать:

81 33 01 02 1D F5 EA 33 29 0C 63 82
81 33 01 03 0A 00 00 00 A6 00 16 82

 

Первый виден, второй нет.

81- начало

33-01 - признак

82 - конец

02 в первом пакете и 03 во втором - это номер канала

1D и 0A - номера спутников

А вот дальше "труляля". С описаловом даже это не сходится.

Ссылка на сообщение
Поделиться на другие сайты


Вроде теперь всё получилось с определением координат

 А чего скорость-то в см/с ?

Ссылка на сообщение
Поделиться на другие сайты

 А чего скорость-то в см/с ?

Ну изначально по протоколу HIPPO она в см/с. Рядом в км/час пересчитываю.

Ссылка на сообщение
Поделиться на другие сайты


Ну изначально по протоколу HIPPO она в см/с.

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

Ссылка на сообщение
Поделиться на другие сайты


81 33 01 02 1D F5 EA 33 29 0C 63 82

F5 - видимый, наблюдаемый (tracked в смысле), SNR в норме

EA - SNR 46.8 dB-Hz

33 - азимут 102 градуса

29 - возвышение -41 градус

0C - статус альманаха -- нет, статус эфемерид -- проверен

 

Не так?

Ссылка на сообщение
Поделиться на другие сайты

Не так?

Так то оно так.. Что есть 0x63 или 0x16 ? в описалове 7 байт расписано.. или просто игнорить?

Ссылка на сообщение
Поделиться на другие сайты


Что есть 0x63 или 0x16 ?
Чего-нибудь для практического юзания не хватает? ;) Тогда забиваем.
Ссылка на сообщение
Поделиться на другие сайты

Чего-нибудь для практического юзания не хватает? ;) Тогда забиваем.

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

Если прокатит - будет и ситигид у меня (нас) в голове. Надеюсь всё получится..

Ещё раз спасибо!

Ссылка на сообщение
Поделиться на другие сайты

Так то оно так.. Что есть 0x63 или 0x16 ? в описалове 7 байт расписано.. или просто игнорить?

А это не контрольная сумма? Наверняка это где-то в общей части описано

Ссылка на сообщение
Поделиться на другие сайты

Кстати да, crc. Она же в общей части описана!

Отправлено с моего ZTE-BLADE через Tapatalk

Ссылка на сообщение
Поделиться на другие сайты

Две кошачьих морды, полудохлая белка и "клетчатый" ;) 

Три. Одна укурена :D

Про CRC тоже подумал, т.к. в NMEA он тоже повсюду, что правильно.

Ссылка на сообщение
Поделиться на другие сайты

Вот как всё красиво стало..

 

 

Парсер работает.

Терь можно браться за вставку его в транслятор.

Ссылка на сообщение
Поделиться на другие сайты

Холи шит!

Я записываюсь на перепрошивку головы!

Ну пока рано :D

Этож пока всего лишь разбор HIPPO.

Надо терь формировать NMEA хотя бы в лог. А потом уже пытаться обмануть нави.

Но все равно.. результат, как говорится, на лицо.

Ссылка на сообщение
Поделиться на другие сайты

Всё же хочу CRC8 проверять, т.к. иногда мусор проскакивает.

Но по мануалу оно считается от старта 81 до конца 82.

Не пойму как так, если чексум предпоследний байт.

Пробовал считать по всякому - не получается нужная CRC8.

Функция для подсчета позаимствована:

// Compute a Dallas Semiconductor 8 bit CRC directly.
uint8_t crc8(const uint8_t *addr, uint8_t len) {
  uint8_t crc = 0;
  while (len--) {
    uint8_t inbyte = *addr++;
    for (uint8_t i = 8; i; i--) {
      uint8_t mix = (crc ^ inbyte) & 0x01;
      crc >>= 1;
      if (mix) crc ^= 0x8C;
      inbyte >>= 1;
    }
  }
  return crc;
}
Ссылка на сообщение
Поделиться на другие сайты

Разобрался.. там CRC у них своя. Проще говоря сумма всех байт с 81 по 82 должна быть ровна 0.

т.е. CRC = 0 - (сумма всего, кроме crc)

Ссылка на сообщение
Поделиться на другие сайты

Дополнение до 100. Так биосы защищали с самых первых писюков.

Отправлено с моего ZTE-BLADE через Tapatalk

Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


×
×
  • Создать...