Перейти к содержимому

Как усилить сигнал gps на андроид

  • автор:

gps.conf для всех, или как ускорить работу GPS на Android

image

«Фантастика!» подумал я и без промедления перешел по ссылке. По сравнению с первым постом в этот раз предлагались еще более конкретные действия, а именно заменить содержимое файла gps.conf (его можно найти по пути /etc/gps.conf, должны быть root-права) на следующие настройки:

Эти настройки рассчитаны на жителей Украины, но для жителей России их очень легко адаптировать заменив ua.pool на ru.pool.

Далее нужно перезагрузить Android, а затем запустить программу для работы с GPS и наслаждаться стабильным сигналом.

image

От себя могу добавить, что я пользуюсь приложением GPS Status и после перезагрузки при первом запуске приложения я сделал сброс данных кэша: в программе вызываем меню, далее выбираем Tools, там Manage A-GPS state и жмем Reset, а затем Download.

Снимаю шляпу перед автором оригинального поста, уважаемым mechanicuss. Его совет помог не только мне, и может помочь еще многим страдающим.

Как улучшить точность GPS на Android смартфоне

Модуль GPS на вашем смартфоне необходим для использования навигационных приложений и сервисов, таких как Google Maps или Яндекс.Карты. Иногда с работой GPS могут возникать проблемы, но их можно исправить и дополнительно увеличить точность определения местоположения. В этой статьм мы расскажем вам, как улучшить GPS на Андроиде.

Что такое GPS?

GPS – это глобальная система позиционирования, созданная американскими военными в 1973 году. Как и интернет, вскоре после создания она перешла на гражданские «рельсы». На сегодняшний день на орбите Земли находится 31 рабочий спутник GPS, с которыми ваш телефон связывается через специальную микро-антенну. Принимающие модули устанавливаются в подавляющее большинство современных смартфонов, даже в самые бюджетные модели, поэтому беспокоиться о его отсутствии не стоит.

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

  1. Количество доступных спутников в текущем регионе.
  2. Аппаратная поломка GPS-модуля.
  3. Проблемы с работой программного обеспечения.

Определите с чем связаны проблемы с GPS

С помощью приложений вроде GPS Essentials или GPS Test вы можете диагностировать, является ли плохой сигнал следствием аппаратной или же программной проблемы. Подобные приложения наглядно показывают, как ваш телефон подключается к спутникам.

Если спутники не появляются вообще, то это может быть связано с помехами от металлических объектов или стен вокруг вас, либо же просто GPS-модуль смартфона не работает должным образом. Если подключение к спутникам есть, но телефон все еще не ловит сигнал — это проблема программного обеспечения.

Обновите GPS-данные

Иногда смартфон может просто «зависнуть» на том или ином спутнике GPS, который в этот момент может находиться за пределами зоны досягаемости. Сдвинуть дело с «мертвой точки» можно установив приложение GPS Status&Toolbox и очистив там данные геолокации, после чего нужно выключить GPS и заново подключиться к спутникам.

В приложении нажмите в любом месте экрана, затем перейдите в меню и нажмите на «Управление состоянием A-GPS». Нажмите «Сброс», затем вернитесь в «Управление состоянием A-GPS» и нажмите «Загрузить». После этого данные GPS на смартфоне обновятся.

Используйте компас, чтобы откалибровать GPS

Если вам кажется, что GPS работает некорректно, попробуйте откалибровать компас (он же магнитный датчик или датчик Холла), который используется в процессе геолокации. Некоторые телефоны позволяют сделать это непосредственно в настройках местоположения, в остальных случаях провести калибровку проще всего непосредственно в навигационном приложении.

В Google Maps нужно нажать на синий круг, указывающий на ваше место на карте, выбрать во всплывающей вкладке «Откалибровать компас» и следовать незамысловатой инструкции. Калибровка обновит сигнал геолокации, что может решить вашу проблему.

Купите внешний GPS-приемник

Кардинальным способом решения аппаратной проблемы навигационных модулей, помимо ремонта телефона, может стать покупка внешнего приемника с GPS повышенной точности. Подобные решения, например Garmin GLO GPS, сопрягаются с телефоном по Bluetooth и обеспечивают высочайшую точность позиционирования с частотой обновления данных до 10 раз в секунду.

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

Разрешите телефону определять местоположение точнее

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

Чтобы повысить точность GPS на Android зайдите в настройки и откройте вкладку «Местоположение». Убедитесь, что GPS включен и перейдите в «Геолокация Google», где нужно активировать опцию «Определять местоположение точнее».

Теперь смартфон будет использовать не только GPS модуль, но и дополнительные способы определения местоположения — Wi-Fi и мобильные сети, вследствие чего навигация станет быстрее и точнее.

Как исправить проблему с GPS в приложениях

