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


static int useglosbas(const int sat, const int iode, const sbssat_t *sbs, const geph_t* eph) {
   const sbssatp_t *p=NULL;
   for (p=sbs->sat; p<sbs->sat+sbs->nsat; p++) {
      if (p->sat!=sat || p->lcorr.t0.time==0) 
         continue;
      const int L=30*(iode&0x7);
      const int V=60*(iode>>3);
      return (p->lcorr.t0.time-L-V<=eph->tof.time && eph->tof.time<=p->lcorr.t0.time-L);
   } 
   return 0;
}

static geph_t *selgeph(gtime_t time, int sat, int iode, const nav_t *nav) {
...
   if (iode>=0 && !useglosbas(sat, iode, &nav->sbssat, &nav->geph[i])) 
       continue;
...
}

к сожалению поскольку iode всегда 252 то будет вечное continue

за useglosbas спасибо, возможно пригодится :slight_smile:

похоже есть еще большой глюк в sbsfastcorr …

Ошибаетесь, вечного continue не будет :). continue будет если iode больше нуля (т.е. для данного спутника есть поправки к эфемеридам) и useglosbas вернёт 0 (т.е. не найдены эфемериды, к которым можно применить поправки).

поскольку
1 selgeph : time=2020/07/29 09:00:33.195 sat=43 iode=-1 useglosbas= 0 i=10 iode_i=49 sat_i=43
1 selgeph : time=2020/07/29 09:00:33.195 sat=43 iode=-1 useglosbas= 0 i=37 iode_i=47 sat_i=43
1 selgeph : time=2020/07/29 09:00:33.195 sat=43 iode=252 useglosbas= 0 i=10 iode_i=49 sat_i=43
1 selgeph : time=2020/07/29 09:00:33.195 sat=43 iode=252 useglosbas= 1 i=37 iode_i=47 sat_i=43
1 selgeph : time=2020/07/29 09:00:33.195 sat=44 iode=-1 useglosbas= 0 i=11 iode_i=49 sat_i=44
1 selgeph : time=2020/07/29 09:00:33.195 sat=44 iode=-1 useglosbas= 0 i=38 iode_i=47 sat_i=44
1 selgeph : time=2020/07/29 09:00:33.195 sat=44 iode=252 useglosbas= 0 i=11 iode_i=49 sat_i=44
1 selgeph : time=2020/07/29 09:00:33.195 sat=44 iode=252 useglosbas= 1 i=38 iode_i=47 sat_i=44
1 selgeph : time=2020/07/29 09:00:33.195 sat=51 iode=-1 useglosbas= 0 i=18 iode_i=49 sat_i=51
1 selgeph : time=2020/07/29 09:00:33.195 sat=51 iode=-1 useglosbas= 0 i=45 iode_i=47 sat_i=51
1 selgeph : time=2020/07/29 09:00:33.195 sat=51 iode=252 useglosbas= 0 i=18 iode_i=49 sat_i=51
1 selgeph : time=2020/07/29 09:00:33.195 sat=51 iode=252 useglosbas= 1 i=45 iode_i=47 sat_i=51
1 selgeph : time=2020/07/29 09:00:33.195 sat=52 iode=-1 useglosbas= 0 i=19 iode_i=49 sat_i=52
1 selgeph : time=2020/07/29 09:00:33.195 sat=52 iode=-1 useglosbas= 0 i=46 iode_i=47 sat_i=52
1 selgeph : time=2020/07/29 09:00:33.195 sat=52 iode=252 useglosbas= 0 i=19 iode_i=49 sat_i=52
1 selgeph : time=2020/07/29 09:00:33.195 sat=52 iode=252 useglosbas= 1 i=46 iode_i=47 sat_i=52
1 selgeph : time=2020/07/29 09:00:33.195 sat=53 iode=-1 useglosbas= 0 i=20 iode_i=49 sat_i=53
1 selgeph : time=2020/07/29 09:00:33.195 sat=53 iode=-1 useglosbas= 0 i=47 iode_i=47 sat_i=53
1 selgeph : time=2020/07/29 09:00:33.195 sat=53 iode=252 useglosbas= 0 i=20 iode_i=49 sat_i=53
1 selgeph : time=2020/07/29 09:00:33.195 sat=53 iode=252 useglosbas= 1 i=47 iode_i=47 sat_i=53

а в тексте имеется

if (iode>=0 && nav->geph[i].iode != iode) continue;

то вечное continue гарантировано :slight_smile:

если убрать в общем то лишённую смысла эту строчку (непонятно зачем её вообще вставили)
то вечного continue нет и useglosbas работает :smiley:
За что отдельное спасибо ! :slight_smile:

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

diff в итоге какой?

