Добро пожаловать!

Войдите или зарегистрируйтесь сейчас!

Войти

Как работает NTRIP протокол

Тема в разделе "GNSS-измерения", создана пользователем Илья Вялков, 26 июл 2017.

  1. Илья Вялков

    Форумчанин

    Регистрация:
    1 июл 2013
    Сообщения:
    104
    Симпатии:
    62
    Адрес:
    Кипр
    Занимаясь поддержкой онлайнового NTRIP кастера, я столкнулся с тем, что у пользователей возникают сложности с передачей поправок от базы к роверу. В основном они связаны с тем, что у них нет полной картины взаимодействия приемников на транспортном уровне .

    Screen Shot 2017-07-26 at 16.21.37.png
    Как же технически это происходит? Кастер это сервер, который подключен к интернету, он расположен по определенному IP адресу и слушает определенный порт, ожидая входящего соединения. Например это может быть 111.111.111.111 порт 2101. Сервер отправляет на кастер запрос на соединение:

    Код:
    POST /ExampleMountpoint HTTP/1.1
    Host: ntrip.example.com
    Ntrip-Version: Ntrip/2.0
    Authorization: Basic bnRyaXA6c2VjcmV0
    User-Agent: NTRIP ExampleServer/2.0
    Connection: close 
    Из данного запроса видно, что сервер хочет передавать данные для точки доступа под названием ExampleMountpoint. Версия NTRIP протокола 2. Сервер использует простую авторизацию и передает имя пользователя и пароль в кодировке BASE64

    Получив такой запрос, кастер проверяет, есть ли у него в базе данных точка доступа с именем ExampleMountpoint и подходят ли к ней имя пользователя и пароль.

    В случае успеха, кастер отвечает серверу:

    Код:
    HTTP/1.1 200 OK
    
Ntrip-Version: Ntrip/2.0
    
Server: NTRIP ExampleCaster/2.0
    Date: Tue, 01 Jan 2008 14:08:15 GMT
    Connection: close
    Сервер, получив ответ что все ОК, начинает передавать уже непосредственно спутниковые данные.

    Таким образом серверное соединение установлено. Теперь уже клиенту нужно подключиться к кастеру, чтобы получить данные передаваемые сервером. Клиент посылает на тот же адрес и тот же порт следующий запрос:

    Код:
    GET /ExampleMountpoint HTTP/1.1
    Host: ntrip.example.com
    Ntrip-Version: Ntrip/2.0
User-Agent: NTRIP ExampleClient/2.0
    Authorization: Basic bnRyaXA6c2VjcmV0
    Connection: close
    Кастер проверяет, что точка доступа ExampleMountpoint существует и активна. Проверяет логин и пароль пользователя. И отвечает что все нормально:

    Код:
    HTTP/1.1 200 OK
    
Ntrip-Version: Ntrip/2.0
    Server: NTRIP ExampleCaster/2.0
    
Date: Tue, 01 Jan 2008 14:08:15 GMT
    
