В идеальном мире мы могли бы остановиться на этом, и привлечение спутников 5 и 6 было бы уже излишне. В реальности все не так просто. Всюду могут возникать ошибки. Атмосфера Земли может исказить сигнал, его прохождению могут помешать радиопомехи или еще что-нибудь. Для начала из этого следует, что ваше местоположение скорее
В результате вашему GPS-приемнику достаточно систематически производить серию относительно простых геометрических расчетов, которая и приведет к наилучшей возможной для этого прибора оценке местоположения. Сравнивая полученный результат с детализированной формой Земли, прибор может определить даже, как высоко над уровнем моря вы находитесь. Как правило, высоты определяются менее точно, чем координаты по широте/долготе.
Спутник «рассылает дальномерные коды», или, говоря иначе, «рассылает сигналы с точной привязкой по времени». Звучит просто, но на самом деле это не так. Если вы слышите раскат грома, то понимаете, что начинается гроза, но сам по себе раскат грома не скажет вам, насколько она далека. Если же вы не только слышите гром, но и видите молнию, что происходит раньше, чем раздается гром, поскольку свет распространяется быстрее звука, то можно использовать разницу во времени прихода двух сигналов для оценки расстояния до молнии. Для прикидки достаточно знать, что три секунды запаздывания соответствуют примерно одному километру. Однако скорость звука зависит от состояния атмосферы, так что это правило нельзя считать точным.
GPS не может использовать в качестве второго сигнала звуковые волны по очевидным причинам – они слишком медленные, к тому же в космосе царит вакуум, так что звук там в любом случае не может распространяться. Но сама идея получения временно́й разницы между двумя разными, но взаимосвязанными сигналами верная. Каждый спутник рассылает последовательность импульсов 0/1, не содержащую повторений, – разве что вы будете ждать очень долго, чтобы последовательность повторилась целиком. GPS-приемник может сравнить строку из нулей и единиц, которую он получает со спутника, с той же строкой, получаемой от местного источника. Спутниковый сигнал приходит с задержкой, потому что ему приходится преодолевать расстояние между спутником и приемником, а время задержки можно определить, выровняв оба сигнала и посмотрев, насколько нужно сдвинуть один из них, чтобы он соответствовал второму.
Мы можем проиллюстрировать этот процесс, используя вместо нулей и единиц слова из этой книги.
Предположим, что сигнал, полученный со спутника, таков:
тогда как опорный сигнал, получаемый одновременно практически с соседнего двора, таков:
Тогда мы можем сдвинуть местный сигнал так, чтобы одинаковые слова совпали, примерно так:
Теперь мы видим, что сигнал со спутника приходит на четыре слова позже местного сигнала.
Остается только сгенерировать подходящие битовые строки. Простой способ генерирования строки из нулей и единиц с очень редкими повторениями состоит в подбрасывании монеты миллионы раз с записью 0 для орла и 1 для решки. Каждый бит возникает с вероятностью 1/2, так что строка из, скажем, 50 бит возникает с вероятностью 1/250
, что соответствует примерно одному шансу на квадриллион. В среднем она повторится примерно через квадриллион знаков вдоль строки. Если сравнить такой сигнал с его вариантом, смещенным на гораздо меньшую величину, то «верное» смещение, дающее наилучшее совпадение строк, окажется единственным.Компьютеры, однако, не сильны в подбрасывании монет. Они следуют конкретным инструкциям, и весь смысл их работы состоит в том, что они должны делать это точно и безошибочно. К счастью, существуют точные математические процессы, способные генерировать битовые строки, которые