Интерполяция траектории движения GPS-модуля по результатам измерения координат

  • Вид работы:
    Дипломная (ВКР)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    2,41 Мб
  • Опубликовано:
    2016-01-12
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Интерполяция траектории движения GPS-модуля по результатам измерения координат













Дипломная работа

Интерполяция траектории движения GPS-модуля по результатам измерения координат


Студентка: Савицкая Екатерина Аркадьевна

Научный руководитель:

старший преподаватель

Курило Владимир Степанович

Зав. кафедрой радиофизики и цифровых медиа технологий

доктор физико-математических наук, профессор А.С. Рудницкий

Оглавление

 

Введение

Глава 1. Классические методы позиционирования

1.1 Определение местоположения методом пересечения сфер

1.2 Ошибки измерений и их порядки

1.3 Методы исключения ошибок

1.3.1 Методы моделирования

1.3.2 Двухчастотный приёмник

1.3.3 Разностные методы

1.3.4 Методы высокой точности

1.4 Фильтр Калмана

Глава 2. GNSS модули

2.1 GNSS модули нового поколения: L76, L70

2.2 Модуль LEA-5

Глава 3. Фильтр Калмана на примере движущегося объекта

3.1 Фильтр Калмана

3.2 Практическая реализация фильтра Калмана

Заключение

Литература

Приложения

Реферат

 

Дипломная работа:__стр., 2 табл., 25 рис., 9 источников, 3 приложения.

СИСТЕМА СПУТНИКОВОЙ НАВИГАЦИИ GPS, СИТЕМА СПУТНИКОВОЙ НАВИГАЦИИ ГЛОНАСС, СОВМЕЩЕННАЯ СИСТЕМА ПОЗИЦИОНИРОВАНИЯ GPS/ГЛОНАСС, ФИЛЬТР КАЛМАНА

Объект исследования - системы спутниковой навигации.

Предмет исследования - возможность фильтра Калмана обработать данные полученные с систем спутниковой навигации.

Цель работы: разработка алгоритма фильтрации данных, полученных с систем спутниковой навигации с помощью GNSS модуля.

Методы исследования: фильтр Калмана.

Исследования и разработки: проведен анализ работы фильтра Калмана. Выбраны навигационные модули для получения данных позиционирования. Проанализированы отфильтрованные данные с различных модулей.

Элементы научной новизны: программная реализация фильтра Калмана, под конкретную задачу.

Область возможного практического применения: обработка данных с полученных с помощью модуля, для уменьшения соотношения сигнал/шум.

Автор работы подтверждает, что приведенный в ней расчетно-аналитический материал правильно и объективно отражает состояние исследуемого процесса, а все заимствованные из литературных и других источников теоретические, методологические и методические положения к концепции сопровождаются ссылками на их авторов.

фильтр калман программная реализация

Введение


Спутниковая система навигации (GNSS, global navigation satellite system) - комплексная электронно-техническая система, состоящая из совокупности наземного и космического оборудования, предназначенная для определения местоположения (позиционирования), а также параметров движения (скорости, направления движения и др.) для различных целей. Местоположение определяется тремя координатами приёмника спутниковой навигации в некоторой системе координат. Обычно используются системы координат ECEF (Earth centered & earth fixed, декартова система координат с началом в точке центра масс Земного шара), WGS84 (World Geodetic System 1984, сферическая система координат с началом в точке центра масс Земного шара). Если местоположение считается в сферической системе координат и третья координата (высота) неизвестна, то позиционирование является двумерным. Если в процессе позиционирования координаты приёмника не меняются, то позиционирование называется статическим. В противном случае говорят о кинематическом позиционировании.

Система спутниковой навигации включает в себя орбитальную группировку, состоящую из нескольких (от 2 до 30) спутников, излучающих специальные радиосигналы, наземную систему контроля, приёмное клиентское оборудование ("спутниковые навигаторы"). Возможно также использование системы наземных станций, позволяющих повысить точность определения координат, системы для передачи пользователям уточнённых координат и часов спутников.

Местоположение приемника в системе спутниковой навигации вычисляется пересечением сфер от разных спутников. Радиусы сфер определяются неточно из-за ионосферной и тропосферной задержек, релятивистского эффекта, эффекта приема отраженного сигнала и других факторов. Без каких-либо коррекций точность определения местоположения составляет 30-50 метров. [1]

В настоящее время работают или готовятся к развёртыванию следующие системы спутниковой навигации:

Ø  NAVSTAR - GPS (англ. Global Positioning System - глобальная система позиционирования) - спутниковая система навигации, обеспечивающая измерение расстояния, времени и определяющая местоположение. Позволяет в любом месте Земли (не включая приполярные области), почти при любой погоде, а также в космическом пространстве вблизи планеты определить местоположение и скорость объектов. Система разработана, реализована и эксплуатируется Министерством обороны США.

Основной принцип использования системы - определение местоположения путём измерения расстояний до объекта от точек с известными координатами - спутников. Расстояние вычисляется по времени задержки распространения сигнала от посылки его спутником до приёма антенной GPS-приёмника. То есть, для определения трёхмерных координат GPS-приёмнику нужно знать расстояние до трёх спутников и время GPS системы. Таким образом, для определения координат и высоты приёмника используются сигналы как минимум с четырёх спутников.

Ø  ГЛОНАСС: Глоба́льная Навигацио́нная Спу́тниковая Систе́ма (ГЛОНА́СС, GLONASS) - советская и российская спутниковая система навигации, разработана по заказу Министерства обороны СССР. Одна из двух функционирующих на сегодня систем глобальной спутниковой навигации.

Основой системы должны являться 24 спутника, движущихся над поверхностью Земли в трёх орбитальных плоскостях с наклоном орбитальных плоскостей 64,8° и высотой 19 100 км. Принцип измерения аналогичен американской системе навигации NAVSTAR GPS. В настоящее время развитием проекта ГЛОНАСС занимается Федеральное космическое агентство (Роскосмос) и ОАО "Российские космические системы".

ГЛОНАСС предназначена для оперативного навигационно-временного обеспечения неограниченного числа пользователей наземного, морского, воздушного и космического базирования. Доступ к гражданским сигналам ГЛОНАСС в любой точке земного шара, на основании указа Президента РФ, предоставляется российским и иностранным потребителям на безвозмездной основе и без ограничений.

Основное отличие от системы GPS в том, что спутники ГЛОНАСС в своем орбитальном движении не имеют резонанса (синхронности) с вращением Земли, что обеспечивает им большую стабильность. Таким образом, группировка КА ГЛОНАСС не требует дополнительных корректировок в течение всего срока активного существования. Тем не менее срок службы спутников ГЛОНАСС заметно короче.

Ø  БЭЙДОУ: Развёртываемая в настоящее время Китаем подсистема GNSS (Global navigation satellite system - Глобальная Навигационная Спутниковая Система), предназначенная для использования только в этой стране. Особенность - небольшое количество спутников, находящихся на геостационарной орбите. На август 2010 года включала в себя 5 спутников, расположенных на геостационарной орбите и обеспечивала определение географических координат в Китае и на соседних территориях. Планируется что на орбиту будет выведено 30 спутников, сама система заработает уже в 2012 году, а на полную мощность выйдет к 2020 году.

Ø  GALILEO: (Galileo) - совместный проект спутниковой системы навигации Европейского союза и Европейского космического агентства, является частью транспортного проекта Трансъевропейские сети (англ. Trans-European Networks). Система предназначена для решения навигационных задач для любых подвижных объектов с точностью менее одного метра. Ныне существующие GPS-приёмники не смогут принимать и обрабатывать сигналы со спутников Галилео (кроме приемников компаний Altus Positioning Systems, Septentrio и JAVAD GNSS), хотя достигнута договорённость о совместимости и взаимодополнению с системой NAVSTAR GPS третьего поколения.

Ожидается, что "Галилео" войдёт в строй в 2014-2016 годах, когда на орбиту будут выведены все 30 запланированных спутников (27 операционных и 3 резервных). Компания Arianespace заключила договор на 10 ракет-носителей "Союз" для запуска спутников, начиная с 2010 года. Космический сегмент будет дополнен наземной инфраструктурой, включающей в себя три центра управления и глобальную сеть передающих и принимающих станций.

