RTKlib/постпроцессинг

В конце концов протестировал работу с Leica GEM, Javad BIN и Carlson GSF,
на моих тестовых файлах проблем нет.

А где используется геоидная высота?

Если не лезть в детали, то на всех топографических картах и в OSM tag .

.conf файл нарушает общепринятую терминологию
(без геоида=geodetic, с геоидом=orthometric, с квазигеоидом=normal)
и запутывает дело:


out-height         =geodetic   # (0:ellipsoidal,1:geodetic)
out-geoid          =internal   # (0:internal,1:egm96,2:egm08_2.5,3:egm08_1,4:gsi2000)
file-geoidfile     =

Правильнее было бы написать


out-height         =1   # 0:ellipsoidal(geodetic), 1:orthometric or normal (using geoid or quasigeoid file)
...

Я также сильно сомневаюсь в целесообразости наличия ‘internal’ для mode != SINGLE.

2usm78-gis А где-то собраны всё патчи чтобы получить всех благ с ublox8? А то читаю и вижу, получилось то, удалось это, а как конкретно нету.

  1. Т.е. как начать получать сырые данные с бедоу, галлилео, и т.д.
  2. Упоминались ещё патчи для конвертера в ринекс, чтобы эти сырые данные понимать.

бейдоу работает на прошивке 2.01 без вопросов, вроде как даже и лучше
чем на 3.01 (больше экспериментальных спутников видно), но к интерпретации измеренных данных
есть вопросы. Вы восточнее, будете видеть больше чем я, так что пришите сюда
о результатах.
Для галилео необходимо перешивать на 3.01.
M8T при этом выдает сразу RXM-RAWX, а вот с M8N все несколько сложнее:
RXM-RAWX не работает, а TRK-MEAS(v5) зашифрован и упакован в пакет SEC-0.
В идеальном варианте надо разобраться с алгоритмом шифрования и
написать патч для rtklib. Дело это такое сомнительное, и видимо
кто-нибудь напишет со временем что-то вроде libdvdcss.so с *decipher_sec0(raw_t raw),
я подставляться не буду.
Хороший рабочий вариант на сегодня - заменить в прошивке 3 байта (+контрольную сумму),
что позволяет иметь нешифрованный SEC-0 на выходе.

Я несколько перестарался и отредактировал decode_trkmeas() до нерабочего состояния,
проверяя работу с произвольной CFG-RATE, но могу попытаться сделать минимальный патч.
Вообще мне не нравится модель развития rtklib, когда автор совершенно некооперативен
и просто игнорирует все патчи “со стороны”, сам при этом не имея никакого серьезного
плана развития.
При этом он сменил лицензию с GPLv3 на BSD, и у меня честно говоря нет никакого желания
исправляя ошибки и добавляя профессиональный функционал
помогать торгашам потирающим ладони по дороге в банк (таково же как и мое отношение
к public domain в OSM).
Для того чтобы создать серьезный форк, надо иметь killer app. Таковым я считаю
rtknavi+rtkplot на qt, как напишу, так будет и не стыдно создать репозиторий на github.

Edit
Патч выглядит примерно так:


+/* demux sec-0 -------------------------------*/
+static int demux_sec_0(raw_t *raw)
+{
+ trace(2,"demux_sec_0: ver=%d pkt=%2.2x dttag=%d\n",U1(raw->buff+6),U1(raw->buff+6+7),raw->dttag);
+
+ if (U1(raw->buff+6) != 2 )
+  return 0; /* unknown version */
+
+ if (U1(raw->buff+6+4) != UBXSYNC1 || U1(raw->buff+6+5) != UBXSYNC2)
+ {
+  return 0; /* encrypted packet */
+ }
+
+ if (U1(raw->buff+6+7) == 0x10)
+  return decode_trkmeas2(raw,10);
+ if (U1(raw->buff+6+7) == 0x0f)
+  return decode_trksfrbx2(raw,10);
+
+ return 0; /* ??? */
+}
 /* decode ublox raw message --------------------------------------------------*/
 static int decode_ubx(raw_t *raw)
 {
@@ -907,10 +1335,13 @@
         case ID_RXMRAW  : return decode_rxmraw  (raw);
         case ID_RXMRAWX : return decode_rxmrawx (raw);
         case ID_RXMSFRB : return decode_rxmsfrb (raw);
+        case ID_TRKSFRB : return decode_trksfrb (raw);
         case ID_RXMSFRBX: return decode_rxmsfrbx(raw);
         case ID_NAVSOL  : return decode_navsol  (raw);
         case ID_NAVTIME : return decode_navtime (raw);
-        case ID_TRKMEAS : return decode_trkmeas (raw);
+        case ID_TRKMEAS : return decode_trkmeas2(raw,0);
+        case ID_SEC_0   : return demux_sec_0    (raw);
+        case ID_CFG_RATE: return decode_cfg_rate(raw);
         case ID_TRKD5   : return decode_trkd5   (raw);
         case ID_TRKSFRBX: return decode_trksfrbx(raw);
     }

