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

Which firmware version do you have on LEA-4A ?
The custom message depends on the RAM layout of static variables.

Удалось включить NAV-TIMEGPS@4800!
Теперь надо только переключиться на 115200 (хотя может и 57600 достаточно),
включить TRK-TRKD5 и будет raw ubx gps logger для TwoNav Aventura (wince PDA с внешним MCX антенным
разъемом) :sunglasses:

Could you please advise how to check firmware version? Thanks.

Usually it is sent as an informational NMEA message $GPTXT
when you connect to the serial/USB port.
Here is an example for TIM-4A


$GPTXT,01,01,02,u-blox ag - www.u-blox.com*50
$GPTXT,01,01,02,ANTARIS ATR0621 HW 00040001*67
$GPTXT,01,01,02,ROM CORE 4.00 Dec 23 2004 12:00:00*7A
$GPTXT,01,01,02,LIC 5313-D494-A4A6-DF28-29A9*2B

The “wiki” custom sequence is valid only for “ROM CORE 5.00”


$GPTXT,01,01,02,u-blox ag - www.u-blox.com*50
$GPTXT,01,01,02,ANTARIS ATR062x HW 00040001*2E
$GPTXT,01,01,02,ROM CORE       5.00    Jan 09 2006 12:00:00*76
$GPTXT,01,01,02,LIC 45CF-6311-188B-04EA-22C6*2C

and probably will not work on “ROM CORE 4.00”.
In u-center you can also use “View->Messages view->UBX->MON->VER” to see the hardware
and software version of your receiver.

As seen in UBX->MON->VER:

Software version:
5.00 Jan 09 2006 12:00:00

Hardware version:
00040001

Then you are doing something wrong.
Start u-center, change the port speed to 115200 (if you are using UART),
send the custom sequence, enable RXM-RAW and RXM-SFRB messages on the
port you are using (UART, USB or whatever).
The raw data should appear in the messages ->UBX->* window.

OK now.
Thanks.

Хаха. u-blox заметил автора rtklib видимо в связи с NEO-M8N. Он пишет в блоге:


have received the offer from u-blox's EVK-M8T and written materials.

L2C в u-Center.

Для L2C нужна другая антенна, и другой полосовой фильтр.
Я бы предпочел, чтобы они в конце концов сделали поддержку Галилео E1.

Я провел численный эксперимент по определению с помощью RTKLIB
(well known) координат вот этой точки
http://vermessung.bayern.de/grundlagenverm/georeferenzpunkt/muenchen.html
относительно (well known, расстояние 2.6 км) базовой станции
http://gibs.bkg.bund.de/gref/gstainfo.php?st=25 по 15 минутному RINEX логу,
сделанному с помощью u-blox NEO-M8N и антенны Tallysman TW3440 http://www.tallysman.com/TW344X.php
Результаты весьмы поучительны в плане работы с “местными” системами координат
и пересчете систем высот, так что я добавлю их в ближайшее время в вики.

u-blox опубликовал новое описание протокола обмена данными V17
http://www.u-blox.com/images/downloads/Product_Docs/u-bloxM8_ReceiverDescriptionProtocolSpec_%28UBX-13003221%29_Public.pdf
в котором описаны RXM-RAWX и RXM-SFRBX.
В колонке комментариев к pseudorange есть такая фраза


GLONASS inter
frequency channel delays are compensated with
an internal calibration table.

что подразумевает либо заводскую калибровку (наиболее вероятное)
или автокалибровку по измерениям GPS.
Вторая важная фраза касается корректировки фазы


 Clock resets are applied to both
phase and code measurements in accordance
with the RINEX specification

и ранее здесь обсуждалась.
Версия прошивки с RXM-RAWX → EXT 2.30,
и сравнив сырые данные из RXM-RAWX и TRK-MEAS
можно будет удостовериться в правильности текущего драйвера для u-blox
(у меня есть тут некоторые сомнения, + очевидная проблема с > 10 Hz).

Is it convenient for somebody to upload neo-7p firmware? I’d like to flash my EVK-7N.
Many thanks.