В отличие от американской GPS и российской ГЛОНАСС, система Галилео не контролируется национальными военными ведомствами, однако, в 2008 году парламент ЕС принял резолюцию "Значение космоса для безопасности Европы", согласно которой допускается использование спутниковых сигналов для военных операций, проводимых в рамках европейской политики безопасности. Разработку осуществляет Европейское космическое агентство. Общие затраты на создание системы оцениваются в 4,9 млрд евро.

Когда программа войдет в фазу полной эксплуатационной готовности, все спутники "Галилео" будут двигаться по орбите высотой 23222 км (или 29600,318 км от центра Земли), проходя один виток за 14 ч 4 мин. и 42 с, обеспечивая постоянное покрытие любой точки земного шара по крайней мере четырьмя аппаратами. Все спутники будут бороздить космическое пространство в трех орбитальных плоскостях, наклоненных под углом 56° к экватору, покрывая даже полярные районы Земли. Временная погрешность атомных часов, установленных на спутнике, составляет всего одну миллиардную долю секунды, а это значит, что соответствующая навигационная неточность не должна превышать 30 см. Каждый аппарат "Галилео" весит около 700 кг, его габариты со сложенными солнечными батареями составляют 3,02х1,58х1,59 м, а с развернутыми - 2,74х14,5х1,59 м, энергообеспечение равно 1420 Вт на солнце и 1355 Вт в тени. Расчетный срок эксплуатации спутника превышает 12 лет.

Ø  IRNSS: Индийская Спутниковая Региональная Система Навигации. Правительство Индии одобрило 9 Мая 2006, проект развертывания Индийской Спутниковой Региональной Системы Навигации (IRNSS) с бюджетом 14,2 млрд. рупий в течение следующих 6-7 лет. Спутниковая группировка IRNSS будет первоначально состоять из 7 спутников, а затем 11, которые будут находится на геосинхронных орбитах. Причем четыре спутника из семи в IRNSS будут размещены на орбите с наклонением в 29о по отношению к экваториальной плоскости. Все семь спутников будет иметь непрерывную радиовидимость с Индийскими управляющими станциями.

Спутники IRNSS будут использовать платформу, подобную той, которая используется на русском метеорологическом спутнике Kalpana-1 с массой 1330 кг и мощностью солнечных батарей 1400 Вт. Полезная нагрузка будет включать два 40 Вт твердотельных усилителя.

Земной сегмент IRNSS будет иметь станцию мониторинга, станцию резервирования, станцию контроля и управления бортовыми системами. Государственная компания ISRO является ответственной за развертывание IRNSS, которая будет находиться целиком под контролем Индийского правительства. Навигационные приемники, которые будут принимать сигналы IRNSS, так же будут разрабатываться и выпускаться индийскими компаниями.

В Индии активно ведутся работы по развертыванию широкозонной региональной подсистемы GAGAN <#"863182.files/image001.gif">

Рис. 1: Найдено местоположение путем пересечения трех сфер.

Однако таким способом найти точное местоположение невозможно. Это происходит по причине того, что расстояние от спутника до приёмника найдено не точно: в подсчёте присутствуют различные неучтённые ошибки и задержки.

Эта ситуация показана на (рис. 2).

Рис. 2: Местоположение найдено не точно.

 

Чем больше ошибок будет исключено, тем точнее можно найти местоположение.

 

1.2 Ошибки измерений и их порядки


В этом параграфе будет представлена в аналитическом виде значительная часть ошибок и задержек, возникающих при измерении расстояния от спутника до приемника.

Под ошибкой будем понимать какой-либо сдвиг координат спутника или часов приёмника и спутников. Задержка - эта ошибка, по причине которой изменилась скорость прохождения сигнала на каком-либо участке от спутника до приёмника.

Пусть у нас имеется приемник и несколько спутников. Пусть имеется общая временная шкала, т.е. время, по которому выстроены часы спутников и приёмника. В качестве общей временной шкалы практически всегда берут среднее время по Гринвичу (время на нулевом меридиане). В соответствии с [6]  будем называть псевдодальностью (pseudorange) величину

 

Рi = c Ч [t (T2) - ti (T1)] (1.1)

где:

·        с - скорость света в вакууме

·        t (T2) - время получения сигнала приемников по часам приемника

·        ti (T1) - время отправления сигнала спутника по часам спутника номер i

Рис. 3: Ошибки и их порядки.

Определяя расстояние от i-го спутника до приёмника, псевдодальность содержит также следующие ошибки: ошибку синхронизации часов спутника и приемника, задержку сигнала в атмосфере (тропосфера и ионосфера), релятивистский эффект, инструментальные задержки, помехи типа "повторных изображений" (multipath), интерференции и другое.

Учитывая выше написанное, перепишем уравнение (2.1)  в виде:

 

Pi = pi + c Ч (dt - dti) + reli + Ti + a Ч Ii + Ki + Mi + ɛi (1.2)

где:

·        pi - геометрическое расстояние от спутника номер i до приемника, т.е.

 

·        dt - изменение часов приемника от общей временной шкалы

·        dti - изменение часов i-го спутника от общей временной шкалы

·        Ti - тропопсферная задержка

·        Ii - характеризует ионосферную задержка, α - множитель, который выражается через частоту сигнала f: α = 40.3/f2

·        reli - релятивистский эффект

·        Ki - инструментальная задержка, вызванная помехами спутника, не зависит от частоты

·        Mi - эффект приема отраженного сигнала, зависит от частоты

·        ɛi - неучтенные здесь ошибки

 

1.3 Методы исключения ошибок


Существует несколько групп методов исключения ошибок и задержек. Эти методы могут применяться как по отдельности, так и в различных комбинациях.

 

1.3.1 Методы моделирования

Методы моделирования подразумевают непосредственный подсчёт той или иной ошибки в случае, когда это представляется возможным.

Следующие ошибки возможно подсчитать напрямую:

·        коррекция координат в соответствии с геофизической моделью (приливы/отливы, движение литосферных плит и др.)

·        коррекция тропосферной задержки

·        учет сдвига фазового центра приемника и спутника

·        коррекция инструментальных ошибок спутника (для каждого спутника может быть разная ошибка)

·        коррекция релятивистского эффекта

·        коррекция влияния гравитации других планет

Все вышеперечисленные коррекции реализованы в библиотеке GPSTk [4] .

1.3.2 Двухчастотный приёмник

Двухчастотный приёмник - приёмник, принимающий со спутников одни и те же данные, но на разных частотах. Основная задача двухчастотного приёмника - исключение ионосферной задержки. Это возможно потому, что ионосферная задержка зависит от частоты и такая зависимость известна. В случае двухчастотного приёмника ионосферную задержку можно подсчитать напрямую.

Однако двухчастотный приёмник дорогой и не доступен для гражданского использования.

 

1.3.3 Разностные методы

Исключение каждой из вышеперечисленных ошибок представляется весьма трудоёмким занятием. Был изобретён класс методов, в которых все ошибки исключаются разом (полностью или частично), - разностные методы. При использовании этих методов необходимо наличие хотя бы одной наземной станции, местоположение которой известно (с достаточной точностью). Исключение ошибок возможно благодаря предположению, проверенному эмпирическим путем, о том, что ошибки связанные с задержками в атмосфере коррелируют тем выше, чем ближе находятся приемники. Соответственно удаление приемников друг от друга ухудшает корреляцию и уменьшает точность позиционирования. Использование разностных методов в случае кинематических наблюдений имеет смысл в радиусе до 20-50 километров от базовой станции для двухчастотных приемников, для одночастотных - до 8-ми километров.

Рассмотрим идею разностных методов на примере метода двойных разностей, в котором подразумевается наличие только одной наземной станции.

Пусть:

·        имеется приемник А - наземная станция, координаты которой известны

·        имеется приемник В, координаты которого необходимо найти

·        станция А и приемник В находятся достаточно близко

·        каждый из приемников наблюдается спутником номер 0 и спутник номер 1 одновременно (с точностью до нескольких секунд)

Алгоритм метода двойных разностей:

.        составляем уравнение типа (2.2) для обоих приемников для каждого спутника. Обозначим соответствующие псевдодальности PA0, PA1, PB0, PB1

2.      вычитаем уравнения для спутника номер 0: PA0 - PВ0. Вычитаем уравнения для спутника номер 1: PA1 - PВ1.

·        в этих разностях сокращаются:

·        ошибки часов спутника

·        ошибки, вызванные помехами спутника А

·        частично атмосферные ошибки

3.      вычитаем полученные разности: (PA0 - PВ0) - (PA1 - PВ1). Тут сокращаются

