Подтвердить что ты не робот

GPS: Как работает инъекция времени NTP

Недавно я узнал о файле gps.conf в каталоге /system/etc/. Кажется, что настройка значений NTP_SERVER для серверов NTP ближе к обычному местоположению улучшает TTFF.

Чтение исходного кода в классе LocationProvider, кажется, что при загрузке время извлекается с сервера NTP и "впрыскивается" в вычислениях. AFAIK каждый GPS-сит имеет очень точные атомные часы, и каждый в созвездии синхронизируется с так называемым "временем GPS". Когда приемник имеет 4 или более спутника, он решает (каким-то способом) уравнение, в котором есть четыре неизвестных: x, y, z, b; где (x, y, z) - местоположение приемника, а b - разность во времени между внутренними часами приемника и (правильным) временем GPS. Как только у него есть исправление, часы приемника синхронизируются с правильным временем. (Пожалуйста, поправьте меня, если я ошибаюсь).

До сих пор у меня есть некоторые вопросы относительно того, как работает инъекция времени NTP:

  • Время GPS примерно равно TAI (International Atomic Time) плюс смещение. Эти два раза не зависят от вращения Земли, однако UTC делает это. Учитывая, что серверы NTP возвращают время UTC, можно определить время GPS от UTC?
  • Как восстановить время NTP от более близкого сервера, улучшить "качество" приближения GPS-времени?
  • Предполагая, что у нас есть начальное значение GPS-времени (как это было сделано из времени NTP), что такое инъекция? Правильно ли это значение времени для решения уравнения только с x, y, z как неизвестными? Если это так, то первое исправление также является просто приближением, не так ли?
  • Как более качественное начальное приближение для времени GPS улучшает TTFF? Это потому, что при более низком качестве NTP-времени первые исправления считаются неприемлемыми и отбрасываются?
  • Имеет ли приблизительное начальное положение получение следующего правильного исправления (например, прослушивание только подмножества сатов)?
4b9b3361

Ответ 1

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

  • Да, вы можете вывести время GPS из UTC. Вам просто нужно знать смещение, которое передается каждые 15 секунд и изменяется примерно через 18 месяцев. Источник: Wikipedia

  • NTP не дает вам точное время. Он измеряет сообщение времени от клиента к серверу и время ответа от сервера к клиенту. Эти времена затем используются для расчета задержки соединения. Затем применяется в качестве смещения к полученному времени. Это работает для симметричных маршрутов. Если маршруты являются ассиметричными, возникает ошибка. Настолько ближе сервер, опустите шанс и уровень assymetry, таким образом, уменьшите ошибку. Источник: Wikipedia снова

  • Сигнал NTP напрямую не используется для получения исправления GPS. Но для точного исправления вам нужны очень точные часы. Мы говорим о наносекундах здесь. Спутники GPS действительно передают текущее время GPS, но даже при движении по скорости света происходит некоторая задержка. GPS-приемник не имеет возможности узнать, что такое задержка, поэтому он должен приближаться к нескольким принятым сигналам. С каждой переданной передачей часы становятся более точными. Таким образом, чем лучше у вас есть в начале, тем меньше времени вы должны получать, чтобы иметь точные часы. Источник: Wikipedia

  • Хорошо в значительной степени объяснено в 3. - более низкая тактовая частота меньше сигналов, необходимых для приближения правильного времени.

  • Я мало догадываюсь здесь, но приблизительное местоположение может помочь вам лучше приблизиться к расстоянию от спутника и, следовательно, к задержке. (Не уверен, что это действительно используется.)

Я надеюсь, что это будет хоть немного немного, -)

Ответ 2

Мой ответ будет больше посвящен стороне NTP вашего вопроса. Для GPS я изучил этот PDF-документ, упомянутый в комментарии mirabilos.

В соответствии с этим документом для теплого старта GPS-приемника вам нужно знать время в пределах 20 с, положение в пределах 100 км, скорость в пределах 25 м/с и данные альманаха в большинстве недель. Вам по-прежнему необходимо загружать данные эфемеридов с каждого спутника, который занимает от 30 секунд до 3 минут на основе типа приемника GPS.

Для горячего старта вам также нужны эфемеридные данные (они действительны в течение 4 часов). Они также доступны через A-GPS (см. Ниже).

Протокол NTP использует иерархию серверов, начиная с исходного источника времени - GPS, атомных часов,... Это называется источником stratum-0. Сервер NTP, напрямую подключенный к этому источнику, называется stratum-1. Сервер, использующий это как его восходящий сервер, является stratum-2 и так далее. Вам необходимо специальное настроенное оборудование для достижения ошибки менее 1 мс даже для серверов stratum-1 (из-за задержек прерывания процессора, задержек в последовательном порту, изменения температурного осциллятора).

При нормальной HW на обычной сети (например, не насыщенная линия DSL) вы можете достичь точности около 10 мс. Например, NTP пул считает свои серверы действительными и достаточно хорошими, если они имеют точное время в пределах 100 мс. Точность времени от NTP не зависит от географического положения между вами и сервером NTP, но больше о страте, качестве этого сервера и о том, насколько сервер основан на топологии сети.

Телефоны Android обычно знают время в пределах как минимум 1 секунды точности. Либо через периодическую синхронизацию по времени через сеть GSM, либо через соединение с данными (Wi-Fi или сотовую), также через NTP.

Для упомянутого приложения FasterGPS - смена вашего NTP-сервера на лучший он не поможет вам быстрее TTFF. Для этого вам потребуется время с точностью в наносекундах, что невозможно через NTP. Только сам чип GPS способен отслеживать время с такой точностью. Что помогает на android быстрее TTFF:

  • У вас уже есть хорошее время в течение 20 с на вашем Android-телефоне.
  • Имея приблизительное значение либо через Wi-Fi, либо через сеть GSM (в пределах нескольких километров от башен передачи)
  • Используя A-GPS - он загружает новую копию альманаха и эфемерид для всех спутников GPS через Интернет, поэтому вам не нужно скачивать это от спутников GPS (для эфемеридов занимает 30 секунд и 15 минут для альманаха). С помощью A-GPS вы можете использовать горячий старт и иметь TTFF менее 10 секунд.

Ответ 3

Иан прав в своем комментарии, что ответы связаны с тем, как работает GPS-приемник. Приемник быстрее придет к решению, если он имеет более точную оценку смещения часов приемника. Многие приемники выполняют итерационное решение, основанное на начальной оценке положения приемника и смещения тактового сигнала. Если эти оценки уже близки к истинному значению, то потребуется меньшее количество итераций. Это лишь часть причины, по которой TTFF будет меньше. Существуют и другие важные факторы. Если начальная позиция и оценка времени хороши, то процесс поиска для получения спутниковых сигналов займет значительно меньше времени, поскольку приемник может подсчитать, какие спутники должны быть видимыми, и он также может оценить приблизительный допплеровский сдвиг, испытываемый каждым из сигналов относительно к приемнику системы отсчета.