Приложения, чаще всего использующие службы геолокации (не учитывая Google Maps) — это игры на основе дополненной реальности. Даже самые популярные и оптимизированные проекты вроде Pokemon GO и Ingress частенько донимают ошибкой «сигнал GPS не найден». Как это можно исправить? Во-первых, убедитесь, что приложения имеют необходимые разрешения на использование GPS.

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

Как улучшить GPS прием на Android

Система навигации GPS есть почти во всех смартфонах. Она используется для навигации, и работает без подключения к Интернету.

В работе GPS возможны проблемы. Рассмотрим, как улучшить GPS прием на Андроиде.

Как улучшить GPS прием на Android, усиление слабого сигнала GPS

От чего зависит качество сигнала, и почему он пропадает?

Проблема с навигацией возможна по аппаратным или программным причинам.

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

Как улучшить прием

Ниже рассмотрим, что делать, если сигнал GPS потерян, или периодически пропадает, передается с перебоями. Приведем советы по устранению аппаратных и программных проблем.

калибровка gps на android

Калибровка компаса

Калибровка GPS на Android — это настройка внутреннего компаса.

Встроенный в телефон компас может «сбиться», или быть не калиброванным изначально.

Зачем калибровать GPS:

  • чтобы смартфон «ловил» сигнал (если сейчас не «ловит» вообще);
  • чтобы сделать определение местоположения точнее.

Компас калибруется бесплатным приложением, которое можно скачать на freesoft.ru. Например:

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

как усилить сигнал gps на андроид

Закрытие фоновых приложений

Проверьте, не работают ли одновременно приложения, использующие спутник: Google Maps, Яндекс.Карты, Foursquare, Госуслуги.

Закройте «лишние» программы и перезапустите навигатор.

зачем калибровать gps

Правильная настройка

По умолчанию GPS-чип в смартфонах и планшетах может быть отключен. Карта в этом случае будет работать по сотовым вышкам и wi-fi-сетям, что не так точно определяет местоположение.

  1. В настройках смартфона заходим в «Местоположение». В разных смартфонах и версиях ОС пункт может называться по-другому. Например: «Геоданные», «Геопозиционирование», «Безопасность и местоположение».
  2. Если выбран пункт «По координатам сети», вместо него выбираем «По спутникам», или «По всем источникам». Последний вариант — самый энергозатратный: батарея смартфона расходуется быстро. Но точность сигнала — максимальная.

Покупка усилителя сигнала

Купите усилитель сигнала для Android. Цена — 2000-5000 рублей. При выборе обратите внимание, чтобы приемник был совместим со смартфоном (или планшетом) — многие модели предназначены для навигаторов и компьютеров.

слабый сигнал gps на андроиде

Исправление прошивки

Если ОС давно не обновлялась, или если вы ставили кастомную прошивку — это может быть причиной проблем с сигналом.

Установите обновление или удалите неофициальную прошивку.

как повысить точность gps на андроид

Редактирование файла настроек GPS.conf (только под root-доступом)

Способ для опытных пользователей, нужен root-доступ.

Как усилить сигнал GPS на Андроид:

  1. Через файловый менеджер заходим в system, затем в etc.
  2. Ищем GPS.conf (в некоторых смартфонах — отсутствует, тогда способ отпадает).
  3. Открываем файл текстовым редактором.
  4. Напротив NTP_SERVER вместо имеющегося текста вписываем: ru.pool.ntp.org (если вы в РФ).
  5. Добавляем строчку DEFAULT_USER_PLANE=TRUE.
  6. Сохраняем изменения и перезапускаем навигатор.

Дополнительные советы

Общие советы, помогающие улучшить слабый сигнал (или поймать, если отсутствует):

  • снимите чехол смартфона;
  • отключите режим энергосбережения;
  • включите-выключите «Режим полета»;
  • выключите-включите GPS-модуль;
  • выйдите на улицу (если находитесь в здании) или поднимитесь повыше (если в здании — выйдите на балкон, если в лесу — заберитесь на дерево или поднимитесь на возвышенность, желательно без высоких деревьев вокруг).

Если вы выбираете смартфон с точной навигацией:

  • проверьте, работает ли он с ГЛОНАСС (если навигация нужна по РФ);
  • выбирайте модель с поддержкой A-GPS.

Починка аппаратной части

Если советы выше не помогли, и сигнал все равно слабый, или вообще отсутствует — проблема может быть в модуле телефона.

Отнесите смартфон в ремонт и скажите, что навигатор плохо ловит. Объясните, какие способы улучшения сигнала использовались, и какой результат они дали. Примерная цена модуля — 600-1500 рублей. Цена замены — 500-1000 рублей.

Снижаем погрешность GPS на Android с помощью фильтра Калмана и акселерометра

Oleg Katkov

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