·        ошибки часов приемников

·        ошибки, вызванные помехами приемника

4.      Получили новое уравнение практически без ошибок.

Таким образом, разностные методы, и метод двойных разностей в частности, позволяют сразу избавиться практически от всех ошибок. Однако в этих методах необходимо иметь поблизости хотя бы одну наземную станцию. Это не всегда возможно, поэтому эти методы не применимы в таких областях, как мобильная картография. [1]

 

1.3.4 Методы высокой точности

Метод высокой точности (РРР, point precise positioning) - метод нахождения местоположения в системе спутниковой навигации, относящийся к абсолютным (т.е. без использования наземных станций) методам позиционирования, важной особенностью которого является непосредственный подсчёт ошибок. Впервые РРР был разработан в 1997 году для двухчастотного приёмника. Со временем он улучшался и ошибка определения местоположения 24-ёх часового статического наблюдения стала порядка 1-го сантиметра [5]. РРР уже представляет собой класс методов, каждый из которых подразумевает:

·        наличие дополнительных данных с уточненными координатами спутников

·        наличие данных об ошибках часов спутников

·        полное или почти полное исключение ионосферной задержки

·        наличие карт ионосферы и тропосферы

·        наличие серии решений, которую можно усреднить фильтром Калмана

В случае двухчастотного приёмника в РРР возможно полное исключение ионосферной задержки. В случае одночастотного приёмника ионосферная задержка может быть подсчитана при помощи карт ионосферы IONEX [6] .

РРР для двухчастотного приёмника в случае статических наблюдений реализован в библиотеке GPSTk [4] .

 

1.4 Фильтр Калмана


Определение 1 Фильтр Калмана - эффективный (т.е. имеющий способ гарантированно достигать результат за конечное число действий) рекурсивный фильтр, оценивающий вектор состояния динамической системы, используя ряд неполных и зашумленных измерений. Назван в честь Рудольфа Калмана.

Чтобы дать более полное определение фильтра Калмана, необходимо ввести ряд необходимых терминов и обозначений. Путь имеется некоторый процесс, для которого существует физическая модель. Пусть также существуют некоторые измерения, связанные с этим процессом. Фильтр Калмана подразумевает дискретное время. В k-ый момент времени вектор состояний xk Є Rn выражается через вектор состояний (k - 1) - го момента времени xk-1:

xk = Axk-1 + Buk-1 + wk-1 (1.3)

где:

A - nЧn матрица физический модели процесса

· B - nЧs матрица управления процессом

· u - вектор управления размерности s

· w - вектор ошибки размерности n, характеризующий ошибку физической модели

Также в каждый момент времени мы можем получать измерения. Вектор измерений zk Є Rm связан с вектором состояний следующим уравнением:

Zk = Hxk + vk (1.4)

где:

· z - вектор измерений размерности m

· H - mЧn матрица, характеризующая связь вектора состояний с вектором измерений

· v - вектор ошибки размерности m, характеризующий ошибку измерений.

Уравнение (1.3) задает какой-то физический процесс, а вектор z есть измерения, которые мы можем сделать какими-либо приборами. Уравнения (1.4)  показывают связь вектора состояний с вектором измерений. Заметим, что в общем случае матрицы A, B, H могут зависеть от k, т.е. от времени. Матрица B может быть ненулевой только в случае, когда процессом управляют со стороны. В общем случае уравнения могут быть нелинейными, однако алгоритм Калмана подразумевает, что мы всегда их можем линеаризовать.

Вектора v и w считают случайными величинами с ковариационными матрицами R и Q соответственно. Эти матрицы тоже могут зависеть от времени k. Если компоненты вектора состояний не зависят друг от друга, то матрица R будет диагональной, а i-ый диагональный элемент будет обозначать средне квадратичную ошибку xi. Аналогичное можно сказать про матрицу Q и вектор w.

Определение 2 Алгоритмом Калмана называется следующий двух-шаговый алгоритм вычисления состояния динамический системы (1.3), (1.4):

·        первый шаг - предсказание (предикция, интерполяция):


·        второй шаг - коррекция:

 (1.5)

 

Определение 3 Матрицей K из алгоритма Калмана называется Калмановской матрицей усиления.

Матрица P из алгоритма Калмана является ковариационной матрицей ошибки вектора состояний x. Это означает, что на каждом шаге k вместе с вектором состояний xk фильтр Калмана предоставляет возможность оценить точность этого состояния.

Первое приближение в этом алгоритме может быть любым. Однако наряду с вектором состояний на первом шаге мы должны задать матрицу P. Если первое приближение (начальное условие) точное, то матрицу P следует задать нулевой и наоборот - если приближение не точное, то соответствующие ковариации вектора состояний cov (xi,xj) будут большими числами.

Из уравнения (1.4) видно, что на первом шаге работы алгоритма Калмана происходит вычисления вектора состояний в следующий момент времени на основе лишь физической модели. Однако в (1. 5) на втором шаге алгоритма происходит коррекция вектора состояний с учётом измерений. Следующая теорема говорит об оптимальности выбора матрицы Калмана.

Теорема 1 Матрица, K минимизирует сумму квадратов математических ожиданий ошибок оценки вектора состояния.

 


Глава 2. GNSS модули

 

.1 GNSS модули нового поколения: L76, L70


, L70 - это новейшие GNSS модули, в которых воплощены все наиболее современные и актуальные технологии.

Рис. 4: GNSS модуль L70

 

Таблица 1: Характеристики модулей

Характеристики модулей

L70

L76

Питание

2.8V~4.3B

3.1V~4.3B

Токопотребление

Обнаружение

21mA@ 3.3B

25mA@ 3.3B


Слежение

18mA@ 3.3B

18mA@ 3.3B

Чувствительность

Обнаружение

-148дБм

-147 дБм


Слежение

-163 дБм

-160 дБм


Повторное обнаружение

-160 дБм

-160 дБм

TTFF@ 130дБм

Горячий старт

<1с

<1с


Теплый старт

<5с (EASYTM)

<5с (EASYTM)


Холодный старт

<15с (EASYTM)

<15с (EASYTM)

Точное позиционирование

2.5м CEP

2.5м CEP

Точность времени синхронизации

1PPS

10нс

10нс

Частота обновления данных

До 10Гц

До 10Гц

является одним из самых маленьких GNSS модулей в мире. Его размеры: 10,1Ч9,7Ч2,5 мм.

Для установки модуля на плату применяется SMT-монтаж. Модуль имеет 18 контактов (1.1мм), описание которых представлено ниже:

Рис. 5: Контакты модуля L76

 

Размеры модуля:

Рис. 6: Размеры модуля L76

 

L76 построен на однокристальном чипе GNSS IC, который включает в себя радиочасть, Baseband-часть, SAW-фильтр и кварцевый генератор с термокомпенсатором (TCXO).

Рис. 7: Однокристальный чип GNSS IC

 

Питание модуля: через вывод VCC подаётся питание для Baseband-части, радиочасти, вводов-выводов и RTC (Real Time Clock). Ток нагрузки варьируется в зависимости от уровня VCC, загрузки процессора и количества отслеживаемых спутников. Для вывода VCC типовой пиковый ток составляет 40 мА в режиме обнаружения (захвата) спутников. Поэтому сигнал, подаваемый на вывод VCC, должен иметь стабильные и качественные характеристики. Пульсации напряжения питания должны отвечать следующим требованиям: 54 мВ (RMS) макс @ F= 0.3 МГц и 15 мВ (RMS) макс @ F>3 МГц.

Через вывод V_BCKP подаётся питание для RTC. Для V_BCKP рекомендуется установка пары конденсаторов ёмкостью 4.7мкФ и 100 нФ. Диапазон изменения напряжение RTC составляет от 1,5 В до 4.5 В. Для того, чтобы добиться быстрого TTFF (Time To First Fix, время до первого определения местоположения), на RTC должно постоянно подаваться напряжение питания. Постоянное питание также необходимо и для SRAM-памяти, которая входит в состав RTC и содержит всю необходимую информацию для быстрого запуска GPS, в том числе и некоторые пользовательские настройки.

Рис. 8: Схема распределения питания внутри модуля

 

В зависимости от напряжения питания VCC можно определить среднее значение тока и потребляемой мощности. Испытания проводились в условиях "открытого неба" и одновременном использовании спутников GPS и ГЛОНАСС.

Рис. 9: Среднее значение тока и потребляемой мощности в зависимости от напряжения питания VCC.

 

