как работает gps, часть 2
Oct. 18th, 2009 02:47 pm![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Да, хочу добавить, что если Вы собаку съели на этом деле, то единственной причиной читать то что я тут пишу было бы только желание поправить - you are welcome!
Итак, недоуменный вопрос номер один: а как это на одной частоте передают со всех спутников, и мы при этом не путаем их сигналы?
Делается это так:

На нашу частоту L1 (ну и L2 тоже) накладывается сигнал, полученный из C/A кода и собственно информации. Применяется фазовая модуляция, но это роли не играет; важно другое.
После демодулирования полученной приёмником L1 мы получаем последовательность бит с частотой 1.023 мегагерца. Эти биты представляют собой сумму (по модулю 2, т.е. xor) кода C/A и собственно информации. Код C/A есть последовательность 1023 бит, повторяющаяся каждую миллисекунду. Собственно информация имеет частоту 50 герц, так что каждый информационный бит растянут на 20 копий A/C.
Ну и как же мы различаем все эти потоки информации? А вот как.
Последовательность из 1023 бит можно представить как вектор в 1023-мерном пространстве, над полем Z2, т.е. над полем целых чисел по модулю 2. В этом поле сложение - то же самое, что и xor, а умножение - and, если считать 1 за истину, а 0 за ложь.
Все эти последовательности обладают специфическим свойством:
их корреляция близка к нулю;
их автокорреляция близка к дельта-функции, т.е. равна единице только если сдвиг равен нулю.
Отсюда следует, что, зная один вектор, можно вычислять корреляцию с поступающим сигналом, и когда поймаем единицу, то считай поймали носитель.
В качестве таких последовательностей можно (и нужно) брать коэффициенты неприводимых полиномов по модулю 2. (Хмм... не в курсе, что такое неприводимые полиномы? Это такие полиномы, коорые не раскладываются в произведение других полиномов.)
Для степени 1023 таких полиномов, говорят, будет всего 1025, но нам достаточно 30. Теперь, что мы делаем, чтобы выловить сигнал? Мы ловим эти биты и умножаем на образцы векторов; как только получили произведение, равное количеству единичных бит, так, значит, словили сигнал; и теперь можно извлекать информацию. Это сравнение можно делать параллельно для всех тридцати векторов, и таким образом выловить сразу несколько сигналов.
Переходим к собственно информации, передаваемой, как я уже писал выше, на частоте 50 герц.
В пакете содержатся заголовок, собственное время спутника, его эфемерида и альманах.
Альманах содержит сведения о текущем положении всех спутников - эта информация меняется редко, посмотреть её можно здесь. Каждый спутник передаёт эти данные; имея их, можно сообразить, какие спутники должны быть сейчас видны.
Вот кусочек альманаха:
Эфемерида - точные сведения об орбите конкретного спутника; эти сведения годны в течение четырёх часов.
Но главное, что требуется, чтобы оперативно и точно определить наше положение - это который час на спутнике.
Про это я напишу в следующей части.
Итак, недоуменный вопрос номер один: а как это на одной частоте передают со всех спутников, и мы при этом не путаем их сигналы?
Делается это так:

На нашу частоту L1 (ну и L2 тоже) накладывается сигнал, полученный из C/A кода и собственно информации. Применяется фазовая модуляция, но это роли не играет; важно другое.
После демодулирования полученной приёмником L1 мы получаем последовательность бит с частотой 1.023 мегагерца. Эти биты представляют собой сумму (по модулю 2, т.е. xor) кода C/A и собственно информации. Код C/A есть последовательность 1023 бит, повторяющаяся каждую миллисекунду. Собственно информация имеет частоту 50 герц, так что каждый информационный бит растянут на 20 копий A/C.
Ну и как же мы различаем все эти потоки информации? А вот как.
Последовательность из 1023 бит можно представить как вектор в 1023-мерном пространстве, над полем Z2, т.е. над полем целых чисел по модулю 2. В этом поле сложение - то же самое, что и xor, а умножение - and, если считать 1 за истину, а 0 за ложь.
Все эти последовательности обладают специфическим свойством:
их корреляция близка к нулю;
их автокорреляция близка к дельта-функции, т.е. равна единице только если сдвиг равен нулю.
Отсюда следует, что, зная один вектор, можно вычислять корреляцию с поступающим сигналом, и когда поймаем единицу, то считай поймали носитель.
В качестве таких последовательностей можно (и нужно) брать коэффициенты неприводимых полиномов по модулю 2. (Хмм... не в курсе, что такое неприводимые полиномы? Это такие полиномы, коорые не раскладываются в произведение других полиномов.)
Для степени 1023 таких полиномов, говорят, будет всего 1025, но нам достаточно 30. Теперь, что мы делаем, чтобы выловить сигнал? Мы ловим эти биты и умножаем на образцы векторов; как только получили произведение, равное количеству единичных бит, так, значит, словили сигнал; и теперь можно извлекать информацию. Это сравнение можно делать параллельно для всех тридцати векторов, и таким образом выловить сразу несколько сигналов.
Переходим к собственно информации, передаваемой, как я уже писал выше, на частоте 50 герц.
В пакете содержатся заголовок, собственное время спутника, его эфемерида и альманах.
Альманах содержит сведения о текущем положении всех спутников - эта информация меняется редко, посмотреть её можно здесь. Каждый спутник передаёт эти данные; имея их, можно сообразить, какие спутники должны быть сейчас видны.
Вот кусочек альманаха:
ID: 01
Health: 063
Eccentricity: 0.3799438477E-002
Time of Applicability(s): 233472.0000
Orbital Inclination(rad): 0.9620113373
Rate of Right Ascen(r/s): -0.7807102520E-008
SQRT(A) (m 1/2): 5153.624512
Right Ascen at Week(rad): 0.1154047132E+001
Argument of Perigee(rad): 0.981060147
Mean Anom(rad): -0.2126137018E+001
Af0(s): -0.6103515625E-004
Af1(s/s): 0.0000000000E+000
week: 530
ID: 02
Health: 000
Eccentricity: 0.9121417999E-002
Time of Applicability(s): 233472.0000
Orbital Inclination(rad): 0.9411659241
Rate of Right Ascen(r/s): -0.7792550605E-008
SQRT(A) (m 1/2): 5153.675293
Right Ascen at Week(rad): -0.3042662144E+001
Argument of Perigee(rad): 2.906376719
Mean Anom(rad): 0.1646851182E+001
Af0(s): 0.1831054688E-003
Af1(s/s): 0.3637978807E-011
week: 530
Эфемерида - точные сведения об орбите конкретного спутника; эти сведения годны в течение четырёх часов.
Но главное, что требуется, чтобы оперативно и точно определить наше положение - это который час на спутнике.
Про это я напишу в следующей части.
no subject
Date: 2009-10-19 05:38 am (UTC)Получается, что L1 промодулирован двумя сигналами, а Lh2 - одним. А главное - все равно не ясно, как сигналы могут сосуществовать на одной и той же частоте - может быть спутники передают их не непрерывно а каждый в своем TDM интервале?
А, нет, вот нашел в Википедии (http://en.wikipedia.org/wiki/Global_Positioning_System#Navigation_signals):
The receiver can distinguish the signals from different satellites because GPS uses a code division multiple access (CDMA) spread-spectrum technique where the low-bitrate message data is encoded with a high-rate pseudo-random (PRN) sequence that is different for each satellite.
no subject
Date: 2009-10-19 02:26 pm (UTC)То, что в народе называют PRN - и есть эти последовательности битов.
no subject
Date: 2009-10-19 05:43 am (UTC)Что происходит через четыре часа?
no subject
Date: 2009-10-19 06:03 am (UTC)no subject
Date: 2009-10-19 06:59 am (UTC)no subject
Date: 2009-10-19 07:07 am (UTC)no subject
Date: 2009-10-19 12:52 pm (UTC)no subject
Date: 2009-10-19 02:28 pm (UTC)no subject
Date: 2009-10-19 02:37 pm (UTC)no subject
Date: 2009-10-19 04:55 pm (UTC)no subject
Date: 2009-10-19 06:27 pm (UTC)no subject
Date: 2009-10-19 07:04 pm (UTC)no subject
Date: 2009-10-19 08:26 pm (UTC)