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

На выходных провел интересный статический измерительный эксперимент:
GPS/glonass антенна на мини-штативе стояла на крыше автомашины (суммарное высота над землей порядка 3x метров)
в открытом на все стороны поле на расстоянии 35 км от базовой станции (RINEX dt=30 sec, GPS+GLONASS). Антенна присоединена к сплиттеру,
и на его выходах подключены LEA-6T (GPS без SBAS) и NEO-M8N (GPS+GLONASS без BEIDOU-2, QZSS и SBAS). Сырые данные записывались с частотой 10 Hz,
так как официальная версия rtklib для NEO-M8N больше не умеет ) порядка 70 минут.
Измерения были конвертированы в RINEX с помощью convbin, затем обработаны teqc (с децимацией 1s,2s,5s,10s,15s,30s,2Hz,4Hz,5Hz,10Hz, с глонассом и без),
постпроцессированы с помощью rnx2trkp
и результат визуализирован rtkplot.
Таблица видимости спутников ( elevation > 10° ) выглядит вот так


$ teqc +qcq +sym +l -nav neo8n_rover.nav,neo8n_rover.gnav neo8n_rover.obs
 SV+-|---------------------------|----------------------------|-------------+ SV
 12|^^^^^^^^^^^^^^^^^^^^^^^^^^                                              | 12
 11|cccccccccccccccccccccccccccccccccccccccc^^^^^^^^^^^^^^^^^^^^^^____      | 11
  1|cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc|  1
 23|cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc| 23
 32|cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc| 32
 17|cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc| 17
 31|cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc| 31
  4|cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc|  4
  9|cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc|  9
  6|cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc|  6
 13|cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc| 13
 20|cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc| 20
 10|                L^^^^^^^^^^^^^^^^^^^^^^^^^^^^ccccccccccccccccccccccccccc| 10
  8|____________________________LL^L^^^L^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^|  8
  2|                                               _LL^^^^^^^^^L^^^^^^^^^^^^|  2
  7|                                                      ___________L^^^^^^|  7
R 6|cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc|R 6
R 5|cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc|R 5
R21|cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc|R21
R20|ccccccccccccccccccccccccccccccccccccccccccccccccccccc^^^^^^^^^^^^^^L^^^L|R20
R14|ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc^^^^^^^^^^^|R14
R22|cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc|R22
R15|cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc|R15
R 4|????????LLL LL                                                          |R 4
R 7|^^^^^^^^^^ccccccccccccccccccccccccccccccccc-cccccccccccccccccccccccccccc|R 7
R13|???LLLL                                                                 |R13
R16|         ______L^^^^^^^^^^^^^^^^cccccccccccccccccccccccccccccccccccccccc|R16
R23|                                                L??????L??????L?????????|R23
-dn|++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++|-dn
+dn|++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++|+dn
+10|iiiiiiiiijjjjjjjjjjjjjjjjjjjjjjkkkkkkkkkkjjjkkkkkkkkkkjjjjjjjjiiiiiiiiii|+10
Pos|ooooooo         oooooooooo  oooooooooooooooooooooooooooooooooo   ooooooo|Pos
Clk|                                                                        |Clk
   +-|---------------------------|----------------------------|-------------+   
17:28:49.400                                                        18:44:34.100
2014 Oct  3                                                          2014 Oct  3

Observation interval    : 0.1000 seconds
Total satellites w/ obs : 28
Rx tracking capability  : 0 SVs
Poss. # of obs epochs   :  45448
Epochs w/ observations  :  45448
Mean S1 S2              : 47.88 (sd=3.61 n=863125) 0.00 (sd=0.00 n=0)
      first epoch    last epoch    hrs   dt  #expt  #have   %   mp1   mp2 o/slps
SUM 14 10  3 17:28 14 10  3 18:44 1.262 .10 863126      0   0   n/a   n/a      0

то есть в первые полчаса одновременно были видны 12 спутников GPS и 7 глонасс, а все время 10 спутников GPS и 5 глонасс.
Основные результаты:

  1. глонасс только мешает: с ним fixed решение никак не получается (glonass only и glonass+gps), а при его отключении
    fixed выдается через 7 минут. Возможно это связано с (отсутствием интер-)калибровки IFB.
  2. Если базовая станция дает данные с периодом 30 сек, то никакого смысла в большей частоте (при статике) для ровера нет.

Для статики вообще рекомендуется (прим. компанией Trimble) запись 15-30 секунд, даже если база пишет чаще. Суть в очень высокой корелляции соседних измерений и в результате можно получить слишком оптимистичную точность оценку точности.

Как-то на форуме ixbt обсуждали похожую ситуацию:

http://forum.ixbt.com/topic.cgi?id=64:2826-7#182

http://forum.ixbt.com/topic.cgi?id=64:2826:214#215

http://forum.ixbt.com/topic.cgi?id=64:2826-9#220

Сломал моск, пытаясь угадать, что к чему относится в данном предложении :slight_smile: Так что же оно не умеет - больше 10 Hz, или больше 70 минут?

больше 10 Hz, так как округление transmission time сделано не очень аккуратно:


/* time-tag = max(transmission time + 0.08) rounded by 100 ms */
tr=ROUND((tr+0.08)/0.1)*0.1;