Список тестов, проведенных для определения надежности работы модуля:

Таблица 2: Список тестов

Test item

Condition

Standard

Thermal shock

-30єC…+80єC, 144 cycles

GB/T 2423.22-2002 Test Na IEC 68-2-14 Na

Damp heat, cyclic

+55єC; >90% Rh 6 cycles for 144 hours

IEC 68-2-30 Db Test

Vibration shock

5~20Hz, 0.96m2/s3; 20-500Hz, 0.96m2/s3-3dB/oct, 1hour/axis; no function

2423.13 - 1997 Test Fdb IEC 68-2-36 Fdb Test

Heat test

85єC, 2 hours, Operational

GB/T 2423.1-2001Ab IEC 68-2-1 Test

Cold test

-40єC, 2 hours, Operational

GB/T 2423.1-2001Ab IEC 68-2-1 Test

Heat soak

90єC, 72 hours, Non-Operational

GB/T 2423.2-2001Ab IEC 68-2-2 Test

Cold soak

-45єC, 72 hours, Non-Operational

GB/T 2423.2-2001Ab IEC 68-2-2 Test


Одним из ключевых преимуществ модуля L76 является совместное использование 2-х систем ГЛОНАСС и GPS за счет одновременного приема сигналов GPS и ГЛОНАСС в диапазоне L1. Одновременное использование систем GPS и ГЛОНАСС фактически удваивает количество видимых спутников. Модуль позволяет использовать 33 tracking канала, 99 каналов в режиме обнаружения и 210 каналов PRN, L76 может отслеживать любое сочетание сигналов GPS и ГЛОНАСС. L76 имеет сверхнизкое энергопотребление в режиме слежения - 18 мА. Среднее энергопотребление других модулей на рынке составляет около55 мА при тех же условиях.

Модуль использует современную технологию AGPS, называемую EASY™, которая позволяет сократить время TTFF до 1сек при горячем старте. Точность позиционирования значительно увеличена с помощью технологии AlwaysLocate™. Самая низкая средняя потребляемая мощность составляет всего 3 мВт в режиме постоянного определения местоположения.

Рис. 10 Функции поддерживаемые L76

- это еще один GNSS модуль от компании Quectel, который, благодаря своим характеристикам, уже успел стать одним из лидеров рынка. L70 поддерживает весь новый функционал, имеющийся у L76 и обладает высокими показателями в плане чувствительности, скорости, энергопотребления и совместимости с GSM модемами Quectel. Дополнительная функция встроенного логгера под названием LOCUS позволяет модулю L70 сохранять информацию о местоположении во внутренней флэш-памяти с интервалом в 15 секунд (по умолчанию), а полученный лог может составлять более 16 часов.и L70 поддерживают следующие функции:

·        EASY™, самостоятельно сгенерированные предсказания эфемерид для быстрого определения местоположения

·        Чрезвычайно низкое энергопотребление - 18mA в режим @tracking

·        AlwaysLocate™, интеллектуальный алгоритм энергосбережения

·        LOCUS, встроенный логгер без необходимости подключения внешней памяти

·        Высокая чувствительность: - 163 dBm @tracking, - 148 dBm @Acquisition

·        Поддержка DGPS,QZSS,SBAS (WASS/ EGNOS / MSAS/GAGAN)

·        Защита от помех, Мульти тональный активный подавитель помех

·        Технология Self-AGPSEASY™

EASY™ является аббревиатурой для, так называемых, встраиваемых систем помощи (Embedded Assist System), использующихся для быстрого позиционирования. С помощью Easy™, процессор GPS может вычислять и предсказывать отдельные эфемериды автоматически (до 3дней), когда питание включено, и затем сохранить их в энергонезависимой памяти. Таким образом, процессор GPS может использовать эту информацию для позиционирования позже, в случае недостаточной информации, полученной от спутников. Эта функция будет полезна для улучшения позиционирования и времени TTFF как в помещении, так и в городских условиях.

Рис. 11 Преимущества EASY™

В ходе теста системы EASY™, на рисунке 12 видно, что она значительно уменьшает TTFF.

Рис. 12 Тест системы Easy™

 

Периодический режим ожидания

Данный режим позволяет периодически контролировать время включения/выключения, чтобы снизить среднюю потребляемую мощность. Время включения/выключения можно настроить с помощью PMTK команды, подробности см. на рисунке 13. Периодический режим щжидания можно включить, отправив следующую команду PMTK:

$PMTK255, тип, время работы, время сна, второе время работы, второе время сна

Рис. 13 Настраивание времени включения/выключения.

Примечания:

. Как правило, GNSS модуль будет входить в периодический режим после успешной фиксации положения, но даже если фиксация не удалась, GNSS модуль все еще может войти в этот режим.

. Если фиксация местоположения не произошла во время первого периода работы, то для того, чтобы обеспечить успех повторной фиксации, рекомендуется установить больший интервал для второго времени работы.

Технология AlwaysLocate™™ является интеллектуальным контроллером для периодического режима.

В L76 и L70 может адаптивно регулировать время включения/выключения для достижения баланса между точностью позиционирования и потребляемой мощностью в зависимости от внешних условий и характера движения.

Таким образом, среднее энергопотребление в режиме энергосбережения AlwaysLocate™ ниже, чем в периодическом режиме энергосбережения. Типовая средняя мощность при этом составляет 3 мВт.

Рис. 14 Система AlwaysLocate™

 

Между тем, существуют и другие режимы работы модуля L76, которые могут уменьшить потребление энергии.

Режим ожидания

Режим ожидания - это режим с низким потреблением тока. В режиме ожидания ядро и выходы I/O по-прежнему активны, но радиочасть и кварц выключены. Модуль прекращает поиск спутников и навигацию.uaRT1 по прежнему доступен для PMTK-команд или любых других данных, но выходные сообщения NEMA не отправляются.

Есть два способа, чтобы войти и выйти из режима ожидания.

) Использование контакта STANDBY: при подаче на контакт низкого уровня напряжения модуль войдёт в режим ожидания STANDBY, а отсутствие сигнала (контакт подтянут к высокому уровню внутри модуля.), вернёт модуль обратно в полнофункциональный режим. Но надо всегда иметь в виду, что замыкание STANDBY на землю вызовет дополнительное потребление тока, которое в этом случае может составить до 600uA @ VCC = 3,3В.

) Использование PMTK команды: Отправка PMTK команды "$ PMTK161, 0 * 28" переведёт модуль в режим ожидания. Отправка любых данных через UART1 выведет модуль из режима ожидания, т.к.uaRT1 по-прежнему доступен. После выхода из режима ожидания, модуль будет использовать всю внутреннюю дополнительную информацию, такую как время GPS, эфемериды, последнее местоположение и т.д. для максимального сокращения времени TTFF при горячем или теплом старте. Ток потребления в этом случае составляет около 500uA @ VCC = 3,3 В в режиме ожидания.

Резервный режим

В резервном режиме модуль потребляет меньше энергии, чем в режиме ожидания. В этом режиме модуль прекращает поиск и отслеживание спутников.uaRT1 не доступен. Но на энергозависимую память в составе RTC, которая содержит всю необходимую GPS-информацию для быстрого запуска, а также хранит настройки конфигурации, питание продолжает подаваться. Технология EASY также хранит эфемериды в этом режиме. Потребление тока в этом режиме составляет около 7uA.

Есть три способа, чтобы войти в резервный режим и переключится обратно.

) Отправить команду: "$ PMTK225, 4 * 2F", чтобы войти в резервный режим навсегда. Единственный способ, чтобы активировать модуль - это подать на FORCE_ON высокий уровень напряжения.

) Отправить команду: "$ PMTK291, 7,0, <time>, 1 * <контрольная сумма>" (красная линия открывает переключатель на рис.3). Модуль войдет в резервный режим на миллисекунду, затем активируется автоматически. Здесь максимальное значение времени составляет до 518400000с (около 6 дней). Кроме выхода из режима по времени, как и в случае выше, подача на FORCE_ON высокого уровня напряжения активирует модуль.

) Отключение питания на VCC и V_BCKP переведёт модуль в резервный режим. Если на VCC снова подать питание, модуль сразу вернётся в полнофункциональный режим. Но этот метод использовать не рекомендуется. [7]

Рис. 15 Принципиальная электрическая схема с модулем L70 и маломощным усилителем MAX2659.

 

2.2 Модуль LEA-5