Сначала нужно было решить эту проблему на Android-смартфонах, так как из-за невысокой стоимости, их использует подавляющее большинство водителей такси. А затем нужно реализовать какой-нибудь сервис, который будет обрабатывать маршруты, присланные сторонними разработчиками.

Гугление показало, что один из самых надежных способов повысить точность позиционирования и подсчет дистанции — составить векторную карту дорог города и проецировать GPS координаты на ближайшие дороги, как делается здесь. Однако этот метод можно применить, если существует актуальная и надежная база координат дорог. Ее создание — нетривиальная задача, требующая задействования значительных ресурсов для каждого города, поэтому отпадает. Можно воспользоваться API от Google, но там есть ограничение на количество запросов в день + не всем водителям есть возможность установить google play сервисы.

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

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

  • Убрать проблему того, что пройденный маршрут постепенно увеличивается, когда машина фактически стоит на месте. Это происходит из-за того, что GPS координаты приходят с погрешностью, и на карте выглядит как “звезды”.
  • Отфильтровать резкие “скачки” в точку, удаленную от реального маршрута на значительное расстояние (до 500 метров)
  • Восстановить маршрут при кратковременной (

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

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

Возник такой вопрос: что, кроме GPS координат, может дать информацию о местоположении объекта? Можно использовать:

  1. wi-fi точки, но в нашем городе свободных wi-fi точек мало.
  2. Можно использовать GSM-вышки, но нужно составить их карту.

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

Первый же запрос выдал информацию о том, что современные (и не очень) смартфоны оснащены набором датчиков, среди которых почти всегда есть акселерометр, гироскоп и магнитометр. Гироскоп стали добавлять в относительно новые телефоны, но это и не очень критично. То есть, в теории у нас есть еще один источник данных, который может помочь в определении местоположения объекта. Главное разобраться, как использовать эти датчики для получения информации о том, в какую сторону направлен вектор ускорения.

Акселерометр

Акселерометр это прибор, измеряющий проекции кажущегося ускорения . Это очень простое устройство, которое, грубо говоря, всегда знает где земля (если это не состояние свободного падения, конечно). Представим грузик с известной нам массой m, закрепленный между двумя пружинами. При ускорении в оси пружин грузик отклонится и по этому отклонению можно судить о силе, действующей на грузик. В микросхемах похожий механизм, только вместо грузика используется конденсатор.

Акселерометр можно использовать для определения ускорения тела и для определения угла наклона (в качестве инклинометра). Данные акселерометра довольно сложно интерпретировать. Допустим он показывает ускорение по оси X. С чем это связано? Тело может двигаться с ускорением вдоль оси X, может быть наклонено и это проекция g на ось X. В этом простейшем случае мы можем посмотреть на значение ускорения вдоль оси Z, но обычно ситуация сложнее. Но главная проблема в том, что акселерометр показывает только относительные ускорения, которые никак нельзя связать с картой и GPS координатами.

Еще одна проблема — акселерометры “шумят”. Есть приложение Acceleration explorer, с помощью которого можно очень хорошо увидеть насколько сильно шумит акселерометр и как с этим можно бороться. Можно использовать метод скользящего окна, фильтр низких частот, медианный фильтр или еще какой-нибудь хитрый алгоритм, чтобы уменьшить шум датчика. Но это может приводить к ошибкам и медленной реакции фильтра.

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

Гироскоп

Гироскоп — это устройство, способное реагировать на изменение углов ориентации тела, на котором оно установлено, относительно инерциальной системы отсчета.

Зная начальное положение устройства в пространстве можно найти текущее положение, проинтегрировав показания гироскопа. Это очень точный и быстрый датчик, однако при интегрировании растёт ошибка и показания постепенно “уплывают”. Для борьбы с этим явлением используется sensor fusion, описанный далее.

Магнитометр

Магнитометр — это датчик, измеряющий характеристики магнитного поля. Простейшим подобным прибором является обыкновенный компас. Грубо говоря этот датчик всегда “знает” где север.

Однако всё не так однозначно, как может показаться на первый взгляд. Во-первых, магнитометр будет реагировать на любой сильный источник магнитного поля. Во-вторых, существует еще такое понятие, как “магнитное отклонение” — угол между “магнитным” Севером и “истинным” Севером (направлением вдоль меридиана на север). Национальное агентство геопространственной разведки (NGA) предоставляет исходные коды приложения, написанного на C, для определения значения магнитного отклонения на основе WMM (world magnetic model). Так же предоставляется файл с данными, который обновляется каждые 5 лет. Но об этом можно особенно не задумываться, потому что в Android есть специальный метод. Если это не андроид — можно воспользоваться готовым кодом отсюда https://www.ngdc.noaa.gov/geomag/WMM/soft.shtml.

Определение ориентации телефона в пространстве

Итак, у нас есть 3 датчика, с помощью которых мы можем однозначно определить положение телефона в пространстве. Можно выразить его с помощью матрицы поворота. Так же у нас есть вектор ускорения.

Для того, чтобы получить ускорение в “абсолютной” системе координат (связанной с Землёй) необходимо просто умножить инвертированную матрицу поворота на вектор полученного ускорения. Так происходит вот почему. Допустим у нас уже есть матрица поворота R, которую мы получили, воспользовавшись одним из алгоритмов AHRS (см. описание ниже). Предположим наше устройство никуда не движется. Тогда вектор ускорения A примет вид[Ax Ay Az].T() (T() значит транспонированый). При умножении R*[0 0 1].T() мы должны получить вектор A. Кстати это очень хорошая проверка того, что AHRS работает правильно. [0 0 1].T() — это вектор ускорений устройства, находящегося в покое, в “абсолютной” системе координат. Значит должен быть способ получить этот вектор из вектора A, используя матрицу R. Из курса линейной алгебры вспоминаем, что нельзя одну матрицу разделить на другую. Вместо этого можно умножить матрицу на инвертированную. Отсюда следует, что [0 0 1] = Rinv*A. Для нахождения инвертированной матрицы и всех этих умножений лучше всего использовать openGL.

В результате получится вектор из 3х элементов: ускорение на восток, на север и вверх.

Есть много методов для определения положения устройства в пространстве на основе данных от акселерометра, магнитометра и гироскопа. Часть из них можно посмотреть в приложении по ссылке ниже:

Mad Devs Sensor Fusion App

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

Из них всех было выбрано 2 лучших — виртуальный сенсор ROTATION_VECTOR и фильтр Маджвика (см. описание ниже). Лучшие они по нескольким причинам. Главные — они просты в использовании и для реализации не нужно писать очень много кода 🙂 При этом они не шумят и работают очень быстро.

Виртуальные датчики Android

Разработчики Android проделали огромную работу для улучшения показаний датчиков и нам не нужно изучать и реализовывать все хитрые алгоритмы sensor fusion и AHRS. Для определения ускорения можно воспользоваться датчиком LINEAR_ACCELEROMETER, который выдает ускорения без учета силы гравитации. А для определения ориентации в пространстве можно (и нужно) использовать ROTATION_VECTOR.

Лучший результат показывает ROTATION_VECTOR, использующий фильтр Калмана. Здесь можно посмотреть на файл Fusion.cpp и немного повосхищаться.

Фильтр Маджвика

Фильтр Маджвика — это ПО с открытым исходным кодом, рассчитанное, в первую очередь, на низкую вычислительную мощность целевой системы. В качестве входных данных он использует показания акселерометра, гироскопа и (опционально) магнитометра. На выходе получается кватернион, описывающий положение устройства в пространстве. Он работает действительно быстро и почти не тратит ресурсы (в документации утверждается, что используется 160 операций сложения, 172 умножения, 5 делений и 5 извлечений квадратного корня), но есть проблема в определении параметров этого фильтра. Один из них — частота, с которой поступают данные с датчиков. Во встраиваемых системах можно очень точно её определить, но в Android ситуация другая. Используя Android можно указать только минимальную частоту опроса, в то время как реальня частота может быть гораздо выше. Впринципе это можно обойти, подсчитывая эту частоту каждый раз, когда приходят данные со всех 3х датчиков. Второй параметр — коэффициент усиления. Его нужно подбирать для каждого устройства индивидуально, чего нельзя сделать, когда даже телефоны одной модели могут давать разный результат. Так же этому фильтру нужно некоторое время (около 5–7 секунд, зависит от коэффициента усиления) на инициализацию/стабилизацию. Из плюсов стоит отметить, что его легко перенести на любую платформу.

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

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

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

Реализация фильтра сама по себе не очень сложна. Нужно определить и реализовать несколько операций с матрицами и просто следовать формулам из википедии. Есть множество готовых библиотек (даже в openCV есть этот фильтр https://docs.opencv.org/trunk/dd/d6a/classcv_1_1KalmanFilter.html), но можно реализовать что-то своё, чтоб лучше понимать, как он работает. Главная задача — определить вектор состояния системы, матрицу перехода, управляющий вектор и прочие компоненты фильтра Калмана. Одна из самых сложных задач — определить ковариационные матрицы шума процесса и шума измерений.

Матрицы в текущем решении основываются на законе равномерного движения, только в матричной форме (т.к. у нас 2 направления — восток и север). В такой форме довольно легко расширить фильтр, чтоб он учитывал и ускорение вверх, но пока в этом нет необходимости. А можно наоборот разбить фильтр на 2 или 3 для каждого направления. Почти ничего не изменится, только размеры матриц уменьшатся.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *