По данным самой компании, «Яндекс.Навигатором» пользуются 13 миллионов пользователей. Недавно навигатор заговорил голосом Василия Уткина и Оптимуса Прайма, но пользователи все равно недовольны: кто-то считает, что навигатор строит неоптимальные маршруты, ведет прямо по пробке или часто сбивается с траектории. В апреле появилась новость о том, что вскоре сервис станет частично платным, а в июне в навигаторе стал доступен поиск свободных мест на парковках. The Village попросил Михаила Высоковского из «Яндекс.Навигатора» рассказать о том, как сервис строит маршрут, откуда берется прогноз пробок и каких нововведений ждать.

Михаил Высоковский

руководитель сервиса «Яндекс.Навигатор»

Откуда навигатор берет данные

Открывая навигатор, мы видим, как стрелочка красиво движется по линии дороги. Но на самом деле сигнал GPS вообще не такой — это что-то, что постоянно скачет: пять метров налево, 20 метров направо. Поэтому точно показывать местоположение и вести человека по маршруту — большая задача для любого навигатора.

Навигатор получает информацию о местоположении от мобильного устройства: сначала смартфон должен понять свою географическую координату и сообщить интернет-сервису. Например, у айфона есть несколько сенсоров: GPS, ГЛОНАСС, данные базовых станций сотовой сети и Wi-Fi. Айфон это автоматически анализирует и выдает приложению конкретную координату, условно говоря: «Друг, я точно знаю, что твои координаты такие». Как именно их определило устройство — по GPS, ГЛОНАСС или сотовой сети, — остается на усмотрение операционной системы. С Android чуть проще: можно узнать, откуда исходит сигнал.

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

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

Как навигатор строит маршрут

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

Сейчас «Яндекс.Навигатор» предлагает максимум три варианта маршрута. Мы можем предложить и 50 разных маршрутов, а пользователь пусть думает, что с ними делать. Но результаты юзабилити-тестирования свидетельствуют: когда человеку выдается огромное количество маршрутов, понять, какой из них нужно выбрать на самом деле, довольно трудно.

Во время движения каждые две минуты навигатор проверяет, нет ли маршрута быстрее. При этом есть некое ограничение на то, когда этот маршрут можно предложить. Ситуация в городе быстро меняется, и, если навигатор будет все время говорить: «Найден маршрут на 30 секунд быстрее», будет довольно тяжело. Сейчас система предлагает альтернативу, если экономия времени составляет больше пяти минут, когда до маневра есть немного времени. При этом, если человеку важны даже 30 секунд, он может запросить поиск быстрого маршрута самостоятельно, зайдя в «Обзор» на панели приложения.

Сейчас алгоритм устроен так, что он оптимизирует время для каждого конкретного пользователя, то есть строит маршрут конкретно для вас. И не учитывает общественное благосостояние, пытаясь развести потоки. (В интернете появлялись предположения, что «Яндекс.Навигатор» пытается глобально влиять на транспортную ситуацию в Москве. — Прим. ред.) Но, так как пользователей много, мы неизбежно влияем на ситуацию на дорогах. Несколько лет назад навигатор был таким элитным клубом — была небольшая доля людей, которая пользовалась навигатором, и остальные москвичи. Тогда пользователи видели: здесь пробки, а тут нет пробок — и навигатор на ситуацию на дорогах никак не влиял. Сейчас, когда миллионы пользователей каждый день строят маршруты с навигатором, а мы им говорим, что здесь нет пробки, — все едут сюда, и, наверное, пробка может появиться в том числе из-за этого.

Как навигатор учитывает пробки

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

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

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

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

Почему навигатор барахлит около Кремля

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

Простым способом навигатор с изменением сигнала GPS ничего сделать не может. Он ведет себя по принципу «что устройство сказало, то я и делаю». Когда в конце прошлого года мы поняли, что ситуация на Кремлевской набережной — не разовая история, а регулярная проблема, то придумали новый алгоритм. Теперь, если навигатор видит, что координата очень быстро меняется (например, пользователь будто перелетел со скоростью 200 километров в час из одной точки в другую), система блокирует это перемещение. Стрелочка навигатора никуда не перемещается: в этот момент не работает ведение по маршруту и не определяется точная позиция, но человек хотя бы может ориентироваться по карте, куда ехать, а не обнаружить себя в серой зоне Внукова. Это работает, когда происходит «телепортация». К сожалению, есть и более сложные схемы. Иногда координату может перебросить не на десятки километров, а на соседнюю улицу, потом еще чуть-чуть и еще. В этом случае навигатор не может понять, ложный это переброс или нужно доверять последнему значению.

Как изменения в городе влияют на работу навигатора

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

Как навигатор ищет свободные парковки

Как-то раз я ехал в театр. Представьте ситуацию. Спектакль начинается в 19:00, после третьего звонка входить плохо. Я посмотрел состояние пробок и решил поехать на машине. Подъехал к конечному пункту, навигатор отчитался, что мы приехали, только на самом деле я никуда не приехал: я все еще за рулем машины, вижу театр справа, но это мне никак не помогает. Дальше вижу, что слева есть парковка, подъезжаю ближе и обнаруживаю знак «Только для инвалидов». Справа тоже есть парковка, но она стоит 200 рублей. Я вроде и хочу припарковаться, но надеюсь найти место подешевле. Пока думаю, куда ехать, оказывается, что стою на пешеходном переходе, а еще мне бибикают сзади. Возникает куча проблем. Дальше я сворачиваю в ближайший переулок и оказываюсь черт знает где. В итоге я худо-бедно оставляю машину и добегаю до театра, но это супернекомфортная история.

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

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

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

Будет ли навигатор платным

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

Каких нововведений ждать

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

Недавно стало возможным построить маршрут полностью голосом, без использования рук. Есть статистика, которая утверждает, что пользование смартфоном во время движения в 24 раза повышает вероятность аварий. Сейчас, садясь за руль, можно сказать: «Слушай, „Яндекс“, поехали домой».

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

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

Мы хотим быть не просто сухим инструментом, который ведет сквозь пробки. Поэтому в навигаторе появляются новые озвучки: раньше были стандартные голоса Оксаны и Дмитрия, потом появились Василий Уткин и Федор Бондарчук, Оптимус Прайм и Бамблби из «Трансформеров». Запись голосов звезд длилась несколько часов. Когда навигатор говорит: «Через 200 метров поверните направо», на самом деле это пять склеенных кусочков. Сейчас доступен и синтезированный машинный голос: он отличается от обычных голосов тем, что может произносить гораздо больше фраз, например названия улиц. Будут появляться новые голоса для разных аудиторий.

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