Модуль LEA-5 представляет собой 50-канальный сверхвысокочувствительный GPS/GALILEO-приемник, который не требует дополнительных внешних элементов для работы (кроме питания, антенны и опциональной батареи для RTC). Преимуществом этого модуля является использование u-blox' SuperSense® Indoor GPS технологии, которая позволяет очень быстро получить трекинговую информацию даже в условиях плотной городской застройки.

Рис. 16 Модуль LEA-5

Имеет FLASH-память в которой могут храниться пользовательские установки. Встроенный малошумящий усилитель позволяет работать как с активными, так и с пассивными антеннами. Модуль LEA-5S не содержит встроенной FLASH-памяти, а LEA-5A не поддерживает режим KickStart.

Глава 3. Фильтр Калмана на примере движущегося объекта


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

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

Когда вы кидаете, скажем, кость, то выпадет дискретное множество значений: {1,2,3,4,5,6}. Когда речь идет, например, о скорости блуждающей частицы, то, очевидно, приходится иметь дело с непрерывным множеством значений. "Выпавшие" значения случайной величины ξ мы будем обозначать через x1,x2,., но иногда, будем использовать ту же букву, которой обозначаем случайную величину: ξ12,…

В случае с непрерывным множеством значений случайную величину характеризует плотность вероятности ρ (x), которая нам диктует, что вероятность того, что случайная величина "выпадет" в маленькой окрестности точки x длиной dx равна ρ (x) dx. Как мы видим на графике 16, эта вероятность равна площади заштрихованного прямоугольника под графиком:

Рис. 17 Плотность вероятности случайной величины

 

Довольно часто в жизни случайные величины распределены по Гауссу (рис. 17), когда плотность вероятности равна .

Рис. 18 Распределение по Гауссу

 

Мы видим, что функция ρ (x) имеет форму колокола с центром в точке μ и с характерной шириной порядка σ.

Теперь необходимо разобраться, что такое Гаусово распределение и откуда оно взялось.

Пусть есть случайная величина ξ, имеющая произвольное распределение. Проведем n экспериментов и посчитаем сумму ξ1+…+ξn "выпавших" значений случайной величины. Сделаем много таких экспериментов. Понятно, что каждый раз мы будем получать разное значение суммы. Иными словами, эта сумма является сама по себе случайной величиной со своим каким-то определенным законом распределения. Оказывается, что при достаточно больших n закон распределения этой суммы стремится к распределению Гаусса. В жизни очень часто встречаются величины, которые складываются из большого количества одинаково распределенных независимых случайных величин, поэтому и распределены по Гаусcу.

Среднее значение

Рассмотрим дискретную случайную величину x, которая принимает M возможных значений: α12,…αm. Обозначим через nx (α) число случаев появления события x и положим, что общее число событий равно N, то найдем среднее значение дискретной случайной величины x в виде

 (3.1)

Вероятность наступления события xi определялась нами из предельного соотношения

 (3.2)

Объединяя (3.1) и (3.2), получим выражение среднего значения через вероятность наступления событий

 (3.3)

При возрастании M число дискретных событий увеличивается и, наконец, для очень больших M можно рассматривать α как непрерывную величину, которая аппроксимирует дискретную величину, принимающую значения αi с вероятностью . Таким образом, (3.3) преобразуется к виду

 (3.4)

Для Гауссова распределения , среднее значение равно µ.

Дисперсия

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

Как видно из рисунка 17, характерный разброс значений порядка σ. Чтобы оценить этот разброс значений для произвольной случайной величины, если мы знаем ее распределение, мы можем найти среднюю длину (модуль) отклонения от среднего значения: E|ξ - |.

Эта величина будет хорошей оценкой характерного разброса значений ξ. Но так как с использованием формулы с модулем, могут возникнуть проблемы, то мы откажемся от этого варианта и воспользуемся более простым способом: найдем E (ξ - ) 2. Эту величину называют дисперсией, и часто обозначают как . Корень из дисперсии - хорошая оценка разброса случайной величины. Корень из дисперсии еще называют среднеквадратичным отклонением.

Например, для распределение Гаусса , можно посчитать, что определенная выше дисперсия к  в точности равна σ2, а значит среднеквадратичное отклонение равно σ.

Независемые случайные величины

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

Случайные величины независимы, если результат выпадения первой из них совершенно не зависит от результата выпадения второй из них. Если случайные величины ξ1 и ξ2 независимы, то среднее значение их произведения равно произведению их средних значений:

 

E (ξ1Ч ξ2) = E ξ1ЧE ξ2 (3.5)

Доказательство:

Например, иметь голубые глаза и окончить школу с золотой медалью - независимые случайные величины. Если голубоглазых, скажем 20%=0.2, а золотых медалистов 5%=0.05, то голубоглазых медалистов 0.2Ч0.005=0.01=1%. Этот пример подсказывает нам, что если случайные величины ξ1 и ξ2 заданы своими плотностями вероятности ρ1 (x) и ρ2 (y), то независимость этих величин выражается в том, что плотность вероятности ρ (x,y) (первая величина выпала x, а вторая y) находится по формуле:

 

ρ (x,y) = ρ1 (x) Чρ2 (y) (3.6)



Доказательство проведено для случайных величин, которые имеют непрерывный спектр значений и заданы своей плотностью вероятности. В других случаях идея доказательства аналогичная. [8]

 

3.1 Фильтр Калмана


Постановка задачи

Обозначим за xk величину, которую мы будем измерять, а потом фильтровать. Это может быть координата, скорость, ускорение, влажность, температура, давление, и т.д.

Начнем с простого примера, который и приведет нас к формулировке общей задачи. Представьте себе, что у нас есть радиоуправляемый движущейся объект, который может перемещаться только вперед и назад. Мы, зная вес объекта, форму, покрытие поверхности, по которой он перемещается и т.д., рассчитали как контролирующий джойстик влияет на скорость движения vk.

Ри. 19 Движущийся объект

 

Тогда координата объекта будет изменяться по закону:

xk+1 = xk + vkdt (3.7)

В реальной же жизни мы не можем учесть в наших расчетах малые возмущения, действующие на объект (ветер, неровности поверхности, препятствия), поэтому настоящая скорость объекта будет отличаться от расчетной. К правой части написанного уравнения добавится случайная величина ξk:

xk+1 = xk + vkdt +ξk (3.8)

У нас есть установленный на объекте GPS сенсор, который пытается мерить истинную координату xk объекта, и, конечно же, не может ее померить точно, а мерит с ошибкой ηл, которая является тоже случайной величиной.

В итоге с сенсора мы получаем ошибочные данные:

zk = xk + ηk (3.9)

Задача состоит в том, что, зная неверные показания сенсора zk, найти хорошее приближение для истинной координаты объекта xk. Это хорошее приближение мы будем обозначать как .

В формулировке же общей задачи, за координату xk может отвечать все что угодно (температура, влажность и т.д.), а член, отвечающий за контроль системы извне, мы обозначим за uk (в примере c объектом uk = vkdt).

Уравнения для координаты и показания сенсора будут выглядеть так:

 

xk+1 = xk + uk +ξk

zk = xk + ηk (3.10)

И так, что нам известно:

·              uk - это известная величина, которая контролирует эволюцию системы. Мы ее знаем из построенной нами физической модели.

·              Ошибка модели ξk и ошибка сенсора ηk - случайные величины. И их законы распределения не зависят от времени (от номера итерации k).

·              Средние значения ошибок равны нулю: k = k = 0.

·              Сам закон распределения случайных величин может быть нам и не известен, но известны их дисперсии  и . Заметим, что дисперсии не зависят от k, потому что законы распределения не зависят от него.

·              Предполагается, что все случайные ошибки независимы друг от друга: какая ошибка будет в момент времени k совершенно не зависит от ошибки в другой момент времени k’.

Нелишним будет отметить, что задача фильтрации - это не задача сглаживания. Мы не стремимся сглаживать данные с сенсора, мы стремимся получить наиболее близкое значение к реальной координате xk.

Алгоритм Калмана

Мы будем рассуждать по индукции. Представьте себе, что на k-ом шаге мы уже нашли отфильтрованное значение с сенсора , которое хорошо приближает истинную координату системы xk. Не забываем, что мы знаем уравнение, контролирующее изменение нам неизвестной координаты:

 

xk+1 = xk + uk +ξk,