You don’t need 7P firmware to get raw data from NEO-7X.
The TRK-TRKD5 and TRK-SFRBX messages
can be enabled by adding the following lines (depending on the output port)


# USB
!UBX CFG-MSG 3 10 0 0 0 1 0 0
!UBX CFG-MSG 3 15 0 0 0 1 0 0
# UART1
!UBX CFG-MSG 3 10 0 1 0 0 0 0
!UBX CFG-MSG 3 15 0 1 0 0 0 0
# SPI
!UBX CFG-MSG 3 10 0 0 0 0 1 0
!UBX CFG-MSG 3 15 0 0 0 0 1 0

to your init file https://github.com/tomojitakasu/RTKLIB/blob/master/data/ubx_m8n_bds_raw_1hz.cmd
Recent rtklib versions know how to deal with these messages.

Many thanks again

Ооо, россиянские бизьнесмены подтянулись :roll_eyes:
http://geodesist.ru/forum/threads/rtklib-%D0%9D%D1%83%D0%B6%D0%B5%D0%BD-%D0%B3%D1%83%D1%80%D1%83-%D0%B4%D0%BB%D1%8F-%D0%BD%D0%B0%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D1%8F-%D0%B8%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%86%D0%B8%D0%B8.35323/

В соседней теме есть ссылка на статью про rtklib http://habrahabr.ru/post/244475/

С одной стороны это хорошо, но уж больно много в тексте мелких огрехов:

  1. не указана версия NVS (hardware и firmware)
  2. на 3434 OBS приходится 112 ошибок. и это при том, что NVS драйвер в rtklib даже не проверяет контрольную сумму.
    тут какая-то кривизна конфигурации.
  3. в окне RTKCONV незачем включать SBAS и L2 (как и D, так как rtklib его не использует)
  4. в окне RTKPOST только одна строчка для файлов эфемерид. Подозреваю что они НЕ для глонасс :sunglasses: и только для ровера
    поэтому писать в заголовке "ГЛОНАСС*, GPS*, Open source* " не совсем корректно, раз
    уж используются только данные GPS.
  5. Параметры антенны не используются (хотя дальше в обсуждении упоминается ANTEX для TW3870)
  6. Ни слова про базу и параметры ее данных (видно только что она ближе 100 метров, т.к. B=0.0 km)
  7. Координаты ровера 55.73815787N 37.52383650E говорят о том, что он находится всего в ~13 км от
    станции ФАГС CNG1 http://www.mwork.su/markdelo/images/content/smagluk/doklad.pdf
    2014-11-28 это 332 день, скачать OBS, эфемериды
    http://82.138.13.236/filebrowser/index.php?SESSID=9ad559b3da9f4b83120afff257d9d07b&currentPath=RGS/obs/2014
    и сделать нормальный постпроцессинг, в том числе и глолнасс :stuck_out_tongue:

usm78-gis
Прошу практического совета, чем вообще патчат ARM-код под виндовс ? У меня сейчас тулчейн такой

  1. посмотреть в Иде что там делает код
  2. написать заплатку на C в VS 2005
  3. копильнуть в obj или exe
  4. посмотреть, что получилось, в Иде (те ли регистры передают данные, сохраняются ли в стеке и пр.)
  5. скопировать/написать ассемблерный ARM-код, подправить, если надо
  6. компильнуть майкрософтовским armasm
  7. открыть получившийся бинарник каким-либо отладчиком (или Идой), найти код, скопировать hex
  8. вставить hex Идой в бинарник
  9. проверить ссылки на вызываемые процедуры, посчитать на калькуляторе нужные смещения, исправить все вызовы

Для несложного кода п.п.2-4 можно опустить, но всё-равно по сравнению с x86 это просто умопомрачение - там всё решается целым выбором инструментов (ida, ollydbg, hiew) и всего одним пунктом “открыть файл - вставить мнемонику asm”.

Заранее благодарен.

Последние два дня поездил с записью L1 Carrier (софт коммерческий, приемник начального уровня на сёрфе с разлоченой фазой). Антенна обычная автомобильная patch на магните.
Первый день по МКАД и Ленинградке, carrier lock стабильный, до получаса не срывался. На следующий день обработал с данными IGS Менделеево, в полном восторге, небо и земля по сравнению с кодовой коррекцией, вплоть до 0.2 м float решение.