Connection: close

    Content-Type: gnss/data
    Сразу за этим ответом, кастер начинает передачу спутниковых данных полученных от сервера. Таким нехитрым образом удается установить соединение базы с ровером.
     
    #1
    Иоан4, uriygr, Passenger и ещё 1-му нравится это.
  2. igor kruchkovskiy

    Форумчанин

    Регистрация:
    10 июн 2012
    Сообщения:
    3.423
    Симпатии:
    1.824
    Адрес:
    Астрахань
    Добавлю, что NTRIP Сервер, это компьютер доступный в любом виде:телефон, стационарный ПК,Rasppbery Pi, контроллер GNSS, GPS, роутер, микроконтроллер, и.д.,при условии, что на нем есть возможность подключиться к базовой станции через последовательный COM порт(так называемый rs232 интерфейс или его версия с TTL уровнями сигнала), или через блютус или блютуз адаптер используя профиль SPP.Например в случае с приемником Trimble 5700 подключаем компьютер к 3-му порту.Следует иметь ввиду, что для Вашей версии операционной системы компьютера должна быть доступна программа NTRIP сервер, в случае с микроконтроллером соответствующая прошивка.Подключение к сети Интернет обязательно.
    NTRIP Клиент-это как правило контроллер ровера, с выходом интернет.Управление NTRIP клиентом, содержит в себе ПО контроллера, которое используется для приемника.
    NTRIP Кастер-это удаленный компьютер-сервер( скорее всего и не один, что дает преимущество при сбое одного из них) с соответствующим ПО,управляет которым организации занимающиеся управлением сети интернет, организатор данного сервиса, который арендовал виртуальный сервер и установил туда программное обеспечение NTRIP Кастер.
     
    #2
    Илья Вялков, Passenger и Alex_Red нравится это.
  3. Passenger

    Форумчанин

    Регистрация:
    29 июл 2013
    Сообщения:
    160
    Симпатии:
    50
    Интересно а можно подключиться к ntrip с помощью GSM/GPRS модуля+arduino? Почитал несколько статей про GSM модемы, настраиваю модуль с помощью АТ команд, соединяюсь с сервером командой at+cipstart="TCP","95.85.53.176","2101". А дальше не понятно что делать, как отправить точку доступа и пароль? И как потом начать отправлять поправки на мою точку доступа? Поправки будут считываться с ком порта ардуино и передаваться в GSM модуль (по этой части вопроса нет).
     
    #3
  4. igor kruchkovskiy

    Форумчанин

    Регистрация:
    10 июн 2012
    Сообщения:
    3.423
    Симпатии:
    1.824
    Адрес:
    Астрахань
    Думаю да,если есть такая прошивка на микроконтроллер AVR.Если же нет, то придется писать самому, нужно освоить программирование микроконтроллеров, управление модемом с помощью АТ-команд, изучить некоторые сетевые технологии для передачи текстового потока данных на сервер по IP_адресу: и номерeу порта.Самое интересное, что многие GSM модули уже обладают встроенной поддержкой протоколов и всякой нужной лабуды для решения подобной задачи, то есть ардуино можно исключить из этой связки. Единственный минус такого подхода, что среда разработки может быть платной и по ней нет такого количества книг как по ардуино, то есть осваивать намного сложней будет.
     
    #4
  5. Илья Вялков

    Форумчанин

    Регистрация:
    1 июл 2013
    Сообщения:
    104
    Симпатии:
    62
    Адрес:
    Кипр
    Код:
    POST /ExampleMountpoint HTTP/1.1
    Host: ntrip.example.com
    Ntrip-Version: Ntrip/2.0
    Authorization: Basic bnRyaXA6c2VjcmV0
    User-Agent: NTRIP ExampleServer/2.0
    Connection: close
    ExampleMountpoint - ваша точка доступа
    bnRyaXA6c2VjcmV0 - логин и прароль зашифрованный по алгоритму base64 в формате login:password
    и не забудьте переносы строки "\r\n", в конце должна быть пустая строка
     
    #5
  6. igor kruchkovskiy

    Форумчанин

    Регистрация:
    10 июн 2012
    Сообщения:
    3.423
    Симпатии:
    1.824
    Адрес:
    Астрахань
    Походу если нет поддержки base64, тогда ручками шифровать нужно.
    --- Сообщения объединены, 15 авг 2017, Оригинальное время сообщения: 15 авг 2017 ---
    Принимать строки из ком порта и отправлять их на ip_адрес:номер_порта кастера по TCP/IP или по UDP протоколу в зависимости от того, что использует сервер.
     
    #6
  7. Passenger

    Форумчанин

    Регистрация:
    29 июл 2013
    Сообщения:
    160
    Симпатии:
    50
    В ардуино есть библиотеки для работы с base64, думаю вопрос решится.

    Спасибо, буду пробовать. А такой запрос подходит для всех NTRIP или только для вашего?
     
    #7
  8. igor kruchkovskiy

    Форумчанин

    Регистрация:
    10 июн 2012
    Сообщения:
    3.423
    Симпатии:
    1.824
    Адрес:
    Астрахань
    Если я не ошибаюсь, он стандартный.
    http://smartnet-ru.com/opisanie-protokola-ntrip_949.htm
     
    #8
  9. Илья Вялков

    Форумчанин

    Регистрация:
    1 июл 2013
    Сообщения:
    104
    Симпатии:
    62
    Адрес:
    Кипр
    Это запрос по стандарту NTRIP 2
    По стандарту NTRIP 1, запрос будет немного другим:
    Код:
    SOURCE letmein /Mountpoint 
    Source-Agent: NTRIP NtripServerCMD/1.0
    где letmein пароль, а Mountpoint название точки доступа.
     
    #9
  10. winnie93

    Регистрация:
    23 окт 2019
    Сообщения:
    1
    Симпатии:
    1
    Сделал 2 модема на основе STM32f042 и модуля SIM800C. После отладки все заработало. Спасибо. Отправка и прием работают хорошо, по крайней мере за небольшой период наблюдений. Тяжело найти было информацию по организации подключения к NTRIP серверу. На официальном сайте rtcm документ по ntrip 2.0 стоит 200+ долларов. Уже отчаялся что придется покупать, но тут наткнулся на этот пост 3х летней давности)
     
    #10
    Land Surveyor 16 нравится это.
  11. Илья Вялков

    Форумчанин

    Регистрация:
    1 июл 2013
    Сообщения:
    104
    Симпатии:
    62
    Адрес:
    Кипр
    Я тут недавно обновил YCServer, он по прежнему глючный и страшный но вроде иногда работает. Теперь он позволяет делать такой трюк:
    base -> bluetooth -> android -> internet -> android -> bluetooth - rover
    роверов может быть много

    https://play.google.com/store/apps/details?id=com.youcors.ycserver
     
    #11
    Палыч и igor kruchkovskiy нравится это.
  12. recrut top

    Форумчанин

    Регистрация:
    29 авг 2012
    Сообщения:
    59
    Симпатии:
    36
    А нету ли у Вас такой программулины на WM ?
    А то контролеров полно с GSM а решения для передачи на NTRIP кастер со стареньких приемников нет.
    Конечно устройства на Андроиде доступны, но в морозы долго не работают , колхозить с проводами приходится.
    (достаточно функции NTRIP server )
     
    #12
  13. Илья Вялков

    Форумчанин

    Регистрация:
    1 июл 2013
    Сообщения:
    104
    Симпатии:
    62
    Адрес:
    Кипр
    К сожалению нет. Не умею я в WM.
     
    #13
  14. Алексей757

    Регистрация:
    18 сен 2018
    Сообщения:
    1
    Симпатии:
    0
    Уровень знаний, который дал мне университет, не позволяет понять почти ничего из того о чем вы общаетесь... Закончил называется с красным дипломом...
     
    #14
  15. Илья Вялков

    Форумчанин

    Регистрация:
    1 июл 2013
    Сообщения:
    104
    Симпатии:
    62
    Адрес:
    Кипр
    Тут про программирование больше, чем про геодезию :-)
     
    #15

Поделиться этой страницей

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