поэтому, еще не получая значение с сенсора, мы можем предположить, что на шаге k+1 система эволюционирует согласно этому закону и сенсор покажет что-то близкое к . К сожалению, пока мы не можем сказать ничего более точного. С другой стороны, на шаге k+1 у нас на руках будет неточное показание сенсора zk+1.

Идея Калмана состоит в том, что чтобы получить наилучшее приближение к истинной координате xk+1, мы должны выбрать золотую середину между показанием zk+1 неточного сенсора и  - нашим предсказанием того, что мы ожидали от него увидеть. Показанию сенсора мы дадим вес K, а на предсказанное значение останется вес (1-K):

 (3.11)

Коэффициент K называют коэффициентом Калмана. Он зависит от шага итерации, поэтому правильнее было бы писать Kk+1, но пока, чтобы не загромождать формулы расчетах, мы будем опускать его индекс.

Мы должны выбрать коэффициент Калмана K таким, чтобы получившееся оптимальное значение координаты  было бы наиболее близко к истинной координате xk+1. К примеру, если мы знаем, что наш сенсор очень точный, то мы будем больше доверять его показанию и дадим значению zk+1 больше весу (K близко единице). Если же сенсор, наоборот, совсем не точный, тогда больше будем ориентироваться на теоретически предсказанное значение .

В общем случае, чтобы найти точное значение коэффициента Калмана K, нужно просто минимизировать ошибку:

 (3.12)

Используем уравнения (3.10), чтобы переписать выражение для ошибки:

 (3.13)

Доказательство:


Теперь необходимо разобраться, что такое минимизировать ошибку? Ведь ошибка, как мы видим, сама по себе является случайной величиной и каждый раз принимает разные значения.

На самом деле не существует однозначного подхода к определению того, что означает, что ошибка минимальна.

Точно как и в случае с дисперсией случайной величины, когда мы пытались оценить характерную ширину ее разброса, так и тут мы выберем самый простой для расчетов критерий. Мы будем минимизировать среднее значение от квадрата ошибки:

 (3.14)

Распишем последнее выражение:

 (3.15)

Доказательство:

Из того что все случайные величины, входящие в выражение (5.13) для ek+1, независимы, следует, что все "перекрестные" члены равны нулю: E (ξkηk+1) = E (ekξk) = E (ekηk+1) =0.

Так же k+1=k=0, тогда формула для дисперсий выглядит намного проще:

 (3.16)

Выражение (3.15) принимает минимальное значение, когда (приравниваем производную к нулю):

 (3.17)

Подставляем в выражение (3.15) для среднеквадратичной ошибки  минимизирующее ее значение коэффициента Калмана (5.17) . Получаем:

 (3.18)

Наша задача решена. Мы получили итерационную формулу (3.18), для вычисления коэффициента Калмана. [9] Практическая реализация в приложении А.

Рис. 20 Данные обработанные фильтром Калмана

 

Если проследить, как с шагом итерации k изменяется коэффициент Калмана Kk, то можно показать, что он всегда стабилизируется к определенному значению Kstab. К примеру, когда среднеквадратичные ошибки сенсора и модели относятся друг к другу как десять к одному, то график коэффициента Калмана в зависимости от шага итерации выглядит так:

Рис. 21 Зависимость коэффициента Калмана от шага итерации.

 

Основная идея фильтра Калмана состоит в том, что надо найти коэффициент K такой, чтобы отфильтрованное значение:

 (3.19)

в среднем меньше всего отличалось бы от реального значения координаты xk+1. Мы видим, что отфильтрованное значение есть линейная функция от показания сенсора zk+1 и предыдущего отфильтрованного значения . А предыдущее отфильтрованное значение  является, в свою очередь, линейной функцией от показания сенсора zk и предпредыдущего отфильтрованного значения . И так далее, пока цепь полностью не развернется. То есть отфильтрованное значение зависит от всех предыдущих показаний сенсора линейно:

 (3.20)

Поэтому фильтр Калмана называют линейным фильтром.

3.2 Практическая реализация фильтра Калмана


Для практической реализации фильтра Калмана, необходимо получить данные со спутников. Для этих целей, мы будем использовать модуль L76, который передает данные с GPS и ГЛОНАСС спутников и модуль LEA-5, который передает данные с GPS спутников.

С помощью модуля L76 и LEA-5 в помещении были получены следующие данные (рис.22-23).

 

Рис. 22 Пакет данных, полученных с помощь модуля L76

 

Рис. 23 Пакет данных, полученных с помощью модуля LEA-5

 

Данные получены со спутника в формате NMEA. Это формат передачи сообщений между корабельными приборами. Он включает в себя систему сообщений для обмена информацией между навигационными GPS приёмниками и потребителями навигационной информации. Все команды и сообщения передаются в текстовом ASCII виде, относящиеся к GPS приёмникам начинаются с $GP, в конце строки сообщения должны быть символы <CR><LF>. В последнем поле сообщения может быть указана контрольная сумма текущего сообщения, начинающаяся с разделителя *. Контрольная сумма 8 - ми битная (исключающая ИЛИ) всех символов сообщения, включая пробелы, расположенных между разделителями $ и *, не включая последних. Шестнадцатеричный результат переводится в два ASCII символа (0-9, A-F).

Содержание некоторых сообщений протокола NMEA

$GPGGA Сообщение содержит GPS данные о местоположении, времени местоопределения, качестве данных, количестве использованных спутников, HDOP (Фактор Ухудшения Точности Плановых Координат), информацию о дифференциальных поправках и их возраст.

$GPGLL Сообщение содержит GPS-данные о географической широте, долготе и времени определения координат.

$GPGSA В этом сообщении отображается режим работы GPS приёмника, параметры спутников, используемых при решении навигационной задачи, результаты которой отображены в сообщении $GPGGA и значения факторов точности определения координат.

$GPGSV В сообщении указывается количество видимых спутников, их номера, возвышение, азимут, и значение отношения сигнал/шум для каждого из них.

$GPRMC Сообщение RMC содержит данные о времени, местоположении, курсе и скорости, передаваемые навигационным GPS приёмником. Контрольная сумма обязательна для этого сообщения, интервалы передачи не должны превышать 2 секунды. Все поля данных должны быть подготовлены, пока ещё нет самих данных. Недействительные поля могут быть использованы, пока данные временно не готовы.

$GPVTG Сообщение VTG передает текущее истинное направление курса (COG) и скорость относительно земли (SOG).

$GPZDA Сообщение ZDA содержит информацию о времени по UTC, календарный день, месяц, год и локальный часовой пояс.- GPS Данные о местоположении

2 3 4 5 6 7 8 9 10 11 12 13 14 15

$GPGGA, hhmmss.ss, 1111.11, a, yyyyy.yy, a, x, xx, x.x, xxx, M, x.x, M, x.x, xxxx*hh

. Гринвичское время на момент определения местоположения.

. Географическая широта местоположения.

. Север/Юг (N/S).

. Географическая долгота местоположения.

. Запад/Восток (E/W).

. Индикатор качества GPS сигнала:

= Определение местоположения не возможно или не верно;

= GPS режим обычной точности, возможно определение местоположения;

= Дифференциальный GPS режим, точность обычная, возможно определение местоположения;

= GPS режим прецизионной точности, возможно определение местоположения.

. Количество используемых спутников (00-12, может отличаться от числа видимых).

. Фактор Ухудшения Точности Плановых Координат (HDOP).

. Высота антенны приёмника над/ниже уровня моря.

. Единица измерения высоты расположения антенны, метры.

. Геоидальное различие - различие между земным эллипсоидом WGS-84 и уровнем моря(геоидом),

”-” = уровень моря ниже эллипсоида.

. Единица измерения различия, метры.

. Возраст Дифференциальных данных GPS - Время в секундах с момента последнего SC104 типа 1 или 9 обновления, заполнено нулями, если дифференциальный режим не используется.

. Индификатор станции, передающей дифференциальные поправки, ID, 0000-1023.

. Контрольная сумма строки.

Пример сообщения:

$GPGGA,004241.47,5532.8492,N,03729.0987,E,1,04,2.0 ,-0015,M,,,,*31

- географическое положение - Широта/Долгота

1 2 3 4 5 6 7

$GPGLL, 1111.11, a, yyyyy.yy, a, hhmmss.ss, A*hh < CR><LF>

1. Географическая широта местоположения.

. Север/Юг (N/S).

. Географическая долгота местоположения.

. Запад/Восток (E/W).

. Гринвичское время на момент определения местоположения.

. Статус A = данные верны= данные не верны