Differential Correction Summary:
    1 file processed.  In this file:
        4565 (100.0%) of 4567 selected positions were code corrected by post-processing
        2156 (47.2%) of 4567 selected positions were carrier corrected by post-processing
        145 (6.7%) of code positions chosen over carrier, as they were of higher quality

    Estimated accuracies for 4565 corrected positions are as follows:
            Range	Percentage
            ----------	----------
             0-15cm	     -
            15-30cm	  7.0%
            30-50cm	 11.5%
             0.5-1m	 22.6%
               1-2m	 28.4%
               2-5m	 29.0%
                >5m	  1.5%

На второй день ездил по Новокуркинскому шоссе. Здания вроде далеко, но высокие. Самый продолжительный блок carrier получился 40 минут, но фаза вообще не обработалась, только код.

--------------------------------------------------
Differential Correction Summary:
    1 file processed.  In this file:
        4565 (100.0%) of 4567 selected positions were code corrected by post-processing
        0 (0.0%) of 4567 selected positions were carrier corrected by post-processing

    Estimated accuracies for 4565 corrected positions are as follows:
            Range	Percentage
            ----------	----------
             0-15cm	     -
            15-30cm	     -
            30-50cm	     -
             0.5-1m	  0.2%
               1-2m	 53.7%
               2-5m	 45.3%
                >5m	  0.7%

Выводы:

  1. Нужна более качественная антенна (это было сразу понятно, но я пока не готов покупать такое крепление для авто).
  2. Даже внутренний контроль при сборе данных (счетчик carrier lock) не гарантирует, что данные обработаются.
  3. Приходится подстраивать маршрут, чтобы не проехать под мостом или рядом со зданиями. Практически нереально в городе.
  4. Кодовая коррекция имеет право на существование.

Если кто-то будет писать юзер-интерфейс для сбора данных и последующей постобработки RTKLib, можно перенять следующие вещи.

  1. Счетчик carrier lock. Каждый спутник оценивается по флагам приёмника (есть во всех приёмниках с сырыми данными) “L1 Valid”, “Carrier Lost”, по уровню сигнала >30 db*Hz, возвышению > 10° и т.д.
    Далее таких спутников непрерывно должно быть >= 5 штук. При невыполнении любого условия счётчик сбрасывается в ноль и начинай сначала.
  2. Минимально полезная длина блока - 10 минут, чем дольше, тем точнее (гиперболическая зависимость, примерно через 40-60 минут точность уже на максимуме).
    Таким образом ещё в поле видно качество собираемого материала L1, но, как я написал выше, не гарантия что он будет успешно обработан. В этом отношении RTK интереснее, но в разы сложнее в реализации.

Настройки можно менять, например, ползунком. Слева “Productivity” vs справа “Accuracy”, соответственно чем дальше ползунок вправо - тем жестче маски-условия для счётчика carrier lock. Некогда в поле набивать циферки.

  1. Код обрабатывается всегда (за исключением совсем экзотичных случаев < 4 спутников), т.е. эта технология хоть и менее точная, но самая устойчивая в городских условиях.
    ОДНАКО если для L1 достаточно 30-секундных ринексов базы, то для кода крайне желательно 1-5 секунд (плохие результаты во второй врезке, похоже, именно из-за этого).

Также случайно нашел познавательное видео для начинающих, чтобы понять сколько времени требуется на “точный GPS” и не испытывать потом разочарований :smiley: Заодно можно посмотреть на обычный для большинства полевых контроллеров интерфейс (WinCE->WM6.5). Андроид только начинает вхождение на этот рынок, но, видимо, процесс этот неизбежен.

chnav у меня нет опыта работы с отладчиком ida для arm, так как меня интересовали 2 класса проблем:
прямое взаимодействие с железом, и алгоритмы. В первом случае отладчик применить практически невозможно,
а для алгоритмов на мой взгляд более адекватен статический анализ.