За два вечера экспериментов с окна я видел только QZSS спутник. На выходных попробую выйти на улицу. Правда я у себя что-то сломал, сменит сообщение из которого извлекаю время для создания файла, в итоге лог не пишется.
Так же расстроило, что андроидовский RTKGPS+, не понимает TRKM* сообщения. Так что скорее всего придётся ublox8 использовать как локальную базу, а с ublox6 бегать вокруг. Большие надежды, что с таким подходом, когда локальная база стоит в статике дольше, а между ней и ровером считанные метры, кинематика получится лучше.
Хотя немного печалит, что Глонасс использовать не выйдет, т.к. нужна коррекция, да ещё и с версии 2.01 где её значения не известны.
Обновляться на 3.01 как-то стрёмно, т.к. я не смог найти дамп текущей прошивки, чтобы в случае чего откатиться.
Про 3 байта, я так понял в вики писать не будешь, типа ida в руки и вперёд. Про контрольную сумму вообще не ясно где копать.
Киллер, не киллер, но да меня уже задолбало в трёх местах вводить даты время, чтобы обработать данные или что-нибудь скачать. Поэтому у меня тоже есть желание как это упростить. За прототип я взял gnss solution и неделю возился в opengl. Потом оказалось, что у Runge есть компонент, которым он отображает отрендеренные карты в своей студии. И в принципе там из коробки уже можно рисовать точки и вектора + любые проекции. Вот спутниковую подложку и графики придётся покумекать как подсунуть. Но это уже что-то, потому что с opengl с нуля у меня опустились руки. Плюс он заверил, что предыдущие версии под моно работали.

Сходил на улицу, о ощущения на глаз 8-я версия лучше держит фазу, по крайней мере красных полосочек заметно реже. А вот по силе сигнала как-то хуже.
Но при конвертации, полно ошибок вида


2 ubx trksfrbx sat number error: sys=4 prn=255
2 ubx trkmeas sat number error: sys= 4 prn=255

Судя по докам 4 это IMES, зачем нужен не понятно. Отключать видимо надо через CFG_GNSS.
Китайских тарелок так и не поймал. Очень близко к горизонту (меньше 15г) виделся QSZZ, но в nav файле для QZS? один нули, видимо не чего не извлеклось.
Притом не понятно, если они включены по умолчанию, зачем в вики приведена длинная строка для недокументированной CFG-BDS?

Есть 3 версии поправок в прошивке (2 для 2.01 и 1 для 3.01, все в вики), но толку от них мало,
глонасс дело сложное.

Текущей это какой, M8T 2.30 ? В любом случае дамп “своей” прошивки нельзя сделать только
для 3.01 (там убрана эта функция, добавлены какие-то новые, но я детально не смотрел).

Я уже забыл детали, но надо заменить один 4 байтовый bl на 2 thumb2 nop, что-то типа

а про внутренности этого bl, да, ida в руки (ну или objdump) и смотри сам, какой там xor, ror и P-box.

Этой теме уже почти 6 лет, уже ведь писал и про Fletcher-64 и даже исходники на C есть в теме :wink:
В вики добавить не могу, меня там заблокировали.

qt gui идея тоже не только моя:
http://diydrones.com/forum/topics/project-of-touchscreen-gui-for-rtklib

4 это глонасс


#define SYS_GLO     0x04                /* navigation system: GLONASS */

и так как у него только 1 код, то часто нельзя сразу определить номеp спутника,
то есть это нормальная ситуация.

Для номеров > 32, это два последних запущенных спутника,
в 3.01 я их не вижу даже с этой командой.

IGSO и GEO меня не очень интересовали (IGSO были видны),
а вот из 7 MEO
(C11=38250U, C12=38251U, C13=38774U, C14=38775U, C34=40748U, C33=40749U, Cxx=41315U)
я видел 5 (C11,C12,C14, C33 и C34 с 2.01+CFG-BDS).
Почему не виден C13 не знаю.
TLE с NAV тоже пока не сравнивал.

E24 починили, это тоже хорошо.

Ну я вот сужу по станции Казань сети mgex, и там видно только 3 европейских. Хотя может китай у них в принципе не принимает.
И ещё никак не пойму, я сбилдил в visual studio convbin (тоже та ещё задача, особенно с не инициализированными перемененными) и когда я сравнил результата от rtkconv, то в течении одной эпохи у некоторых спутников псевдодальности отличаются на 35 миллиметров. Закономерности не выявил.
Так же по поводу коррекции глонасовской п.дальности, для частоты +7 стоят вопросы в вики: документация от ublox говорит что у них только от -7…6, так что можно не пытаться.

Формула там довольно простая: 64битное целое число делится на 2^32 и потом еще на 1000.
это можно численно оптимизировать.

Частоты в вики добавил не я, и эта информация уже несколько устарела:
текущие цифры можно брать отсюда https://www.glonass-iac.ru/en/GLONASS/
и #702 сейчас на канале -6 (другие не сравнивал) и +7 больше нет.