. Контрольная сумма строки.

Пример сообщения:

$GPGLL,5532.8492,N,03729.0987,E,004241.469,A*33

- GPS факторы точности и активные спутники

В этом сообщении отображается режим работы GPS приёмника, параметры спутников, используемых при решении навигационной задачи, результаты которой отображены в сообщении $GPGGA и значения факторов точности определения координат.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18

$GPGSA, a, x, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, x.x, x.x, x.x*hh <CR><LF>

1. Режим: M = Ручной, принудительно включен 2D или 3D режим;= Автоматический, разрешено автомат. выбирать 2D/3D.

. Режим: 1 = Местоположение не определено, 2 = 2D, 3 = 3D

-14. PRN номера спутников, использованных при решении задачи местоопределения (нули для неиспользованных).

. Фактор PDOP.

. Фактор HDOP.

. Фактор VDOP.

. Контрольная сумма строки.

Пример сообщения:

$GPGSA,A,3,01,02,03,04,,,,,,,,,2.0,2.0,2.0*34

- видимые спутники GPS В этом сообщении отображается число видимых спутников (SV), PRN номера этих спутников, их высота над местным горизонтом, азимут и отношение сигнал/шум. В каждом сообщении может быть информация не более чем о четырех спутниках, остальные данные могут быть расположены в следующих по порядку $GPGSV сообщениях. Полное число отправляемых сообщений и номер текущего сообщения указаны в первых двух полях каждого сообщения.

2 3 4 5 6 7 8 15 16 17 18 19 20 $GPGSV, x, x, xx, xx, xx, xxx, xx..., xx, xx, xxx, xx*hh <CR><LF> 1. Полное число сообщений, от 1 до 9.

. Номер сообщения, от 1 до 9.

. Полное число видимых спутников.

. PRN номер спутника.

. Высота, градусы, (90° - максимум).

. Азимут истинный, градусы, от 000° до 359°.

. Отношение сигнал/шум от 00 до 99 дБ, ноль - когда нет сигнала.

-11. Тоже, что в 4-7 для второго спутника.

-15. Тоже, что в 4-7 для третьего спутника.

-19. Тоже, что в 4-7 для четвертого спутника.

. Контрольная сумма строки.

Пример сообщения:

$GPGSV,3,1,12,02,86,172,,09,62,237,,22,39,109,,27,37,301,*7A $GPGSV,3,2,12,17,28,050,,29,21,314,,26,18,246,,08,10,153,*7F $GPGSV,3,3,12,07,08,231,,10,08,043,,04,06,170,,30, 00,281,*77 RMC - pекомендуемый минимум GPS / навигационных данных 1 2 3 4 5 6 7 8 9 10 11 12 $GPRMC, Hhmmss. ss, A, 1111.11, A, yyyyy. yy, a, x. x, x. x, ddmmyy, x. x, A *hh <CR><LF> 1. Время фиксации местоположения UTC 2. Состояние: А = действительный, V = предупреждение навигационного приёмника 3,4. Географическая широта местоположения, Север/Юг 5,6. Географическая долгота местоположения, Запад/Восток (E/W)

. Скорость над поверхностью (SOG) в узлах

. Истинное направление курса в градусах

. Дата: dd/mm/yy

. Магнитное склонение в градусах

. Запад/Восток (E/W)

. Контрольная сумма строки (обязательно) Пример сообщения:

$GPRMC,113650.0,A,5548.607,N,03739.387,E,000.01,25 5.6,210403,08.7,E*69  VTG - истинное направление курса и скорость относительно земли 1 2 3 4 5 $GPVTG, x. x, T x. x, M x. x, N x. x, K *hh <CR><LF> 1. Направление курса в градусах, T 2. Магнитное склонение в градусах, М 3. Скорость над поверхностью (SOG) в узлах, N = узлы 4. Скорость над поверхностью (SOG) в км/ч, К = км/ч 5. hh Контрольная сумма строки (обязательно) Пример сообщения:

$GPVTG,217.5,T, 208.8,M,000.00,N,000.01,K*4C  ZDA - время и дата 1 2 3 4 5 6 7 $GPZDA, hhmmss. s, xx, xx, xxxx, xx, xx *hh <CR><LF > 1. Время UTC 2. День (01до 31) 3. Месяц (01 to 12) 4. Год 5. Часовой пояс, смещение от GMT, от 00 до ± 13 часов 6. Часовой пояс, смещение от GMT, минуты 7. hh Контрольная сумма строки Пример сообщения:

$GPZDA,172809,12,07, 1996,00,00*45

Обработка данных

С помощью фильтре Калмана рассмотренного в параграфе 3.1, реализованного на языке С# (приложение В), мы обработали пакеты данных полученных с помощью модулей.

Полученные данные необходимо перевести из формата DDD MM. MMM (D-градусы, M - минуты) в формат DDD. DDDDD, к примеру:

W 087° 38.185 38.185 ч 60 = 0.636417 тогда угол будет равен: 87.636417°

Для Севера (N) и Востока (E) градусы принимают положительное значение, а для Юга (S) и Запада (W) - отрицательные.

Запад t" имеет отрицательный угол: - 87.636417°

Для отображения координат на плоскости, необходимо было перевести их из сферических полярных в декартовые:

a=6378137 - экваториальный радиус

e = 8.181919084Е-2 - эксцентриситет

lat = геодезическая широта (рад.)

lon = долгота (рад.)

alt = высота над WGS84 эллипсоида (м.)

 (3.21)

x= (N+alt) Чcos (lat) Чcos (lon)= (N+alt) Чcos (lat) Чsin (lon) (3.22)

z= ( (1-e2) ЧN+alt) Чsin (lat)

 

Рис. 24 Полученные и отфильтрованные данные с модуля L76

 

Рис. 25 Полученные и отфильтрованные данные с модуля LEA-5

На рис. 24 и 25 хорошо видно, что графики с отфильтрованными данными более гладкие и имеет меньшее количество пиков. Это говорит о том, что соотношение сигнал/шум уменьшилось и мы получили более точные значения.

Для оценки данных необходимо посчитать среднее квадратичное отклонение:

 (3.23)

где:

 (3.24)

При сравнении 2х графиком, мы видим, что данные полученные с помощью модуля L70 более точные, чем данные полученные с модуля LEA-5. Это связано с тем, что модуль L76 использует совмещенную систему позиционирования GPS/ГЛОНАСС, а так же с недостатками системы GPS, данные с которой получает модуль LEA-5.

Общим недостатком использования любой радионавигационной системы является то, что при определённых условиях сигнал может не доходить до приёмника, или приходить со значительными искажениями или задержками. Например, практически невозможно определить своё точное местонахождение в глубине квартиры внутри железобетонного здания, в подвале или в тоннеле. Так как рабочая частота GPS лежит в дециметровом диапазоне радиоволн, уровень приёма сигнала от спутников может серьёзно ухудшиться под плотной листвой деревьев или из-за очень большой облачности. Нормальному приёму сигналов GPS могут повредить помехи от многих наземных радиоисточников, а также от магнитных бурь.

Невысокое наклонение орбит GPS (примерно 55) серьёзно ухудшает точность в приполярных районах Земли, так как спутники GPS поднимаются над горизонтом невысоко. Существенной особенностью GPS считается полная зависимость условий получения сигнала от Министерства обороны США.

Совмещенный приемник спутниковых радионавигационных систем GPS/ГЛОНАСС отвечает всем рыночным требованиям к приемникам GPS и добавляет новые качества - надежность и точность местоопределений в сложных условиях, привносимые за счет увеличения числа принимаемых сигналов.

Современные показатели точности системы GPS для невоенных пользователей имеют погрешность по долготе и широте 2.00-8.76 метров при использовании навигатором 6-11 спутников. У ГЛОНАСС погрешность по долготе и широте составляет 4.46-7.38 метров при использовании 7-8 спутников. При этом, при одновременном использовании навигатором двух систем погрешность снижается до 1.5-3 метров. В бытовом применении важнее даже не точность, а надежность приема. Будь то автомобильный навигатор или туристический - главное, чтобы связь со спутниками не терялась и вы всегда могли однозначно определить, где вы находитесь в настоящий момент времени. В условиях неуверенного приема (на узких улицах между высоких домов, или на дороге, окруженной высоким лесом) обе системы будут подстраховывать друг друга. И там, где навигаторы, использующие только GPS или только ГЛОНАСС, потеряли бы спутники, устройство, параллельно использующее обе системы, показало хорошие результаты.

