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

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

  1. chnav

    chnav Форумчанин

    Все "нестандартные" прошивки базируются на API от MTK. Это нужно для того чтобы производитель приемника мог запрограммировать, default baudrate, какие лампочки будут мигать, какой порт является блутусом, а какой - USB, какие NMEA сообщения выдавать по умолчанию и с какой частотой. Этим вариации прошивок и ограничиваются.

    Почитайте gpspassion.com, если бы сырые данные в MTK были - они бы давно там всплыли, многие интересовались этим. В этом плане на MTK поставили крест более трех лет назад и ничего с тех пор не менялось.

    PS: есть обнадеживающая инфа что в четвертых сёрфах фаза не отключена, но пока что приемников на Sirf Star IV считаные единицы.
     
  2. Ладиков Павел

    Ладиков Павел Форумчанин

    Насчет "креста" - как раз я натыкался на предупреждения, что "все сказанное относится к чипам производства после 2009 года". Скорее всего что-то сильно изменилось в политике конторы. Возможно как раз с целью роста популярности. Ну да ладно, что гадать, посмотрим, как только смогу перенаправить бинарник в файл - выложу для обсуждения...

    Было бы у меня времени как в начале 90-х - я бы сам покопался в прошивочке... совсем необязательно модифицировать прошивку обращениями к документированной части фабричного API, машкод он и в африке машкод. Структуру 300-килобайтного кода изучить не так сложно, как структуру вин32, а люди и это делают...

    Насчет SirfStar IV - в новостях уже про SirfStar V объявили...
    http://www.oodo.ru/page/Tehnologii
     
  3. sklimkim

    sklimkim Форумчанин

    1. Прочитайте в скачанном и расскажите: какие КОНКРЕТНО данные выдает этот бинарный протокол (по их описанию). Присутствуют-ли в нем псевдодальность (PR) фазовые измерения, время и т.п.
    Автор chnav негативно отзывался об устройствах GPS на MTK чипсетах - как об очень упрощенной архитектуре. Попробуйте адресоваться к нему.
    2. Аккумуляторы для Acer n35
    http://www.extravolt.ru/dir_Acer_pda_sm ... attery.htm
     
  4. chnav

    chnav Форумчанин

    Поверьте, копаться в оптимизированном ARM-коде занятие не самое приятное. Win32 и ассемблер x86 - это отдых по сравнению с ARM. Пока что нам известен только один человек, активно копающийся в прошивках (прим. uBlox). Причем речь не идет об изменении кода, максимум - изменить несколько флагов-байтов-контрольных сумм, чтобы залить прошивку одного устройства в другое. Он занимается этим около 1.5-2 лет и в свое время тоже говорил "наверняка можно найти фазу в SirfStarIII и выдать её в MID28". Но к этой возможности он даже близко не подошел, хотя очевидно что фаза внутри есть и используется для сглаживания, только выключена в MID28 по маркетинговым соображениям (информация от инженера компании Sirf на форуме gpspassion). Я ни в коем случае не упрекаю этого, безусловно, очень способного человека, владеющего ARM-ассемблером и структурой прошивок. Я всего лишь даю пример что даже способные программисты-электронщики не всесильны и иногда выдвигают не очень реалистичные теории.

    "Кто-то где-то наверняка умеет декодировать/исправлять что-то в прошивках GPS" - это теория, ни разу не подтвержденная практикой.

    В новости речь о Sirf Atlas V, это абсолютно другая платформа. Сырых данных и протокола Sirf Binary в Атласах никогда не было.
     
  5. Ладиков Павел

    Ладиков Павел Форумчанин

    Спасибо огромное за ссылочку, контора кажется неплохая.
    Насчет упрощенной архитектуры - вполне возможно, хотя "упрощенность" может быть аппаратной а может быть и программной. В любом случае я много не теряю.
    Еще мне интересно провести исследования на стабильность показаний в навигационном режиме. По протоколу NMEA0183 хочу закатать с секундными интервалами два трека с неподвижных точек наблюдения двухсуточной длительности. Одно наблюдение с балкона своего третьего этажа многоэтажки примерно на расстоянии 1 м от балкона (фактически приемник получит четверть небесной сферы и сильные отражения от стены), а второе уже с крыши девятиэтаги с практически полностью открытым небом. А потом составлю посекундную диаграмму расстояний от среднеарифметического значения.
    А уже после этого займусь бинарником. Если получится дойти до получения RINEX, у меня имеется пара геодезических приемников Magellan ProMark3 и у меня будет хорошая возможность провести сравнительные испытания на точность дифференциальной съемки обоими комплектами приемников.
     
  6. fiascko

    fiascko Форумчанин

    делал я аналогичное на приемниках GlobalSat BT-359 И на навигаторе Magellan Triton 500. Средняя квадратическая погрешность при этом составляла от 1 до 3,5 метров (чистое поле), в квартире на 1ом этаже, при этом перед окном каштаны растут, скп была больше примерно в 1,5-2 раза.
     
  7. Ладиков Павел

    Ладиков Павел Форумчанин

    Я бы на его месте искал не места хранения контрольных сумм, а функции их проверки - чтобы их отключить. А уже потом спокойно курочить код, не трепыхаясь с подгоном контрольных сумм, поскольку в хорошо защищенном коде этих проверок может быть много и по разным диапазонам адресов. А настоящее веселье начинается, когда контрольная сумма сама попадает в контролируемый диапазон... 8)
    Конечно обработка допплеровско-тригонометрической математики по 66 каналам одновременно - это явно не для кустаря-одиночки с дизассемблером. Можно поискать функции формирования выходных данных на предмет неиспользуемых форматов, и не более. С одной стороны - фирмваре формируется компилятором, а функции отключаются на уровне языка высокого уровня - значит в машкод уже не попадает то что отключено. С другой стороны - даже программа на языке высокого уровня должна быть хорошо структурирована и вряд ли отключение затронет код, непосредственно получающий данные измерений. Это рискованно в смысле последствий уже после завершения програмистской отладки кода.
    Если я и полезу в код (что маловероятно), то постараюсь автоматизировать анализ кода, это облегчит задачу.
     
  8. SKlimkin пишет:
    Существуют задачи ГИС-класса, где вычисленное плановое положение снятых точек может
    отличаться от истинного на 1-2-... метров. Площадная топо-съемка может оказаться
    такой задачей. В строительстве (где всегда "давай-давай и побыстрее) прикидочные
    выносы проектных элементов в натуру (особливо "в чистом поле) могут иметь место.


    Что касается строительства то применение бытовых Gps приемников может быть при выносе
    колодцев канализации. Геодезические работы в строительстве определяются СНиП 3.01.03-84,
    в нем довольно высокие требования. Но строительным работам предшествуют изыскательские
    работы, которые опреляются "Инструкцией по топографо-геодезическому и навигационному
    обеспечению геологоразведочных работ" от 3.12.1996г, где законодательно разрешено приме
    нение GPS приемников и самого нижшего класса точности, так как точность определение устьев
    скважин в масштабе 1:5000 и выше - 2м. в плане и 0.5м по высоте. (См. пункт 2.5.1. табл. 2.1).

    Да, что касется программы GNSSMonitor, проверил 1 пункт SirfTech и GNSSMonitor и соответсвенно
    на выходе: X= 6334143.29 Y= 3687665.62 Z= 336.13

    X= 1711224.O Y= 3 043632.0 Z= 5319952.0
     
  9. sklimkim

    sklimkim Форумчанин

    Это интересная возможность. Будем ждать результатов.
    (Добавление)
    У меня вот такие циферки бегут (Москва):
    ROVER
    TOW 242331.00001859
    B 55.65297012 L 37.56813771 H 236.248
    X 2858973.426 Y 2199174.209 Z 5242947.060
    TOW 242332.00001887
    B 55.65296957 L 37.56813662 H 236.248
    X 2858973.508 Y 2199174.186 Z 5242947.025

    А вот как выглядит пересчет из B,L,H в X,Y,Z:
    Код:
    void LLH2XYZ(void)  // это ф-ция географ. --> геоцентр. координаты WGS-84
    {
     double a, f, a_WGS84, f_WGS84;
     double e2, N, temp;
     double ellip[2] = {0,0};  // double ellip[2] = {-251.0, -0.14192702};  Hayford (European)
     // Преобразование геодезических координат в прямоугольные пространственные координаты по формулам:
     a_WGS84 = 6378137; f_WGS84 = 1 / 298.257223563;
     a = a_WGS84 - ellip[0];  // a - большая полуось эллипсоида (м)
     f = f_WGS84 - ellip[1]*1e-4;  // alfa - сжатие эллипсоида
     e2 = f*(2-f);  // e^2=2alfa-alfa^2=alfa*(2-alfa)
     N = a / sqrt(1 - e2 * sin(M33.Lat) * sin(M33.Lat));  // N=a/SQRT(1-e^2*(sinB)^2))
     temp = (N + recLLH.llh[2]) * cos(M33.Lat);  // (N+H)*cosB
    
     recLLH.xyz[0] = temp * cos(M33.Lon);  // X=(N+H)*cosB*cosL
     recLLH.xyz[1] = temp * sin(M33.Lon);  // Y=(N+H)*cosB*sinL
     recLLH.xyz[2] = (N * (1 - e2) + recLLH.llh[2]) * sin(M33.Lat);  // Z=((1-e^2)*N+H)*sinB
    }  //  End Function LLH2XYZ()
    
    Если что не так, подсказывайте.
    Мне кажется (в SirfTech) Z= 336.13 есть Altitude т.е. высота над эллипсоидом.
     
  10. SKlimkin пишет:
    Если что не так, подсказывайте.
    Мне кажется (в SirfTech) Z= 336.13 есть Altitude т.е. высота над эллипсоидом.

    Ваши прямоугольные координаты верны. Вычеслены в правой декартовой геоцентрической системе координат WGS84. В SirfTech вычеслены в левой. Я бы не спрашивал, если бы
    была индикация B,L,H. Но ее нет, только прямоугольные. Да Z это H(Altitude).
     
  11. sklimkim

    sklimkim Форумчанин

    Отсутствие/присутствие B,L,H связано вот с чем:
    1. Программа работает с приборами имеюшими разные бинарные протоколы (да еще и с разными наборами бинарных сообщений для разных моделей в одном протоколе)
    2. Гармины выдают готовые решения в виде B,L,H а Сирфы в виде X,Y,Z
    3. В случае работы с Гарминами B,L,H пересчитывается в X,Y,Z и выводятся оба представления координат. В случае работы с Сирфами обратный пересчет не выполняется и выводятся уже посчитанные Сирфом X,Y,Z а поля B,L,H имеют нули.
    4. Мне думается, что для практического использования X,Y,Z более предпочтительны, чем B,L,H (смотрите мой предыдущий пост на 2-й странице этой темы).
    5. Хочу съэкономить вычислительные ресурсы для работы программы в наладонниках - все же в них ARM-процессоры и количество оперативной памяти заметно слабее-меньше, чем в десктопах и ноутбуках. В течение секунды (таймер соответствует темпу выдачи данных из приемника) надо выполнить весь цикл вычислений для текущей эпохи. А в случае (пусть пока гипотетическом) приема и обработки поправок от базы, программа+наладонник имеют шанс "захлебнуться".

    Для справки прилагаю фрагмент кода программы с описанием структур данных бинарных сообщений Гармина и Сирфа (это некоторые месседжи, которые обрабатываются программой и некоторые, которые не обрабатывются, но могут представлять интерес в дальнейшем). Вы увидите, что приходится ставить с одну упряжку "коня и трепетную лань".
    P.S. Если вместо кириллицы в строках комментов будут "кракозябры", то это потому что посылаю из Линукса (CP UTF8), а текст программы делался в Вмндовс (CP-1251).
     

    Вложения:

    • messages.tar.gz
      Размер файла:
      8,2 КБ
      Просмотров:
      43
  12. SKlimkin
    Проанализировал файл Dopler: В програме from chnav - Kinematic2_MobileApp
    похоже как и должно быть. В ней установлено ограничение по величене сигнала,
    поэтому Dopler в пределах +-3000.0.
    Dopler вычисляется: Carrier-Frequency(m/sec)из Mid28*KDopler(1/m) - Clock Drift(Hz)из Mid7.
    C вашими данными из Program from S.Klimkin GNSS-Monitor2 и (BT-308 SirfStar-II) согласен по 1 и 3
    столбцам. Только из них необходимо вычесть поправки: из величин 3 столбца надо вычесть Clock Drift(Hz)из Mid7,
    в первом столбце Pseudo Range(m) из Mid28 - Clock Bias(sec) из Mid7 * C(скорость света)(m/sec).
    Clock Bias необходимо перевести из наносекунд в секунды (1 наносекунда = 10* -9 сек.= 0.000000001сек).
    Со 2 столбцом из 3 примера надо поискать информацию.

    Жаль, что не выводится B,L,H, придется пользоваться двумя программами в связке с Phgeocale c racurs.ru.
    Проверил kinematic на WM6.1 - запускается, но при нажатие на conect пишет в ошибках - системная ошибка.
     
  13. SKlimkin:

    Посмотрел файл massege.txt. В нем есть Mid41 c B,L,H в SirfStar-II and SirfStar-III Messages.
    Нельзя ли их вывести на индикацию.
     
  14. sklimkim

    sklimkim Форумчанин

    Я подумаю об этом. Но обратите внимание вот на что:
    1. из приведенного кода видно, что я закомментировал MID-41 (0x29), это потому что программно выключаю посылку приборами СирфСтар этого сообщения. Оно слишком большое по размеру и содержит все то, что Вы получите работая в NMEA-протоколе. Т.е. это - типичное навигационное сообщение.
    2. СирфСтар выдает координаты X,Y,Z округленные до метров и B,L,H обрезанные до 7-го знака после запятой. И то и другое СирфСтар выдает как длинное целое, т.е. размером 32 бита (4 байта). Гармины выдают B,L как double размером в 64 бита (8 байтов) и H как float размером 32 бита (4 байта). Почуствуйте разницу.
    3. Конечно мы не знаем, что стоит за целочисленными преобразоваиями/вычислениями у СирфСтара и что за double натуральными числами у Гармина. Скорее всего у обоих одно и то же, ведь чипсеты во всех приборах SirfStar-II или SirfStar-III. Но психология вещь загадочная. Мне гораздо приятнее видеть и работать с координатами вида 2858973.508, чем с 2858974 - и никаких долей метра.
    4. Программное преобразование типов даннх (кастинг) во всех языках программирования довольно накладная функция ( а надо long integer преобразовывать в double).

    Поэтому у меня к Вам вопрос: для чего нужны B,L,H и так-ли они небходимы, если конечная "продукция" программы RINEX-файл измерений, а файлы с вычисленными прибором координатами второй (почти побочный) ее продукт ?

    Координаты X,Y,Z можно (как я уже докладывал) без особых проблем "загонять" в ....КАД (их отличиями от плоских прямоугольных ЗАЧАСТУЮ можно пренебречь), а с координатами B,L,H еще придется "манипулировать". Это я продумал как геодезист для геодезистов, которые может быть воспользуются этой возможностью программы.

    Посмотрите вот это, может быть будет полезно:
    http://geodesist.ru/forum/printfile.php ... t=266&id=1
    http://geodesist.ru/forum/printfile.php ... t=185&id=1

    Экселем располагают многие и воспользоваться моей экселевской таблицей, или переделать ее для несколько иных нужд, не очень сложно.
    Использование нескольких (а не одной) программ в процессе обработки данных от поля до готового чертежа-плана - обычная картина. Мало кто выполняет всю цепочку, пользуясь ТОЛЬКО LeicaGeoOfice или TopconTools, или Trimble.... и тому подобными "офисами".
    У нас например это выглядит так (для топосъемки/исполнит.съемки): Sokkia-Prolink->CredoDAT->CredoTER(MIX)->....КАД.

    P.S. Седьмой знак после запятой (для B,L) это кажется около 1 сантиметра на экваторе. Тогда почему же X,Y,Z в целых метрах? Вот цена "черных ящиков" ("blackbox") в буржуйском "проприетарном" творчестве. Ничего нельзя проверить.
    Фирма "Рога и Копыта" продает товарищу Пупкину замечательную коробочку, заглянуть в которую он не имеет никакого права (это "застолбили" законами). При этом фирма пишет в своем меморандуме, что ни за какие последствия в случае ошибок (ее ошибок) она ответсвенности не несет.
    Не буду отставать: моя программа и я вместе с ней также ни за что не несем ответственности. Это только исследование и эксперимент.
     
  15. SKlimkin:
    По Dopler: В 3 примере во 2 столбце может быть, это дробная часть фазы. Она выведена из:
    // Position Record 0x38

    unsigned long c_phase; // дpoбнaя чacть фaзы

    но ниже есть еще:

    unsigned long int_phase; // цeлaя чacть фaзы

    закоментируйте 1 строку, если будут выводится нули или мусор - конвертор не находит второй строки.

    Ниже я привожу часть файла, где L1 и L2 дробные части фазы.



    2.11 OBSERVATION DATA G (GPS) RINEX VERSION / TYPE
    teqc 2010Oct21 -Unknown- 20110207 11:11:34UTCPGM / RUN BY / DATE
    MSXP|IAx86-PII|bcc32 5.0|MSWin95->XP|486/DX+ COMMENT
    VCH0 MARKER NAME
    VCH0 MARKER NUMBER
    -Unknown- -Unknown- OBSERVER / AGENCY
    2240 TRIMBLE 4000ST NP 4.83 / SP 1.15 REC # / TYPE / VERS
    -2147483648 -Unknown- ANT # / TYPE
    -3067356.9247 3406283.6899 4420361.8906 APPROX POSITION XYZ
    1.1000 0.0000 0.0000 ANTENNA: DELTA H/E/N
    1 1 WAVELENGTH FACT L1/2
    7 L1 L2 C1 P2 P1 S1 S2 # / TYPES OF OBSERV
    13 LEAP SECONDS
    SNR is mapped to RINEX snr flag value [1-9] COMMENT
    L1: 3 -> 1; 8 -> 5; 40 -> 9 COMMENT
    L2: 1 -> 1; 5 -> 5; 60 -> 9 COMMENT
    2001 8 20 1 59 45.0000000 GPS TIME OF FIRST OBS
    END OF HEADER

    01 8 20 2 0 0.0000000 0 6G26G24G27G06G08G10
    -44539.158 7 -34705.75721 20913841.938
    22.250 1.219
    31413.939 6 24478.67421 21906990.555
    19.000 0.750
    14007.255 3 10914.93121 23795066.898
    6.750 0.344
    6126.854 5 4774.62121 23032102.422
    8.750 0.500
    -11095.196 6 -8645.30421 22136095.195
    15.250 0.594
    1147.547 7 20529215.211
    25.750


    В MID 38 можно оставить не закоментированными B,L,H. Но мне не это не особо нужно.
    Приходится ездить по области и ориетироваться по карте, когда не у кого спросить.
     
  16. Привожу еще одну инструкцию, на топогеодезические работы:

    ИНСТРУКЦИЯ
    ПО РАЗВИТИЮ СЪЕМОЧНОГО
    ОБОСНОВАНИЯ И СЪЕМКЕ
    СИТУАЦИИ И РЕЛЬЕФА
    С ПРИМЕНЕНИЕМ ГЛОБАЛЬНЫХ
    НАВИГАЦИОННЫ Х СПУТНИКОВЫХ
    СИСТЕМ ГЛОН АСС И GPS

    ГКИНП (ОНТА)- 02 -262 -02

    Обязательны д л я исполнения всеми субъектами
    геодезической и картографической деятельности

    Москва

    Ц Н ИИГАи К

    2002
     
  17. Ладиков Павел

    Ладиков Павел Форумчанин

    Промежуточный отчетик по моему нафигатору, пока что только по железячной части.
    Я пока собрал одну коробочку с модулем Wonde Proud M4125P на чипе MTK MT3329, пришлось немножко попаять, чтобы обеспечить нужные напряжения и уровни сигналов, но все заработало четко. Пока в NMEA0183.

    COM-порт с моими "преобразованиями уровней" TTL - RS-232 работает на кабеле UTP 5 категории длиной 15 метров (мне нужно будет 30 метров) очень уверенно на скорости 57600 бпс. На скорости 115200 данные перестают приниматься от приемника, но сам приемник получает команды без ошибок - возвращение на низкие скорости проходит четко.
    В режиме NMEA0183 с частотой обновления данных 5 гц на скорости 38400 с пятью используемыми спутниками загрузка пропускной способности порта составляет примерно 65%.
    Я пока прилепил коробочку на карниз балкона, стеной многоэтажки отсечена половина полусферы от оставшейся части довольно много горизонта съедают соседние многоэтаги, тем не менее стандартно ловится этим чипом от 5 до 8 спутников одновременно, при этой затененности погрешность определения координат составляет около 7-15 метров.

    Родная версия фирмваре была AXN_1.10 0000 (в документации она обозначена как v 1.1), я перепрошил ту, которую скачал с американского форума AXN_1.30 2389 (v 1.6, про которую написано, что у нее хорошие бинарные данные).
    После прошивки заметно изменилось поведение выходных координат - они практически перестали прыгать, как это было у меня на КПК Acer n35 с чипом Sirf II, стали показывать очень стабильно статическую точку, смещаясь за минуту на десяток-два сантиметров.

    Собсстно следующий этап - надо делать свою программулину для обмена данными в бинарном режиме и управления этим чипом. Программками для Sirf и для GeoS-1M поток NMEA принимается, но первая прога его принимает в окно "debug" и не использует в работе, а вторая прога работает с ними полноценно. Картографическая программа SAS.Planet нормально принимает эти данные, собстно NMEA стандарт и должен пниниматься нормально.

    [​IMG]

    [​IMG]

    [​IMG]
     
  18. chnav

    chnav Форумчанин

    Ладиков Павел

    Какова конечная цель ваших экспериментов - получить готовые координаты с частотой 5 герц, чтобы порт работал без сильной загрузки на длинное расстояние ? Тогда вам нужно было купить пару преобразователей уровней для токового интерфейса RS-422.

    Токовый интерфейс работает до 100м с высокими baudrate и витая пара для него - мать родная ! Например такие (4.5$ с бесплатной доставкой в Россию):
    http://www.ebay.com/itm/RS-232-RS-422-C ... 3f0cb0e142
    Но лучше выбрать адапторы подороже т.к. в этих дешевых обычно при вскрытии обнаруживается ручная пайка на коленке. Также есть готовые конвертеры TTL-RS422, т.е. вам ничего паять не надо.

    GPS-приемник -> адаптор RS232 (или TTL) to RS422 -> кабель витая пара 30м -> адаптор RS422 to RS232(или TTL) -> компьютер


    Итого варианты для передачи данных по последовательному порту, по кабелю на длинное расстояние:

    1. Правильный: длинный кабель и передача данных с высоким Baudrate по интерфейсу RS-422; главный плюс - сохраняется стандартный формат данных;
    2. Временный: нестандартно длинный кабель (ибо по стандарту RS232 оговорено метров десять-пятнадцать в зависимости от Baudrate), в результате сознательное занижение baudrate (чтобы фронты импульсов не размазывались), как следствие ограничение пропускной способности, как следствие необходимость колхозить с нестандартными прошивками и передавать координаты в сжатом (бинарном) нестандартном формате... И никакой гарантии что связь будет устойчивой когда рядом появятся сильные наводки.

    PS: если вы всё-таки надеетесь получить сырые данные из МТК - я вам сразу сказал что не получится.
     
  19. Ладиков Павел

    Ладиков Павел Форумчанин

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

    Что касается МТК - не получится, закажу другие модули, скажем Геос-1М. На их бинарник даже документация имеется. Сначала конечно надо проверить если там все нужные данные.
    Альтернатива какая? Чипы от тримбл - там обвеска нужна, кварц, внешняя антенна. Я не хочу с этим возиться. Посмотрим, главное начать 8)))
     
  20. Ладиков Павел
    Что касается МТК - не получится, закажу другие модули, скажем Геос-1М. На их бинарник даже документация имеется. Сначала конечно надо проверить если там все нужные данные.
    Альтернатива какая?

    Посмотри страничку: http://homepage2.nifty.com/k8/gps/, программу MTK GPS Logger download Utility. На сайте Устинова нашел: http:/ ustinov.fr/forum/viewforum.php?f=49.
     
  1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie.
    Скрыть объявление
  1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie.
    Скрыть объявление