Скачать 2 гид для андроида. «2ГИС» – электронная карта и справочник в одном смартфоне. Затянувшийся режим принудительной остановки

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

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

Уникальные особенности мобильной программы:

  • Доступные понятные карты с подробной информацией о фирмах города без подключения к Сети: часы работы, контакты, адреса и фото
  • Расположение общественных организаций поблизости: кафе, рестораны, кинотеатры, магазины, такси и т.д.
  • Построение маршрутов с учетом любых видов транспорта: метро, троллейбус, автобус, электричка и даже речной трамвайчик, ну или просто пешеходный маршрут
  • Навигация по крупнейшим торговым центрам и супермаркетам: на схеме поэтажные планы, туалеты, зоны питания и другие важные сведения
  • Данные ваших обслуживающих организаций: провайдеры, больницы, ЖЭКи и т.п.

    Таким образом, вы никогда не заблудитесь не только где-нибудь на улице, не проедете свою остановку и не пропустите свой поворот, но и сможете прекрасно ориентироваться внутри зданий. Именно поэтому 2ГИС на Андроид считается лучшим навигатором и проводником, способным затмить все остальные приложения подобного рода. Инструмент умеет понимать запросы буквально с полуслова, вы даже можете вводить народные названия, приложение все равно отыщет то, что вам нужно.

  • Приезжая в чужой город, можно легко потеряться в незнакомых улицах, а для того чтобы этого не произошло, достаточно в смартфон скачать GPS навигатор 2ГИС. Продукт российского производителя, входящего в ТОП интернет компаний России, совершенствуется из года в год и радует своих пользователей новыми удобными функциями. Работает даже в офлайн режиме.

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

    • название организации;
    • контакты организации;
    • время работы;
    • сайт организации;
    • способы оплаты услуг.

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

    • бары;
    • банкоматы;
    • такси и так далее.

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

    Интересно! Данный справочник содержит в себе информацию по каждой организации в 273 городах 9 стран.

    Данные по организациям обновляются постоянно. Для этого задействованы сотни специалистов call-центров по всей стране. Производители гарантируют 95% точности данных.

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

    Возможности 2ГИС

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

    Встроенный навигатор

    Изначально 2ГИС использовался как справочник по организациям, теперь же в нем появился удобный навигатор, который имеет следующие возможности:

    1. Следит за пользователем и отображает на экране все его передвижения.
    2. Голосовое сопровождение маневров.
    3. При потере маршрута автоматически подбирает новый.
    4. Показывает время, необходимое на преодоление пути.
    5. Умеет сопровождать пользователя до входа в здание.
    6. Учитывает все препятствия, например, заборы и шлагбаумы.
    7. Выстраивает маршрут с учетом пробок, разводных мостов и ремонтных работ.

    Производитель обещает, что в будущем он усовершенствует навигатор следующими функциями:

    1. Предупреждение о превышении скорости водителя.
    2. Предупреждение о лежачем полицейском впереди.
    3. Добавятся маршруты по платным и грунтовым дорогам.
    4. Введется ночной режим.

    Данный навигатор доступен для следующих платформ:

    • Symbian;
    • Microsoft Windows;
    • Android;
    • Windows Phone.

    Все функции, кроме учета транспортных пробок, доступны в офлайн режиме.

    Этажи

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

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

    Номер телефона организации

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

    Красивый интерфейс

    Приложение имеет свой фирменный дизайн интерфейса. Все здания в навигаторе видны в формате 3D, к каждому зданию есть пометка о том, сколько в нем этажей. Также учтены все внутренние дороги и киоски.

    Поиск проезда общественным транспортом

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

    1. Указать на карте начальную и конечную точку маршрута.
    2. В карточке необходимого объекта, в контекстном меню выбрать «Как проехать сюда?».

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

    Инструкция к применению

    После того, как будет установлен 2ГИС, необходимо разобраться в принципах его работы. Для того, чтобы было удобно работать с приложением, необходимо совершить следующие действия:

    1. После входа в нужно выбрать город, список городов предоставляется во всплывшем окне.
    2. Выбрать нужную функцию из 4 кнопок, предоставляемых приложением.
    3. Для доступа к информации об организациях нужно выбрать кнопку «фирмы».
    4. Для более подробной информации можно нажать на кнопку «уточнить условия».

    Плюсы приложения:

    1. Есть возможность сохранить данные по организациям в буфер обмена.
    2. В информации по объекту сразу предоставляются данные о том, как туда добраться, каким транспортом.
    3. В карте приложения есть возможность изменить масштаб.
    4. Наличие папки избранное, куда можно добавлять заинтересовавшие организации для быстрого доступа к ним.

    После установки 2ГИС нужно будет дополнительно скачать базу данных городов, которая занимает не так много памяти, исключение составляет Москва.

    Важно! Справочник 2 ГИС охватывает, пока что, только крупные города. Производители работают над этим, и в скором времени информация будет доступна по всем городам России.

    Версия для компьютера

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

    1. Звонок по Skype, не выходя из программы.
    2. Доступны базы с описанием интересных мест и истории городов.
    3. Возможность померить расстояние между объектами.
    4. Возможность оставлять заметки на карте.
    5. Доступны афиши и расписание междугороднего транспорта.

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

    В 2ГИС появилось голосовое ведение по маршруту. Теперь приложение можно использовать как навигатор: оно проведёт ко входу в организацию, учитывая пробки, заборы и разведённые мосты. Навигатор уже доступен на iOS и Windows Phone, а с 22 августа - в новой версии 2ГИС для Android со свежим дизайном.

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

    «2ГИС постоянно актуализирует карты и дорожную сеть. Мы знаем множество внутриквартальных проездов, какие дома огорожены заборами, где расположены въезды и входы в организации. Именно к нужному входу и приводит наш навигатор,»

    Говорит Павел Мочалкин, директор департамента исследований и разработок 2ГИС.

    Как и само приложение, навигатор работает без подключения к интернету во всех городах России и СНГ, где есть 2ГИС. Он рассчитывает примерное время в пути и показывает, во сколько пользователь доберётся до места. Учитывает пробки, график разведения мостов, перекрытие дорог там, где это известно. Если доехать можно двумя путями, навигатор предложит выбор.

    Навигатор 2ГИС работает на iPhone с iOS 8.0 и выше, Windows Phone 8.1 и выше. Чтобы воспользоваться им, нужно обновить 2ГИС в своём смартфоне или бесплатно скачать в AppStore или Windows Store.

    «Так как месячная аудитория 2ГИС на Android уже давно больше 8 миллионов пользователей, новую версию для Android мы будем выпускать постепенно, в течение нескольких недель начиная с 22 августа. Это дольше, чем на других платформах, потому что помимо появления навигатора в Android-приложении полностью меняется дизайн. Первыми возможность скачать обновлённый 2ГИС получат 5% случайных пользователей Android, у которых уже стоит предыдущая версия. Следом ещё 5%, потом ещё. Если хочется воспользоваться новым 2ГИС прямо сейчас, в Google Play можно скачать бета-версию по запросу «2ГИС бета,»

    Рассказывает Павел Мочалкин.

    Описание принципа работы навигатора 2ГИС

    Навигатор 2ГИС строит путь ко входу в нужную организацию и предлагает до двух оптимальных вариантов маршрута (1 фото - пример на Android, 2 фото - пример на iOS).

    Навигатор 2ГИС учитывает пробки и строит маршрут в обход них (1 фото - пример на Android, 2 фото - пример на iOS).


    Навигатор 2ГИС ведёт по дороге, подсказывает, через сколько метров нужно совершить очередной манёвр, и рассчитывает время прибытия к цели. Если пользователь собьётся с намеченного курса, навигатор тут же перестроит маршрут (1 фото - пример на Android, 2 фото - пример на iOS).


    Навигатор 2ГИС знает внутриквартальные дороги и строит маршрут в обход заборов и шлагбаумов прямо к нужному входу. Работает офлайн (1 фото - пример на Android, 2 фото - пример на iOS).


    На всех смартфонах на базе Android 4.1 и выше 2ГИС в новом дизайне и с навигатором будет доступен в начале сентября.

    С появлением навигаторов водителям стало намного легче ездить по незнакомым городам. Но со временем прогресс шагнул ещё дальше, и начали входить в моду навигаторы на смартфоны. Смартфон сам по себе является чудом техники, особенно для старшего поколения, которому кажется невообразимыми все современные функции смартфона, а тут ещё и навигатор в нём встроен. Навигатор для Андроид – это всего лишь программы, только одни стабильно работают и выполняют свои непосредственные функции, а с другими сплошные проблемы. Но навигатор 2ГИС – это совсем другая история, поэтому о нём мы сегодня и поговорим.

    Описание программы

    Программа 2ГИС на Андроид представляет собой справочник, который вмещает в себя навигатор и просто карту. Основным преимуществом является работа без интернета. Отсюда возникает вопрос: как тогда приложение работает? Ответ предельно прост – нужно лишь скачать карту своего города. Проблема заключается в том, что в приложении имеются карты только больших городов, и то их надо скачивать. Но и не будем забывать, что у вашего смартфона должна быть стабильная работа GPS, и он должен без проблем подключаться к спутникам.

    Теперь поговорим об основных функциях, которые предоставляет нам 2ГИС:

    Адреса и компании

    С помощью 2ГИС вы можете запросто отыскать ближайшее отделение почты, кафе или гостиницу. Кроме того, 2гис покажет фотографии и отзывы клиентов.

    Навигация

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

    Торговые центры

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

    Города

    Карты есть для больших городов России, Украины, Казахстана и Киргизии, а также таких городов как Дубаи или Кипр. Возможно в скором времени появятся карты большего количества городов, но пока довольствуемся тем, что есть.

    Интерфейс программы

    В интерфейсе 2гис для мобильного на базе Андроида нет ничего необычного, на вид обычный навигатор, в светлых тонах.

    Плюсы и минусы

    Ну и как всегда, поговорим о достоинствах и недостатках обозреваемой программы. К плюсам можно отнести следующие пункты:

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

    К большому сожалению, недостатки тоже нашлись:

    • карты только больших городов;
    • нестабильная работа на слабых устройствах.

    Как можно заметить, минусы не значительные, но всё же они есть. По слабым устройствам всё понятно, им просто может не хватить ресурсов для стабильной работы, а также может подвести работа GPS. Приложение 2гис можно скачать бесплатно с нашего сайта. Приложение 2гис для Андроида - хорошая альтернатива разжиревшим Google Maps.

    Заключение

    Итак, что мы можем сказать о приложении 2гис для android? Отличная программа, работающая без интернета. Как навигатор он выполняет свои основные функции, но очень жаль, что имеются карты только больших городов. Но есть и обратная сторона медали – карты не только для городов России, но и некоторых других. Минимальный размер программы и широкий функционал делают 2гис просто незаменимым помощником для туристов или путешественников. Можно сказать точно, что 2 гис является одним из лучших навигаторов на телефон. Так что, если вы еще сомневаетесь, нужно ли скачать 2гис - скачивайте, не пожалеете.

    В приложении 2ГИС теперь есть навигатор. Мы научились «ехать» по треку, озвучивать манёвры, автоматически перестраивать маршрут, рассчитывать время в пути, доводить пользователя до входа в здание или организацию, учитывая заборы и шлагбаумы, - и всё это в честном офлайне. Пробки (вот разве что для них нужен интернет), разведённые мосты и перекрытые улицы учитываем давно. Пока в нашем навигаторе - необходимый минимум. Чуть позже научим его предупреждать о слишком высокой скорости, лежачих полицейских и камерах ГИБДД, настроим ночной режим, сделаем маршруты по платным и грунтовым дорогам опциональными. Чтобы воспользоваться им, нужно обновить 2ГИС в своем смартфоне или скачать в AppStore или Windows Store . Для Android обновление выходит постепенно, начиная с 22 августа (будет доступно на всю аудиторию к сентябрю).

    А сегодня расскажем, как навигатор 2ГИС предугадывает положение автомобиля и плавно перемещает стрелочку по маршруту. Ведь именно качество ведения пользователя по маршруту определяет эргономику интерфейса любого современного навигатора, простоту ориентирования на местности и своевременность совершения манёвров.

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

    Маркер GPS и маршрут

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

    В самом простом случае можно отображать позицию устройства на местности, считывая координаты с датчика GPS и размещая маркер в соответствующее место на карте. Уже здесь мы сталкиваемся с первой проблемой - измерительной погрешностью, которая даже в условиях неплохого сигнала вполне может достигать 20–30 метров.

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

    Решить проблему помогает маршрут, построенный программой до точки назначения и всегда присутствующий в сценарии навигации. При помощи некоторых ухищрений мы можем «притянуть» точку на карте к маршруту, нивелируя некоторую часть измерительной погрешности датчика GPS. В первом приближении притяжку можно рассматривать как проецирование точки на линию маршрута. Рассмотрение же нюансов, а также способов обнаружения схода с маршрута, к сожалению, выходит за рамки данной статьи.

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

    Отображение геопозиции во времени

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

    1. Самый простой способ заключается в том, чтобы при получении каждого нового отсчёта от датчика тут же выполнять притяжку к маршруту и отображать соответствующее местоположение на карте. Среди достоинств стоит отметить исключительную лёгкость реализации, высокую в некотором смысле точность (ведь здесь мы просто отображаем спутниковые данные, не внося в них каких-либо серьёзных изменений) и минимальную вычислительную трудоёмкость. Главный недостаток в том, что маркер в этом случае не движется по карте в привычном понимании, а «телепортируется» из точки в точку. В основном сценарии навигации камера (виртуальный наблюдатель - термин из области компьютерной графики) привязана к маркеру GPS, поэтому подобные его телепортации приводят к резкому «проматыванию» карты вдоль маршрута и, как следствие, к дезориентации водителя, особенно на высоких скоростях, когда за время между отсчётами геопозиции автомобиль преодолевает значительное расстояние. Наша задача - помочь пользователю, а не сбить его с толку, поэтому указанного изъяна уже достаточно, чтобы исключить данный вариант из рассмотрения.

    Единственная возможность избежать дезориентации состоит в том, чтобы перемещать маркер GPS плавно, без «телепортаций», а значит, двигать его нужно существенно чаще, чем приходят отсчёты геопозиции. Чтобы обеспечить такое движение, требуется каким-либо образом вычислять промежуточные точки между реальными отсчётами с датчика и использовать их, пока не будет получен очередной отсчёт. Конкретному подходу к вычислению этих промежуточных точек стоит уделить особое внимание, так как он в конечном итоге сильно повлияет на общую эргономику программы-навигатора.

    2. Второй способ отображать местоположение пользователя связан с самым очевидным подходом к генерации промежуточных точек - интерполяции между последними реальными отсчётами GPS. Смысл в том, чтобы двигать маркер от предпоследнего отсчёта к последнему в течение некоторого заданного времени, вычисляя промежуточные точки с требуемой частотой по одной из известных математических функций (простейший вариант - линейная интерполяция). Пользоваться навигатором при таком способе значительно удобнее, но недостатки у него тоже есть.

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

    Есть и более серьёзная проблема. В момент поступления нового отсчёта маркер в лучшем случае находится в предыдущей реальной точке. С точки зрения пользователя мы вносим ещё одну погрешность позиционирования, величина которой не меньше, чем расстояние, преодолеваемое автомобилем за время между отсчётами. При скорости в 100 км/ч это значение достигает почти 28 метров, что вкупе с возможной измерительной погрешностью делает информацию, выдаваемую пользователю, мягко говоря недостоверной.

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

    3. С учётом появившегося требования к точности позиционирования стоит заметить, что теперь от нас требуется незадолго до прихода нового отсчёта GPS расположить маркер в точке, максимально приближенной к этому новому отсчёту. То есть, по сути, заглянуть будущее, пусть и ненадолго. Хотя с изобретением машины времени у человечества пока дела обстоят из рук вон плохо, для нас спасение всё же есть. Движение автомобиля инертно, поэтому скорость и направление его движения не могут меняться мгновенно, а раз так, мы можем попытаться с некоторой точностью спрогнозировать, где пользователь будет находиться в интервале между последним отсчётом позиции и будущим. Если нам удастся добиться того, что ошибка прогнозирования в большинстве случаев будет меньше, чем погрешность второго способа, то мы здорово облегчим жизнь пользователей нашего навигатора.

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

    Ведение по маршруту с экстраполяцией позиции

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

    Вспомним поступающие к нам данные и введём для них обозначения:

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

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

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

    Непосредственная кусочная экстраполяция

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

    Вспомнив про конечные разности, отметим, что у нас есть возможность оценить скорость движения автомобиля в -й момент времени, разделив длину отрезка между последним и предпоследним смещением на соответствующий временной интервал:


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

    Аналогично для производных более высокого порядка - ускорения, рывка и т.д.:


    Как видно из этих формул, для получения оценки всё более старших производных смещения требуется учитывать всё больше отсчётов, предшествующих текущему: для определения скорости нужны два отсчёта, для ускорения - три, для рывка - четыре и т.д. С одной стороны, чем больше динамических характеристик движения мы будем учитывать в своём прогнозе, тем большую моделирующую способность получим; с другой - полезная информация, содержащаяся во всё более «старых» отсчётах, драматически теряет актуальность. Например, тот факт, что мы ехали со скоростью 30 км/ч минуту назад ничем не поможет нам в текущий момент времени: с тех пор можно было несколько раз разогнаться, затормозить или вообще остановиться. По этой причине оценки всё более старших производных смещения становятся всё дальше от реальности; кроме того, вклад погрешности вычисления некоторой производной в общую аналитическую модель смещения тоже растёт с увеличением порядка этой производной. Раз так, то, начиная с какого-то порядка, динамические характеристики, оценённые при помощи конечных разностей, вместо уточнения будут только портить нашу модель.

    По результатам проверок на реальных данных выяснилось, что оценка рывка , особенно в случаях «среднего» качества сигнала GPS, уже достаточно плоха, чтобы от неё было больше вреда, чем пользы. С другой стороны, к счастью, наиболее частые сценарии динамики автомобиля - это покой, равномерное и равнопеременное движение, описываемые полиномиальными уравнениями 0-й, 1-й и 2-й степени от времени соответственно.

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


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

    В итоге функция примет вид:


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

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

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

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

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


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

    Подход к коррекции ошибок

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

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

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

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

    Если снова говорить неформальным языком, для коррекции ошибки требуется из точки за время плавно «вернуться» на следующий экстраполяционный полином - кривую .

    Для описания процесса коррекции ошибки удобно ввести отдельные функции коррекции таким образом, чтобы в момент времени соответствующая функция коррекции принимала значение , а начиная с момента становилась равна нулю:


    Если сложить такую функцию коррекции с соответствующим интерполяционным полиномом, то в ключевых точках и мы обеспечим коррекцию ошибки смещения:
    Назовём скорректированной функцией смещения сумму экстраполяционного полинома и соответствующей функции коррекции:
    Заметим, что благодаря описанным выше свойствам функций коррекции мы получили очень важное свойство функций - они уже «сшиты по смещению», т.е. не терпят разрывов в точках :
    Совокупность скорректированных функций могла бы претендовать на роль искомой модели смещения , определённой во все моменты времени, если бы не одно обстоятельство: несмотря на отсутствие разрывов смещения в точках , производные этой совокупности функций в общем случае всё ещё рвутся.

    Конкретно нас интересует разрыв первой производной - скорости, потому что исходные требования содержат условие повсеместной гладкости , т.е. условие повсеместной непрерывности скорости. С учётом этого необходимо расширить требования к функциям коррекции , чтобы «сшить» ещё и производные скорректированных функций :


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

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


    Правая часть представляет собой ошибку экстраполяции скорости - разность между скоростью, полученной по предыдущему экстраполяционному полиному, и «реальным» отсчётом скорости. Теперь мы можем собрать воедино граничные условия для функций коррекции:
    Словами их можно описать так - необходимо найти функцию коррекции, чтобы:
    • в начале интервала коррекции её значение совпадало с ошибкой экстраполяции смещения;
    • в начале интервала коррекции значение её производной совпадало с ошибкой экстраполяции скорости;
    • в конце интервала коррекции и далее значение самой функции и её производной было нулевым.

    Выбор функции коррекции ошибок

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

    Формально с учётом этого приёма функция коррекции кусочной - некоторое выражение для интервала коррекции и константа 0 далее, однако при соблюдении граничных условий в точке не будет разрыва ни самой функции коррекции, ни её первой производной. Так как разрывы более старших производных нас не интересуют (они не испортят гладкости искомой функции ), в дальнейшем не будем упоминать о нулевом «хвосте» функции коррекции, а граничные условия переформулируем в более удобном виде:


    Обозначим ошибку экстраполяции скорости через :
    Теперь нужно определить аналитическое выражение для . В связи с эргономическими требованиями к программе, помимо граничных условий, нужно, чтобы функция коррекции имела как можно меньше экстремумов и перегибов на интервале коррекции - чтобы маркер GPS «не дёргался».

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

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


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

    Примечание: последняя неточность осталась в допущении при выборе времени коррекции - наши рассуждения строились в свете условия, что всегда будет меньше интервала между отсчётами:


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

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

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

    Адаптация математической модели к реальным условиям

    Запрет движения маркера в обратном направлении

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

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

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

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

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

    Слишком большие ошибки экстраполяции и слишком долгие интервалы между отсчётами

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

    Для простоты назовём первую негативную ситуацию некорректируемой ошибкой смещения, а вторую - некорректируемой ошибкой времени.

    Работать с каждым из этих видов ошибок мы можем двумя способами:

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

    Затянувшийся режим принудительной остановки

    Любой вход в режим принудительной остановки сопряжён с выдачей менее точных данных о местоположении в угоду запрету обратного движения маркера GPS. Чтобы не дезинформировать пользователя в особо неблагоприятных случаях, наша модель дополнительно наделена возможностью прерывать режим принудительной остановки «телепортацией» маркера на последнее реальное положение по истечении заданного промежутка времени, вне зависимости от причины входа в режим (математический результат экстраполяции или некорректируемые ошибки смещения/времени). В этот момент даже плавность движений приходится принести в жертву ради «остатков» точности.

    Выводы

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

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

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

    Теги: Добавить метки