Результаты предварительных испытаний показывают, что существуют сценарии применения приемника, в которых использование второй СРНС дает значительное улучшение качества навигации.

Заключение


В ходе работы, данные полученные со спутника были обработаны фильтром Калмана. На рисунках мы видим, что графики с отфильтрованными данными более гладкие и имеет меньшее количество пиков. Это говорит о том, что соотношение сигнал/шум уменьшилось и мы получили более точные значения. Так же уменьшилось среднее квадратичное отклонение.

В результаты опыта было показано, что применения приемника, в котором используется второй СРНС дает значительное улучшение качества навигации, так как в нем задействовано большее количество спутников.

Литература


1. Д.Ю. Першин, А.С. Щербак, Определение высокой точности для одночастотных приемников спутниковой навигации с использованием инерциальных датчиков // Институт систем информатики СО РАН

Свободная энциклопедия http://ru. wikipedia.org/ <http://ru.wikipedia.org/>

Международный сервис GNSS, http://igscb. jpl. nasa.gov/ <http://igscb.jpl.nasa.gov/>

Открытая библиотека GPSTk, <http://www.gpstk.org/>

1. Alfred Leick, GPS Satellite Surveying // John Wiley & Sons, Inc. 2004

2. А.С. Щебраков, Д-Ю. Першин, Определение местоположения высокой точности для одночастотных приёмников ГЛОНАСС/GPS // Новосибирский государственный университет, МНСК-2009

7. Навигационное оборудование <http://www.gsm-rainbow.ru/>

. Информационный портал <http://habrahabr.ru/>

9. Mohinder S. Grewal, Angus P. Andrews, Kalman Filtering: Theory and Practice, New York

Приложения

Приложение А

 

Фильтр Калмана, Matlabe

clear all;=100 % number of samples=0.1 % acceleration=1=50;=1: N=k(1) =0(1) =x (1) +normrnd (0,sigmaEta);t=1: (N-1)(t+1) =x (t) +a*t+normrnd (0,sigmaPsi);(t+1) =x (t+1) +normrnd (0,sigmaEta);;

%kalman filter(1) =z (1);(1) =sigmaEta; % eOpt (t) is a square root of the error dispersion (variance). It's not a random variable.t=1: (N-1)(t+1) =sqrt ( (sigmaEta^2) * (eOpt (t) ^2+sigmaPsi^2) / (sigmaEta^2+eOpt (t) ^2+sigmaPsi^2))(t+1) = (eOpt (t+1)) ^2/sigmaEta^2(t+1) = (xOpt (t) +a*t) * (1-K (t+1)) +K (t+1) *z (t+1);(k,xOpt,k,z,k,x)

Приложение В

Фильтр Калмана на С#

MathHelper. cs

using System;_KalmanFilterApp

{static class MathHelper

{static double ToRadian (double degreeAngle)

{degreeAngle * Math. PI / 180;

}static Coord3D ToCartesian (double h, double lat, double lon)

{double a = 6378140.0000;double f = 6356755.2881575287;double eqr = (a * a - f * f) / (a * a);b = ToRadian (lat);l = ToRadian (lon);sinB = Math. Sin (b);cosB = Math. Cos (b);sinL = Math. Sin (l);cosL = Math. Cos (l);n = a / Math. Sqrt (1.0 - eqr * sinB * sinB);coord = new Coord3D { X = (n + h) * cosB * cosL, Y = (n + h) * cosB * sinL, Z = (n * (1.0 - eqr) + h) * sinB };coord;

}static double ToDecimalAngle (double angle, double minutes, Direction direction)

{retAngle = angle + minutes / 60;(direction. HasFlag (Direction. W) || direction. HasFlag (Direction. S))

{- retAngle;

}retAngle;

}

}

}

DataReaderHelper. cs

using System;System. Collections. Generic;System. Globalization;System. IO;System. Linq;_KalmanFilterApp

{static class DataReaderHelper

{static IList<Coord3D> Read (Stream stream)

{

{(var reader = new StreamReader (stream))

{coords = new List<Coord3D> ();data = reader. ReadToEnd ();separators = new [] { '\r', '\n' };lines = data. Split (separators, StringSplitOptions. RemoveEmptyEntries)

. Where (dt =>! string. IsNullOrEmpty (dt) && dt. Contains ("$GPGGA")). ToArray ();(lines. Length == 0)

{new Exception ("Data were not found");

}(int i = 0; i < lines. Length; i++)

{parts = lines [i]. Split (",". ToArray (), StringSplitOptions. RemoveEmptyEntries);result;(! double. TryParse (parts [2], NumberStyles. AllowDecimalPoint, CultureInfo. InvariantCulture, out result)

||! double. TryParse (parts [4], NumberStyles. AllowDecimalPoint, CultureInfo. InvariantCulture, out result))

{. Warning (string. Format ("Line {0} is wrong {1}", i + 1, lines [i]));;

}latitudeDirect, longitudeDirect;(! Enum. TryParse (parts [3], out latitudeDirect)

||! Enum. TryParse (parts [5], out longitudeDirect))

{. Warning (string. Format ("Line {0} is wrong {1}", i + 1, lines [i]));;

}geoCoordY = parts [2]. TrimStart ('0');geoCoordX = parts [4]. TrimStart ('0');latitudeAngle = MathHelper. ToDecimalAngle ((geoCoordY),(geoCoordY),);longitudeAngle = MathHelper. ToDecimalAngle ((geoCoordX),(geoCoordX),);h = double. Parse (parts [9], CultureInfo. InvariantCulture);. Add (MathHelper. ToCartesian (h, latitudeAngle, longitudeAngle));

}coords;

}

}(Exception exc)

{. Error (exc);;

}

}static double GetDegreeAngle (string geoCoord)

{part = geoCoord. Split (".". ToCharArray (), StringSplitOptions. RemoveEmptyEntries) [0];strDegreeAngle = part. Substring (0, part. Length - 2);degreeAngle = double. Parse (strDegreeAngle, CultureInfo. InvariantCulture);degreeAngle;

}static double GetMinutes (string geoCoord)

{index = geoCoord. IndexOf ('. ') - 2;minutes = double. Parse (geoCoord. Substring (index), CultureInfo. InvariantCulture);minutes;

}

}

}

KalmanFiltreModel. cs

using System;System.componentModel;System. Linq;Emgu. CV;_KalmanFilterApp

{class KalmanFilterModel: IKalmanFilterModel, INotifyPropertyChanged

{double _sigmaPsi = Constants. SigmaPsi;double _sigmaEta = Constants. SigmaEta;Coord3D [] GetFilteredData (Coord3D [] points)

{count = points. Length;(count == 0)

{new Coord3D [0];

}coordsX = GetFilteredCoords (points. Select (pt => pt. X). ToArray ());coordsY = GetFilteredCoords (points. Select (pt => pt. Y). ToArray ());coordsZ = GetFilteredCoords (points. Select (pt => pt. Z). ToArray ());coords = new Coord3D [count];(int i = 0; i < count; i++)

{[i]. X = coordsX [i];[i]. Y = coordsY [i];[i]. Z = coordsZ [i];

}coords;

}double SigmaPsi

{

{_sigmaPsi;

}

{

_sigmaPsi = value;("SigmaPsi");

}

}double SigmaEta

{

{_sigmaEta;

}

{

_sigmaEta = value;("SigmaEta");

}

}double [] GetFilteredCoords (double [] coords)

{count = coords. Length;xOpt = new double [count];[0] = coords [0];eOpt = new double [count];[0] = SigmaEta;(int i = 0; i < count - 1; i++)

{[i + 1] =. Sqrt (Math. Pow (SigmaEta,

) *

(Math. Pow (eOpt [i],

) +. Pow (SigmaPsi,

)) /

(Math. Pow (SigmaEta,

) + Math. Pow (eOpt [i],

) + Math. Pow (SigmaPsi,

)));k = Math. Pow (eOpt [i + 1],

) / Math. Pow (SigmaEta,

);[i + 1] = xOpt [i] * (1 - k) + k * coords [i + 1];

}xOpt;

}event PropertyChangedEventHandler PropertyChanged;virtual void OnPropertyChanged (string propertyName)

{(PropertyChanged! = null)

{(this, new PropertyChangedEventArgs (propertyName));

}

}

}

}

Похожие работы на - Интерполяция траектории движения GPS-модуля по результатам измерения координат

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!