Обратил внимание, что сами китайцы (Wuhan) .sp3 эфемерид для C13 тоже
не дают, что скорее всего говорит о том, что этот спутник не работает.

Вот нашёл порт где прикручивают Qt. Правда запустить так и не удалось, видимо моя версия Qt не подходит. https://github.com/JensReimann/RTKLIB

Радостное событие :sunglasses: :slight_smile:

Я собрал для qt5 практически без проблем, rtknavi_qt для qt4 с минимальными
изменениями и rtkplot_qt для qt4 закомментировав фичи которые есть только в qt5
(в основном неправильные пути к #include, заголовки и названия библиотек.
google earth закомментировал полностью, но он и не должен работать).
Многие вещи конечно надо зачищать, но в принципе уже самое главное
работает (включая galileo и beidou). Так глядишь и на андроиде будет работать.

PS. Модифицированная 3.01 для M8N : UBX_M8_301_SPG.2499691edc55c8b2084ae2fd0a2e7ffb.bin


@@ -23651,8 +23651,8 @@
 05c620 b2 70 00 22 05 f1 14 03 f2 70 33 71 1b 0a 73 71
 05c630 20 1f 02 23 03 70 42 70 10 35 41 80 8d 42 04 d0
 05c640 6a 1a 60 18 11 46 a3 f5 69 f5 68 46 ff f7 cb ff
-05c650 0d 20 ff f7 dc f9 67 19 04 e0 69 46 20 46 00 f0
-05c660 2f fa 10 34 a7 42 f8 d8 0d 20 ff f7 3f fa 71 19
+05c650 0d 20 ff f7 dc f9 67 19 04 e0 69 46 20 46 00 bf
+05c660 00 bf 10 34 a7 42 f8 d8 0d 20 ff f7 3f fa 71 19
 05c670 b0 1c 0a 31 10 f0 de f8 0c 35 a9 b2 42 46 30 46
 05c680 fc f7 a8 f9 04 b0 40 46 bd e8 f0 81 10 b5 04 46
 05c690 49 1e 08 11 00 01 1c 30 81 b2 20 46 fc f7 d9 fa
@@ -32906,6 +32906,6 @@
 080890 d2 04 00 20 40 05 02 20 00 00 00 00 3c 00 00 00
 0808a0 00 00 00 02 f0 39 ff 07 20 1c 00 00 00 00 00 00
 0808b0 00 00 00 00 00 00 00 00 0c 00 00 00 00 00 00 00
-0808c0 3c 00 00 00 01 00 00 00 00 00 00 00 55 1f 9a da
-0808d0 b7 85 4d 71
+0808c0 3c 00 00 00 01 00 00 00 00 00 00 00 26 e4 99 a9
+0808d0 42 40 df 73
 0808d4

Вслед за вики заблокирован мой вход на центральный сайт ОСМ, странно, что здесь
еще работает. По этому поводу напишу сразу, что починил компиляцию генератора RINEX OBS
из RINEX NAV (программа ‘utils/simobs’, пока только для GPS)
и добавил поддержку азимутальных параметров для положения антенного фазового центра.
Также занялся декодером геодезических RTCM3 сообщений 1021-1027,
потом перейду на сетевые RTCM3 поправки.

Как так случилось ? Жесть, я на всякий случай сохранил себе страницу http://wiki.openstreetmap.org/wiki/UbloxRAW

Не уверен насколько ваша тематика подходит, но правьте хоть здесь пока:

http://wiki.gis-lab.info/index.php?title=%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:RecentChanges&days=30&limit=500

Вряд ли тут существует как-то заговор. А вот в каком репозитории посмотреть починенную компиляцию и добавленную поддержку?
И совсем не понятно, зачем симулировать OBS?

Приветсвую.

Ребята подскажите мучаюсь уже две недели не могу запустить RTk станцию.

Была куплена такая штука http://nvs-gnss.com/products/evk/item/40-nv08c-evk-rtk.html.
Вроде инструкция не сложная, просто вбить время усреднения и ввести в режим base. После того того как она всё усреднит, начинает через com port слать rtcm поправки.

Вроде разобрался с кастером и серверами. Подняли свой, производитель сделал тестовую точку монтированию
89.108.77.237:2101
mnt WAYRAY
login:pass
test:test

Подключаюсь GNSS Surfer, вроде всё работает.

Подключаюcб ровером СН-5707, он из режима 3D не выходит, хотят говорит что поправки принимает, но задействует их.

Не могу понять, или база не работает или ровер глючит.

Поэтому два вопроса:

  1. Как можно проверить точно что база работает?
  2. Может ли это все ебалайку не работать, из-за того что антенна баз размещена на подоконнике первого этажа?
  3. Есть ublox m8, может можно ему попробовать скормить эти rtcm поправки?

Спасибо, за любые советы. Тех поддержку замучал, прошивки уже все обновили, не летит.