самому интересно какая в итоге будет точность :smiley:
пока ничего особо интересного, по GLONASS поиски очередных глюков RTKLIB,
ибо SDCM c GLONASS у меня фактически не работает :frowning:
вернее работает если закомментировать (убрать) в sbas.c

		*var=varfcorr(p->fcorr.udre)+degfcorr(p->fcorr.ai)*t*t/2.0;

но это же неправильно :slight_smile:

SDCM c GPS работает без проблем, спутники от 5 градусов:
GPS без SDCM

GPS с тропо и ионо от SDCM

GPS с полной коррекцией от SDCM

до этого еще надо дойти :smiley:

Взял ваш лог PRN125+PRN140+GPS+GLONASS и посчитал в своей версии RTKLIB. Вот результаты:
GPS+СДКМ

ГЛОНАСС+СДКМ

Ну и на выходе значения ICB/cIFB по литере:
-1 0.42
0 2.32
1 0.57
2 1.89
4 2.66
6 3.98

на https://github.com/ более 160 версий RTKLIB :slight_smile: этой, насколько понимаю, там нет :frowning:

красивая картинка после сглаживания :smiley:
мне больше нравится без сглаживания, эталоном служит картинка того что умеет этот приемник от моего GPS симулятора

нормальная картинка, правда сдвинута на юг на 0.5 … 0.7 метра

Это самое чудесное в этой версии :slight_smile:
Без этого про ГЛОНАСС можно забыть.
но даже с этим и сдвигом 0.5 … 0.7 м тоже можно забыть :expressionless:

Сейчас планово увеличил скорость солнечный ветер и ГЛОНАСС
унесло за 2 часа наблюдений на ~ 20 метров

Увы :frowning:

Да, кодовые измерения были сглажены фазовыми (т.е. уменьшен шум кодовых измерений и эффект многопутности). В результате мы видим более-менее реальную точность СДКМ. А так из-за кодовых шумов был бы круг с радиусом 1-1.5м.

В идеальных условиях выглядит красиво :), но на практике шумы в несколько раз выше.

Тут надо разбираться. В том файле, что вы предоставили, некоторые измерения псевдодальностей ГЛОНАСС явно были аномальными. Есть предположение, что этот приёмник некорректно работает с ГЛОНАСС + непонятно, что там с фазовым центром антенны. Во всяком случае, это смещение никак не связано с поправками СДКМ. На тех приёмниках, что есть в моём распоряжении, точность ГЛОНАСС+СДКМ ничем не хуже точности GPS+СДКМ.

Скорее всего это просто некорректная работа вашего приёмника и солнечный ветер тут не причём.

в логе https://github.com/IvanKor/Accuracy-GNSS/blob/master/tt8_125_140_com9.ubx
используется больше спутников


1 rxmrawx: -7  10 0.000000
1 rxmrawx: -6  26 0.000000
1 rxmrawx: -4   6 0.000000
1 rxmrawx: -2  13 0.000000
1 rxmrawx: -1  12 0.420000
1 rxmrawx:  0  11 2.320000
1 rxmrawx:  1   5 0.570000
1 rxmrawx:  2  20 1.890000
1 rxmrawx:  3  19 0.000000
1 rxmrawx:  4  21 2.660000
1 rxmrawx:  6   4 3.980000

приведенных значений совершенно недостаточно для коррекции, дайте пожалуйста остальные значения :slight_smile:

и если возможно полные значения ICB/cIFB по литере для лога
https://github.com/IvanKor/Accuracy-GNSS/blob/master/tt8_gal_125_136_140_com9.ubx
который снят во время солнечного ветра.

какие именно были аномальными ?

Про фазовый центр антенны имеет смысл говорить когда зайдет речь о невязках меньше 0.2 метра :confused:
Поскольку используется широкополосная полногабаритная антенна то в отличие от керамических (укороченных) этот параметр у антенны лучше не бывает :smiley:


-7  -8,8906
-4  -7,9115
-2  -5,0944
 0   2,3176
 1   0,5421
 2   2,7396
 3   3,8922
 4   5,1772
 5   3,3453
 6   3,1348


Похоже, смещение в 20 метров возникает из-за сильного разброса ICB, а не из-за солнечного ветра. Но центр ГЛОНАСС и GPS сильно смещен. Почему так непонятно, может все дело в антенне.

GPS+СДКМ

ГЛОНАСС+СДКМ

Спасибо ! :slight_smile:
для ясности, если возможно, дайте значения ICB/cIFB по всем спутникам для этого лога
https://github.com/IvanKor/Accuracy-GNSS/blob/master/tt8_125_140_com9.ubx

это когда солн. ветра нет а оборудование полностью идентичное.

в обоих случаях снималось с заводской калибровкой см. таблицу Pseudo-range correction table
которая выполнялась при помощи симулятора.


-7  -8,2474
-4  -6,594
-1   0,4277
 0   2,3246
 1   0,5785
 2   1,8965
 3   3,5329
 4   2,6693
 6   3,9852

