Программа работы с бытовыми навигаторами в практике геодезиста

Тема в разделе "Другие программы", создана пользователем sklimkim, 30 дек 2010.

  1. sklimkim

    sklimkim Форумчанин

    ИСПРАВЛЕНИЯ (уже!):
    Прошу прощения, в режиме без записи в файлы программа обращалась к несуществующему файлу и падала. Вот исправленный вариант:
    (Добавление)
    Здравстуйте коллега и тезка!
    Спасибо за выложенный пример. Я долго искал нечто подобное.

    Спецификацию РИНЕКС-протокола я читал и не раз, но ответов на свои вопросы не увидел.
    Ваши комментарии всегда внятны, поэтому, если не возражаете, у меня есть вопросы.

    Вот 2 блока данных:
    3 4
    000 MARKER NAME
    1 MARKER NUMBER
    2.1000 0.0000 0.0000 ANTENNA: DELTA H/E/N
    --> THIS IS THE START OF A NEW SITE <-- COMMENT
    11 5 23 8 18 51.0000000 0 10 2 16 4 20 13 7 23 30 10R83

    2 1
    --> START OF KINEMATIC DATA <-- COMMENT
    11 5 23 8 19 51.0000000 0 10 2 16 4 20 13 7 23 30 10R83

    В заголовка файла MARKER NAME=2322, а здесь MARKER NAME=000 (и далее инкрементно до 031).
    В заголовка файла MARKER NUMBER=<NONE>, а здесь MARKER NUMBER=1 (и далее инкрементно до 32).
    Это особенности программы приемника + конвертера?
    Но не это главное. Между этими блоками 60 сек. и 60 записей приемника в РИНЕКС.

    START OF A NEW SITE - это начало новой станции для РИНЕКСА?
    Последующие (до START OF KINEMATIC DATA) есть что?
    Как их понимает и что с ними должна делать программа постобработки?

    После START OF KINEMATIC DATA
    11 5 23 8 19 51.0000000 -- 11 5 23 8 23 49.0000000 без малого 4 мин измерений.
    Каждая секунда/эпоха пишет что? Некую точку на трассе из ~240 точек или что-то иное?
    Как их понимает и что с ними должна делать программа постобработки?

    РИНЕКС-строки 3 4 и 2 1 кодируют что?

    В первой строке каждой эпохи
    11 5 23 7 58 28.0000000 0 11 32 2 16 4 20 13 7 23 30 10R83
    после секунд (28.0000000) стоит 0 - я вычитал (протокол РИНЕКС), что это флаг эпохи.

    Перечитывая протокол РИНЕКС я записал себе (даже в main.c):
    EpochFlag - флaг тeкущeй эпoxи (для СТАТИКИ = 0, изменять: для КИНЕМАТИКИ = 2 для OnTheFly = 5 (при начале движения и переходе к кинематике)

    Простите великодушно за обилие вопросов. Я хочу научить свою программу правильно писать в РИНЕКС обычную топо-съемку.
     

    Вложения:

  2. sklimkim

    sklimkim Форумчанин

    Для chnav

    В приемниках на SirfStar-II и SirfStar-III бинарные данные имеют различия в представлении (и декдировании соответственно) не только для float и double, но и для integer и short integer (даже 1-байтовые данные представлены по разному - например MID-28 SincFlag).

    Вот что пришлось делать:
    void ParsingSirfStarMessages(int MessageNum)
    {
    ... ...
    dblNum = bRoll(8); // для SirfStar double и float требуется перестановка байтов
    memcpy(&dMsg, dblNum, 8);
    MID1C.PR = dMsg; // Pseudo Range (m)
    ......
    memcpy(&ucMsg, &ByteArray, 1);
    MID1C.SincFlags = ucMsg; //
    binflags = tobin(MID1C.SincFlags); // преобразовать байт в стоку битов
    strcpy(strTmp, binflags);
    ......
    }

    BYTE* bRoll(unsigned int numBytes)
    {
    unsigned char* dblNum;
    BYTE dblBytes[8];

    if (!blnSS3) // for SirfStar-II
    {
    if (numBytes == 8)
    {
    dblBytes[0] = ByteArray[i+7]; dblBytes[1] = ByteArray[i+6];
    dblBytes[2] = ByteArray[i+5]; dblBytes[3] = ByteArray[i+4];
    dblBytes[4] = ByteArray[i+3]; dblBytes[5] = ByteArray[i+2];
    dblBytes[6] = ByteArray[i+1]; dblBytes[7] = ByteArray;
    }
    if (numBytes == 4)
    {
    dblBytes[0] = ByteArray[i+3]; dblBytes[1] = ByteArray[i+2];
    dblBytes[2] = ByteArray[i+1]; dblBytes[3] = ByteArray;
    }
    if (numBytes == 2)
    {
    dblBytes[0] = ByteArray[i+1]; dblBytes[1] = ByteArray;
    }
    dblNum = dblBytes;
    return dblNum;
    }

    if (blnSS3) // for SirfStar-III
    {
    if (numBytes == 8)
    {
    dblBytes[0] = ByteArray[i+3]; dblBytes[1] = ByteArray[i+2];
    dblBytes[2] = ByteArray[i+1]; dblBytes[3] = ByteArray;
    dblBytes[4] = ByteArray[i+7]; dblBytes[5] = ByteArray[i+6];
    dblBytes[6] = ByteArray[i+5]; dblBytes[7] = ByteArray[i+4];
    }
    if (numBytes == 4)
    {
    dblBytes[0] = ByteArray[i+3]; dblBytes[1] = ByteArray[i+2];
    dblBytes[2] = ByteArray[i+1]; dblBytes[3] = ByteArray;
    }
    if (numBytes == 2)
    {
    dblBytes[0] = ByteArray[i+1]; dblBytes[1] = ByteArray;
    }
    dblNum = dblBytes;
    return dblNum;
    }
    } // End Function bRoll()

    char* tobin(BYTE b)
    {
    char res[] = " ";
    int k=0;
    for (int i = 8 - 1; i >= 0; i--, k++)
    {
    if ((b & (1 << i)) != 0)
    res[k] = '1';
    else
    res[k] = '0';
    }
    return res;
    }

    chnav ! Поправьте меня, если что не так. И еще: как интерпретировать биты из MID-28 SincFlag, не могу понять.
     
  3. sklimkim

    sklimkim Форумчанин

  4. sklimkim

    sklimkim Форумчанин

    Обновленная версия программы работы с БЫТОВЫМИ приемниками/навигаторами Garmin-SirfStar и GlobalSat-SirfStar с чипсетами SirfStar-II и SirfStar-III под ОС Windows-XP.
    Изменения/дополнения см. в файле INFO.txt
    Хотелось бы услышать и увидеть результаты полевого тестирования и даже постобработки (если получится) от геодезистов.

    P.S.
    По записи в RINEX-OBS файл информации об изменении высоты антенны (реальная необходимость при кинематической съемке) и кодировании точек, снимаемых в кинематике (а это очень привлекательно), я уже не раз задавал вопрос на этой и других конференциях. Но "знатоки" на него не захотели (не смогли?) ответить.
    Пришлось ответить самому. Посмотрите эти строки в RINEX-файлах в следующем прилагаемом LOG-архиве GNSS-Monitor2_LOG-files.zip
    Возможно я и не прав, пусть выскажутся те, кто понимает вопрос.
     

    Вложения:

  5. sklimkim

    sklimkim Форумчанин

    А это файлы-примеры работы программы GNSSmonitor2_WinXP с теми приборами, которые смог подключить.
    То есть по каждому приемнику/навигатору:
    - бинарный файл,
    - файл парсинга бинарных сообщений,
    - RINEX-OBS файл,
    - файл вычисленных геоцентрических координат точек по каждой эпохе,
    - файл усредненных геоцентрических координат для каждой кодированной точки.

    А для самых пытливых файл диалога программы с приемником (через COM-порт) - запрос/ответ в формате HTM, записанный программой Free Serial Port Monitor
    Этот файл можно посмотреть в web-браузере. В нем команды программы приемнику и ответы приемника в 16-ричном представлении. Может представлять интерес для программистов.

    P.S.
    Эти файлы ТОЛЬКО ПРИМЕРЫ. Запись велась с балкона дома - с одной стороны стена дома, с другой - деревья в листве. Поэтому спутников мало, записи "рваные".
    Те кто заинтересован и имеет возможность, запишите свои файлы в поле (желательно на точках с известными координатами в системе WGS) и опубликуйте их здесь.
     

    Вложения:

  6. fiascko

    fiascko Форумчанин

    У меня есть возможность выехать на полигон, постоять на точках с известными координатами в СК 42, но нет 2 ноутбуков. Если бы Ваша программа (конечно, я понимаю, что это трудно) была перекомпилирована на WMobile, я бы с удовольствием съездил в поле.
     
  7. sklimkim

    sklimkim Форумчанин

    Я этим сейчас и занимаюсь. Универсальной на все мобайлы пока не получается.
    Уточните версию на Вашем девайсе: Windows-2003 (v4.2), Mobille-5, Mobile-6.
     
  8. fiascko

    fiascko Форумчанин

    у меня на всех КПК-шках WM 6.
     
  9. sklimkim

    sklimkim Форумчанин

    Это версия программы для работы под ОС Win-CE/Mobile.
    Проверена работа с наладонниками под ОС 2002, 5 и 6.
    Время от старта программы до ее готовности к записи данных от 10 до 20 сек, в зависимости от модели приемника. ОСОБОЕННО критично время между стартом приемника и стартом программы. Приемник должен набрать некоторое количество данных (3d-фиксация, эфемериды спутников).
    Поэтому не стоит судорожно тыкать в кнопки, лучше подождать сообщения программы о том что все необходимые данные получены и можно нажать кнопку "ACCEPT".
    Если программа запущена, а приемник еще не "определился" в пространстве, то будет тихое завершение работы программы.
    В одном архиве с программой лежат примеры ее работы с 5 разными приемниками.

    Несколько слов о халяве.
    Не только бесплатного сыра не бывает. За все так, или иначе приходится платить.
    В данном случае платой будут (надеюсь) ваши файлы работы программы в поле, а также замечания/соображения о том, как лучше представить выходные данные для последующей их обработки. Обработки не только в программах постобработки от известных фирм, но и в некоторых самоделках принимающих данные из выходного файла координат (точек) и загружающего их в ....CAD в виде точек, полилиний (треков) и текстов-кодов точек. Тут я еще не все продумал.
    Особенно важно/интересно как представлять в RINEX файле данные съемки коды точек.
     

    Вложения:

  10. Начал тестировать kinematic на только что приобретенном б/у magellan triton 2000. Запускаю переименованием в tocopy.exe.
    Первое замечание: у всех созданных файлов дата создания 14,04,2006 и время примерно одинаковое для всех- чего не может быть.
    Второй момент: Непонятно пока почему иногда при переключении на магеланновскую программу. прибор не видит спутники. галку "переключить на nmea при выходе"поставил.
    А так спасибо. файлы собираются. У меня до базы 244 километра. Решение получается 0,5 метра большинство. Один раз получилось 1,7 метра причем количество эпох было больше чем в других файлах. Продолжаю изучать.
     
  11. Палыч

    Палыч Форумчанин

    Оффтоп
    Вставка "пятачка" ::smile24.gif:: - Нельзя ли сделать шапку этой ветки и туда сложить варианты проги, инстукции и т.д. что не рыскать по всем страницам?
     
  12. Чето ерунда получается. разница между записями с одного места в разное время достигает десятков метров. Я чето не догоняю видимо. Наверное база далеко.
    Хотя не 40 метров же разбег. Записи какието рваные получаются. Скриншот приложил. Обрабатываю в topcon tools 7.1.Записываю kinematic-ом 0.11


    (Добавление)
    На тритоне как не бился, GNSS-Monitor2 запустить не получилось.
     

    Вложения:

    • сеанс.jpg
      сеанс.jpg
      Размер файла:
      35,5 КБ
      Просмотров:
      607
  13. sklimkim

    sklimkim Форумчанин

    Палыч, я бы сделал, но не знаю как. Может-быть модератора попросим?

    Не смог "побороть" майкросовтовский крестик закрытия программы в ОС WinCE/Mobile, а еще одну кнопку для закрытия некуда вставлять. Этот крестик и заголовок главного окна по-разному ведут себя под разными ОС. Поэтому сделал 2 варианта (в основном из-за навигатора Mitac MIO C520).

    Подскажите кто знает, что делать с фазой полученной с SirfStar-II, она выдается в метрах, а в RINEX-OBS по-моему надо показывать ее в циклах. С Garmin все ясно - там фаза в циклах. Если кто надумает ответить, то пожалуйста правильную формулу пересчета, а не "блям-блям".
    Сравниваю свои файлы с файлами программы chnav и вижу разницу также в измерении DOPLER - его я пишу в PINEX таким, как в описании протокола SirfStar, а надо вероятно переводить из метров в Герцы. Может chnav прояснит ситуацию. Плохо я знаю SirfStar.

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

    Выкладываю подработанные файлы программы для ОС Win-Desktop и Win-CE/Mobile.
     

    Вложения:

  14. sklimkim

    sklimkim Форумчанин

    Отправил на форум и следом увидел ошибку. Извините, исправляю.
     

    Вложения:

  15. Отвечаю сам себе, вроде разобрался: магеланновская программа работает на скорости 9200 в nmea режиме.
    следовательно такие настройки и ставить в kinematik.- в разделе "переключить на nmea при выходе"
     
  16. sklimkim

    sklimkim Форумчанин

    О Доплере замолвите слово!

    Garmin & SirfStar-II chipsets (eTrex, GPS72, GPSMap60) Message_16 (decimal 22):
    ======================================================
    ' из DeltaPR получается Doppler=DeltaPR/Lambda, Lambda=c/L1, c=2.99792458, L1=1575420000
    Const Lambda = 0.19029367279836488047631742646405
    DeltaPR As Single ' Delta_Pseudorange_rate (m/s) - 32 bit

    и получаются доплеры такого порядка: 35000.000 Hz

    GlobalSat & SirfStar-II SirfStar-III chipsets (BT-3xx, ...) Message_1C (decimal 28):
    ======================================================
    // 1. Carrier frequency may be interpreted as the measured Doppler on the received signal.
    // The value is reported in metres per second but can be converted to hertz using the Doppler equation:
    // Doppler frequency / Carrier frequency = Velocity / Speed of light, where Doppler frequency is in Hz; Carrier frequency =
    // 1,575,420,000 Hz; Velocity is in m/s; Speed of light = 299,792,458 m/s.

    const float KDOPLER = 5.255035469; // Carrier frequency / Speed of light = 1575420000 Hz / 299792458 m/s
    if (MID1C.CountPhErr==0 && MID1C.CountLPow==0)
    Dopler[MID1C.SVID] = MID1C.C1 * KDOPLER; // Carrier-Frequency (m/Sec) --> Doppler frequency (Hz)

    и получаются доплеры несколько иного порядка: 95000.000 Hz

    Так как правильно вычислять эти доплеры, кто объяснит?

    Об эфемеридах спутников
    =================
    Эфемериды спутников В НАЧАЛЕ работы программы выдают приборы SirfStar-II и совсем не хотят выдавать их приборы SirfStar-III.
    В случае постобработки сессии (и статики и кинематики) эфемериды можно взять из интернета и тогда они не нужны в программе.
    Но если днем сделана съемка, а вечером ее надо обработать, то интернет не поможет - там еще нет данных от различных базовых станций.
    Поправки к измеренным "ровером" точкам "база" может вычислять опираясь на ТЕКУЩИЕ ЭФЕМЕРИДЫ.
    Изменение будет такое: программа после нажатия кнопки "STOP" запрашивает эфемериды, записывает их в конце бинарного файла и только потом завершает работу.
    Из приемников Garmin GPS25/35 я получал эфемериды и из них программа делала RINEX-NAV файл.
    Так нужны, или не нужны эти эфемериды?

    Об "устаревших" навигаторах
    ==========================
    Так случилось, что купил я первым навигатор Garmin GPSMap 60cx - за красоту. Хороший прибор, но никаких "сырых" данных не выдает.
    Это особенность Гармина+СирфСтара при переходе с чипсета SirfStar-II на чипсет SirfStar-III.
    Потом купил приемник Garmin GPS-35 на чипсете SirfStar-II. Его бинарный протокол совершенство для постобработки, всего 2 сообщения общим размером 300 байт.
    Но в этих байтах есть и псевдодальность и фаза и доплер, а также позиция и скорости вычисленные приемником. Но нет дисплея и входа для внешней антенны.
    Я проштудировал, что выпускает Гармин на SirfStar-II и купил навигаторы GPS-72 и eTrex Venture, а хотелось GPSMap60 (без всяких буковок).
    В первых двух нет разъема для внешней антенны. У последнего такой разъем есть, но самого навигатора нет НИГДЕ в продаже.
    Три недели назад нашел у америкосов, под рубрикой REFURBISHED (восстановленный/отремонтированный). Рискнул и купил.
    Сегодня получил и включил на тестирование. Количество спутников и уровки сигналов близко к BT-338 (SirfStar-III)
    Я не обнаружил ни царапинки ни пятнышка на корпусе, на стекле дисплея и внутри. Через 10 минут он стал выдавать сырые данные на 6-7-8-9 спутников.
    Рядом лежала внешняя антенна ANT GPS/GLONASS T-AT112 SMA-M 5M (TELCAB итал.) соединенная с GlobalSat BT-308, который находил с нее сырые данные на 3-4 спутника.
    Все это конечно первые впечатления, но они весьма приятные. Вот только найти переходник антенного кабеля SMA--на--MCX, у меня пока есть SMA--на--MMCX.
    К чему я все это? По моим наблюдениям производители бытовых навигаторов не вернутся к выдаче пользователю сырых измерений.
    Залезать внутрь прибора и искать пути разблокировки этой выдачи могут/захотят/сделают совсем немногие, а получив положительный результат скорее всего не обнародуют.
    А приборы Гармина и СирфСтар на чипах SS-II пока еще есть в продаже у очень прагматичных америкосов и китайцев. И цены на них приемлемые.
    И проработать такие приборы могут 3-5 лет. Жаль, что наши спутниковые деляги увлечены получением денежки от госструктур, транспорта и т.п.
    Поэтому дешевых приемников на 2 навигационных созвездия в близкой перспективе не видно. Американцам это надо в сослагательном наклонении.
    Европейцы никак не одолеют своего Галилея (а китайцы похоже перехватят у них частоты сделав рабочее созвездие первыми).
    То есть "Европа нам не поможет", "однозначно". Если только китайцы с корейцами не "выручат" - они успевают везде.<br><br>Тема закрыта! Продолжение в теме "Программа работы с бытовыми навигаторами в практике геодезиста - 2".
     
  17. landsurveyor

    landsurveyor Администратор. Команда форума

  18. sklimkim

    sklimkim Форумчанин

    В последние 18 месяцев у меня не было никаких программ постобработки спутниковых измерений. И только на днях нашел TopconTools-6 и GNSS-Solutions (спасибо за подсказку в старых темах В.Шуфотинскому).
    Как же я был "обрадован" тем, что мои RINEX'ы никуда не годятся. И ведь никто из читателей/писателей этой темы не сказал мне об этом. Ай-яй-яй коллеги!!!

    1. Исправлены ошибки форматирования строк в RINEX-OBS файле. Но и после этих исправлений RINEX-OBS файл "понимает" программа Topcon-Tools, а GNSS-Solutions сообщает, что формат файла неправильный.
    2. В обеих вариантах (Win-Desktop и Win-CE/Mobile) появилось наполнение окна Meassurement (Измерения). Информация в этом окне несколько различается для разных приемников (зависит от того, кто и что из них может выдать).
    3. Добавлена обработка бинарного протокола очень интересного навигатора Garmin GPSMap-60 (без всяких дополнительных букв). Он построен на чипсете SirfStar-II и оказалось, что в нем одновременно присутствуют почти все Messages навигаторов серии Garmin eTrex/GPS-72 и сообщение Message_34 полностью повторяющее Message_29 приемника Garmin GPS-25/35. Пока остановился на том, что программа будет работать с ним по набору сообщений eTrex'а, дальше будет видно.

    Примеры работы программы с разными приемниками выложу немного позже.

    Я до сих пор не знаю, как правильно обрабатывать Phase и Doppler из протокола SirfStar (MID-28). Где же знатоки, которые подскажут? Прошу помощи!

    В архиве-приложении Mobile-версия проверена только на наладоннике HP iPaq 4700 (WinCE 4.2), но должна работать и на Mobile-5.
     

    Вложения:

  19. fiascko

    fiascko Форумчанин

    Обещал я проверить программу GNSSMonitor в поле на полигоне, да не выходило никак. И вот в субботу спонтанно решил все-таки обещанное сдержать. В комплект с двумя НР 214-ми, на которые установлена GNSSMonitor, взял для проверки 2 ВТ-308 с внешними антеннами.
    Сразу результаты:
    1. Результатов нет, просто потому что ничего не было записано. Делал все, как написано в прилагающемся к програме info: write files---выбираю Sirf II----порт, скорость----жму Start----соединение вроде произошло (вроде - потому что не знал, как проверить, что соединился с приемником). Внизу в двух строках было написано : for 27 sat almanac found, for 0 sat ephemer found. Ждал-ждал, нажал Accept, и в строке даже побежали байты, т.е. по сути соединение было выполнено и принимались данные, а вот только никуда не записывались. И так я простоял около 4 часов то с одним приемником, то с другим.
    2. Уходить ни с чем из поля было бы досадно, и я записал файлы через программу kinematic (благо она была сохранена на кпк).
    3. Обработать эти файлы не удалось ни в ТГО, ни в Топкон Tools. Чуть позже выложу эти файлы и прошу помощи в обработке или поясните, почему программы не хотят их обрабатывать.
     
  20. Палыч

    Палыч Форумчанин

    Оффтоп
    А пчему не русский интерфейс программы?(ради любопытства ::biggrin24.gif:: )

    (Добавление)
    landsurveyor Сделайте пож шапку этой темы и сложить туда все варианты проги и инструкции с помощью автора.
     
  1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie.
    Скрыть объявление
  1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie.
    Скрыть объявление