Я забыл назвать порядок величины проблемы: ±5 cm, поэтому мне и кажется что дело в
некалиброванных частотных отклонениях фазы
http://gpspp.sakura.ne.jp/image/image1362.jpg описанных автором rtklib.
Решение проблемы пока неизвестно.

Edit
ublox-m8 стало можно купить за совсем небольшие деньги:
http://ava.upuaut.net/store/index.php?route=product/product&path=59_60&product_id=96

Я не усредняю фиксированные решения, а смотрю полную “временную развертку” отдельных решений.
Самые лучшие результаты получаются при полном совпадении временных отметок базы и ровера, т.е. при исключении
какой бы то ни было интерполяции измеренных данных.
В этом примере из исходных данных с частотой 10 Hz (-O.int 0.1) выбираются измерения с шагом 30 сек (-O.dec 30) начиная с
30 секундной эпохи 2013-12-22T10:39:30.00


teqc -O.int 0.1 -O.dec 30 -st 20131222103930.00 foo.obs > foo_dec30.obs

При этом на расстоянии 1 км от базы получилось 100% fixed, а на расстоянии 20 км 50% fixed, 50% float.
Число используемых спутников GPS (ele > 15°) было 6-7.
Все так легко и просто только тогда, когда есть под боком станция IGS/EUREF (хехе, и по совместительству ФАГС).
Для тестирования L1 PPP думаю записывать измерения на открытом месте как минимум 24 часа, при этом конечно как можно дольше
ночью (из-за TEC/ионосферы) и без дождя/снега.

Возвращаясь к теме виртуализации собственной базовой станции, и превращения ее
так сказать в poor man’s VRS.
В общих чертах: что мешает в формулах для P и C
http://home-2.worldonline.nl/~samsvl/theory.htm
заменять R для каждого спутника j в каждый момент времени (эпоху)
на расстояние до некой виртуальной точки (X1,Y1,Z1), находящейся недалеко от реального
положения базовой станции (X0,Y0,Z0) ?


Pj = Rj + ...
Cj = Rj + ...

PVj = RVj + ...
CVj = RVj + ...

Rj =sqrt( (X0-Xj)^2 + (Y0-Yj)^2 + (Z0-Zj)^2 )
RVj=sqrt( (X1-Xj)^2 + (Y1-Yj)^2 + (Z1-Zj)^2 )


Т.е. координаты станции в RTCM передаются как (X1,Y1,Z1)
а из измеренных P и C вычитается разница
Rj-RVj = sqrt( (X0-Xj)^2 + (Y0-Yj)^2 + (Z0-Zj)^2 ) - sqrt( (X1-Xj)^2 + (Y1-Yj)^2 + (Z1-Zj)^2 )
Таким образом, (X0,Y0,Z0) нигде не присутствует, а поправки почти никак не страдают
при небольшом удалении (X1,Y1,Z1) от (X0,Y0,Z0).

usm78-gis
Очень здравая идея.
К слову для тестирования понадобился доступ к NTRIP + RTCM 2.3 - на удивление всё глухо в Москве, только за мани. Ближайшую станцию нашел в Польше, подписку на IGS дали в течение пары дней.

ublox 6h raw memory patch fw 7.03

B5 62 9 1 10 0 F4 40 0 0 0 0 0 0 E7 B9 81 0 0 0 2 10 81 48

B5 62 9 1 10 0 60 43 0 0 0 0 0 0 D3 B9 81 0 0 0 2 11 DD 96

Can you add these strings to OSM wiki at https://wiki.openstreetmap.org/wiki/UbloxRAW ?

А к каким именно сообщениям ?

Type 1
В принципе польской станции мне сейчас хватает т.к. нужен был доступ к стандартному протоколу, реальное содержимое (удалённость, созвездие) пока неважны.

Всем привет!

Могу организовать доступ к поправке RTCM 2.3 в Москве с любыми сообщениями.
Буду рад пообщаться с любителями L1 RTK.

sMyUserName
Спасибо за предложение, будем иметь в виду ))

ОК

Не подскажете где в Москве достать LEA(NEO)-6T по адекватной цене? Для экспериментов с rtklib.
Проще с ebay или ublox.com заказывать?

Мне казалось что Type 1 и Type 3 вот тут полностью отработаны
https://github.com/tridge/pyUblox ?

sMyUserName
Если вам для официальных разработок - то нужен 6T, если для личных экспериментов, то…
http://wiki.openstreetmap.org/wiki/RTKLIB
http://wiki.openstreetmap.org/wiki/UbloxRAW
Все благодарности → usm78-gis :up:

У меня другая задача - я не программирую, я “изучаю” другую программу )) RTCM нужен был для тестирования одной функции.

А что, ЦНИИГАИК открыл наконец свободный доступ к
полному архиву ФАГС
http://82.138.13.236/filebrowser/index.php ?

Тем, кого интересует почему глонасс это PITA для точного позиционирования, рекомендую
слайды автора RTKLIB:
http://gpspp.sakura.ne.jp/paper2005/gpssymp_2014_ttaka.pdf

Слайды показали всего лишь что RTKLib не умеет работать с GLONASS, ничего более. У тримблов, топконов и др. нормальные такие фиксированные решения. Не надо идеализировать эту программу ))

(added)
В отчете порадовали малые residuals по GPS-дальностям. Если я правильно читаю графики - обычный дифф.режим даст субметровую точность. Но снова всё упирается в антенну.