Если бы было всё так просто :). Почитать того же Печерицу - https://www.dissercat.com/content/metod-kalibrovki-navigatsionnoi-apparatury-potrebitelei-glonass-s-ispolzovaniem-etalonov-pro. Имитатор, калибровка имитатора, куча теорий…. К тому же все эти значения не являются константными и в зависимости от оборудования, ну там за много килобаксов или не очень ;), температуры и т.д., могут плавать от нескольких сантиметров до несколько метров в течении суток. Ну и соответственно могут сильно измениться в течении года. На сайте sbas.ru ICB используются как константные значения, которые последний раз обновлялись полгода назад. Как видно по пришествию полугода точность ГЛОНАСС не сильно уступает GPS, т.е. значения ICB в течении полугода почти не изменились.

Спасибо ! :slight_smile:
Буду выяснять что к чему, приемник у меня в термостате (термос),
керамическая патч антенна с экраном на диапазоны GPS и Глонасс есть (проверена).
Попробую еще с этой антенной.

Насколько я понимаю в килобаксовых приемниках встроена динамическая подстройка ICB,
тот же javad хвастался что они 10 лет потратили но таки это сделали :smiley:

Задержки (ICB), которые я привел, действительны для полного тракта приёмник + антенна. Не уверен, что если заменить антенну, то задержки будут те же.

Такой функции для приёмников на сайте sbas.ru не предусмотрено (хотя такая возможность действительно рассматривалась). У Javad-a данная опция является платной. Я читал брошюру на сайте javad-a (там говорится, что ГЛОНАСС будет такой же как GPS). У меня возникло очень много вопросов к их калибровке. Во-первых, не понятно, что они калибруют, межчастотные смещения L3 или межканальные L1 и L2. На мой взгляд, даже чисто теоретически, по бродкастовым эфемеридам осуществить (во всяком случае на данный момент) калибровку межканальных смещений невозможно. Есть десятки статей на эту тему, но большинство - полная чушь, статья ради статьи. Возможно, javad имеет в виду калибровку в режиме RTK, тут да, калибровка имеет смысл.

2002_ivan :), моё начальство, которое читает данный форум, попросило меня предложить Вам работу (в Москве). Уж больно все были удивлены, что вы оцениваете доплеровское смещение Лучей, хотя таких значений, которые вы приводили никогда и не было (кое кто даже был жутко возмущен), но тем не менее… :). Если Вас интересует данное предложение, то сообщите мне на почту. Вам хотят предложить очень интересную (в мировом масштабе) работу :).

Спасибо ! Прекрасно сработало :slight_smile:
Сведение GLO

в этом случае все проблемы SDCM+GLO исчезают
необходимо дописать в RTKLIB модуль калибровки :slight_smile: без этого никак …

SDCM+GLO+GPS

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

SDCM+GLO+GPS

калибровки особо не отличаются

-7  -8,8906   -8,2474     10
-4  -7,9115   -6,594    2  6
-1   		   0,4277     12
-2  -5,0944                9
 0   2,3176    2,3246     11
 1   0,5421    0,5785      5
 2   2,7396    1,8965     20
 3   3,8922    3,5329     19
 4   5,1772    2,6693  17 21
 5   3,3453             3
 6   3,1348    3,9852      4

Если возможно, дайте пожалуйста еще калибровки для двух файлов снятых на различные антенны
patch
и
quadrifilar

Мне нет смысла врать :slight_smile: Мне необходимо было контролировать в полевых условиях точность установки частоты внешнего генератора в hackrf для gps симулятора. Не долго думая подправил эту софту


выставил PRN 140 Луча и отверткой подстроил генератор к частоте доплера близкой к нулю, и оставил.
Мое удивление было большим когда частота доплера начала изменятся в озвученных ранее значениях (точно какие уже не помню).
На PRN 125 Луча ситуация была аналогичной.
Посмотрел GAGAN, там частота стабильна, не изменяется, по GAGAN и отстраиваюсь.
В EGNOS тоже стабильная, но немного плавает, в индийском GAGAN лучше всех стабильность доплера :slight_smile:

Спустя время понял что затею с софтой городил напрасно, ибо все прекрасно измеряется в u-center без лишних телодвижений в любое время, doppler можно смотреть в сообщениях UBX-RXM-RAWX и UBX-RXM-MEASX.
MEASX в выложенные файлы *.ubx я не записывал смотреть по RAWX.
Из отображаемых там значений doppler необходимо вычесть значение смещения кварца приемника определяемое по частоте doppler GAGAN. Для файлов где упомянуто com9 это значение ~3500 Hz.
Проверяя таким образом текущий доплеровский сдвиг Лучей можно сказать что сегодня doppler PRN 140 близок к нулю,
а недавно работавшем PRN 125 (сегодня его нет в эфире) doppler ~ 200 Hz

Всегда готов :slight_smile:
Только смотря что за работа :wink: