Интерфейс HUD в Iron Man
Разработкой приложений с использованием дополненной реальности и для навигации я достаточно плотно занимаюсь уже 4 года, практически с того самого момента, когда в смартфоне впервые появилась возможность ориентации в пространстве.
Речь, прежде всего, идет о тех приложениях, где дополненная реальность используется в практических целях, а не про рендеринг трехмерных собачек поверх похожих на большие QR-коды маркеров напечатанных на бумаге.
Наибольшая практическая ценность таких технологий на сегодня присутствует в навигационных и измерительных приложениях, которые можно использовать для решения множества различных задач – от непосредственно навигации, когда, например, в лесу нужно запомнить и потом найти место, где оставлен джип или зарыта заначка с банковским методом запечатанными в пленку пачками долларов, от множества географических игр на ориентацию до практических инженерных вещей в области связи, например, для более точного прицеливания антенн, в областях строительства, недвижимости, астрономии, и, конечно, в тактических полевых задачах.
Как оказалось, с этой самой ориентацией дела до сих пор обстоят не так радужно, как это можно представить по демонстрационным роликам приложений и гаджетов с дополненной реальностью, типа Glass от Google – проблемы здесь преимущественно на стороне железа, но производители пока не торопятся их решать.
В таких приложениях весьма важна точность ориентации, которая основывается на показании группы сенсоров – акселерометра, компаса, гироскопа и GPS. Каждый сенсор имеет свои пределы точности, нюансы, подверженность воздействию внешних факторов, а по мере длительной работы могут накапливаться ошибки, что затрудняет использование ориентации на практике. За подробностями изложенными понятным языком и, которые, возможно, будут интересны не только отдельным разработчикам, но и продвинутым пользователям, желающим повысить практичность использования их гаджетов, приглашаю под кат.
В чем же именно засада?
Несколько лет практической работы с мобильным железом, знакомство с промышленными системами инерциальной навигации, для кораблей, самолетов и других аппаратов, а также плотная работа над навигационными и инженерными приложениями с множеством практических функций вылились в опыт, которым хочется поделиться и который дает понять, что требуется в будущем от мобильных устройств, для более надежного их применения в реальных задачах.
Стремление улучшить точность и практичность своих приложений заставило разобраться в деталях и выработать методы позволяющие тем или иным способом обойти ограничения, особенности и ошибки железа.
На сегодняшний день с использованием дополненной реальности и мобильных устройств можно на том или ином уровне решать множество задач.
Фактически делать с их помощью можно все, но точность и другие проблемы с сенсорами этот ряд задач либо ограничивают, либо снижают удобство так, что практическая ценность может опускаться почти до ноля.
Каждому из ряда датчиков, которые сегодня можно найти в любом из современных смартфонов и которые используются в ориентации, присущи и общие проблемы, и специфические только для него.
Поскольку для определения положения устройства используется сразу несколько датчиков в комплексе, то общая точность страдает от суммирования и накопления ошибок сенсоров.
Меньше всего проблем с камерой, видео и привязкой виртуальных маркеров-указателей к реальным объектам – зная параметры системы линз камеры, размеры оптического сенсора, и размеры экрана, относительно точно совместить реальность с виртуальностью не составляет особого труда.
Внешние факторы, погода
Общая для многих электронных датчиков проблема в том, что их показания могут быть подвержены воздействию таких параметров окружающей среды, как, например, температура, давление и влажность воздуха, явления в атмосфере, ее верхних слоях, солнечная активность, о чем многим разработчикам может быть неизвестно.
Обычно подобные этим параметры учитываются еще на уровне драйверов, а до разработчика, таким образом, через API доходят уже обработанные данные, но это тоже влияет на точность данных поставляемых сенсорами.
Да, в iPhone есть возможность определения температуры. Доступ к этому для разработчиков пока закрыт. Хотя пока не ясно, определяется ли температура по косвенным признакам на основе данных каких-либо не связанных напрямую с температурой сенсоров или таки используется специальный именно температурный датчик – в сети встречаются фотографии устройств iOS с сообщениями о перегреве на экранах, но в списках железа при разборке и анализе температурные датчики отдельно не упоминаются.
Навигация в сложных погодных условиях
Компас и магнитное поле Земли
Компас, необходимый для горизонтальной ориентации, страдает от внешних помех – на его показания влияют крупные металлические предметы, электромагнитные поля, что может быть особенно заметно в большинстве средств передвижения, например, машинах, яхтах.
Сама природа магнитного поля планеты Земля такова, что оно не является чем-то однородным и постоянным.
Магнитные полюса и само поле постоянно меняются, а, поскольку в навигации прежде всего интересно направление на географический полюс, то особенно важным является знание того, что в разных регионах планеты магнитное склонение, разница между направлениями на магнитный и северный полюса, существенно различается.
Если, например, проехать через штат Флорида, то ошибка магнитного компаса, который был настроен на показ географического полюса, достигнет уже 30 градусов.
Магнитное поле неоднородно и на небольших расстояниях, например, во многих помещениях.
Так, если откалибровать компас развернувшись к северу, а потом повернуться к западу или востоку, то устройство и, соответственно, датчик, может оказаться в других магнитных условиях – ведь обычно человек с гаджетом в руке поворачивается вокруг собственной оси, а не вокруг оси магнетометра, что в среднем для гаджета является перемещением в пространстве на почти 50 сантиметров в Земной системе отсчета.
Поэтому на точность определения географического полюса также влияют и данные GPS – магнитное склонение определяется по координатам.
Карта вариабельности магнитного поля Земли
Акселерометр и гравитация
Акселерометр, который необходим для определения вектора гравитации, довольно часто нуждается в дополнительной калибровке.
Разница в показаниях от устройства к устройству может достигать нескольких градусов.
Причем при повороте устройства на 90 или 180 градусов датчик скорее всего покажет значения также на пару градусов отличающиеся от реальных углов поворота, даже если была проведена калибровка для начальной позиции, что по факту требует калибровки акселерометра для каждой из ориентаций устройства, которые планируется использовать.
Гироскоп
С гироскопом одновременно и проще и сложнее.
При его использовании для ориентации берется определенное начальное значение, точка отсчета, связанная с данными других сенсоров или вручную выставленными параметрами на определенный момент, что делает гироскоп удобным для более точной ориентации – причем, в отличие от магнитного датчика, гироскоп позволяет ориентироваться в трех измерениях, а не только в горизонтальной плоскости на поверхности Земли.
Сложность же заключается в том, что данные гироскопа не только имеют определенную, пусть и небольшую, погрешность, но и подвержены влиянию таких внешних факторов, как, например, мельчайшая вибрация, дрожание рук, удары, ускорение и другие – влияет даже биение сердца пользователя.
Дело не столько в том, что датчик не успевает обрабатывать все поступающие данные.
Из-за того, что гироскоп используется с привязкой к определенной начальной точке отсчета, как к положению в трехмерном пространстве, даже самые мельчайшие погрешности со временем накапливаются – чем больше времени проходит от предшествующего замера начального положения, тем больше накопленная ошибка.
Конструктивные особенности электроники и датчиков
В потребительских устройствах типа смартфонов используются электронные датчики, которые, в силу своих конструктивных особенностей, не могут обеспечить абсолютно идеальную картину мира в своей сфере компетенции.
Датчики обычно делают пробы через некоторые определенные промежутки времени, что приводит к пропуску событий, которые происходят за время меньшее такого интервала – да и мобильное железо часто может просто не успевать обрабатывать все поступающие события.
Нужно отметить, что с каждым следующим поколением устройств сенсоры делают измерения в разы чаще, точность данных растет, а величины погрешностей уменьшаются, но, все равно, полностью они не исключаются по различным причинам – и в силу конструктивных особенностей, и для экономии энергии, что весьма критично для мобильных устройств.
GPS и GLONASS
Несмотря на свои особенности, определение местоположения по спутникам один из самых стабильных методов используемых для ориентации и для навигации.
Возможно поэтому сегодня ориентация с помощью GPS имеет такое широкое распространение в решении повседневных задач, что доступно практически каждому.
Точность GPS на доступных обычным пользователям устройствах достигает 10 метров при использовании данных сотовых вышек – в более современных устройствах, которые поддерживают одновременно и GPS и GLONASS точность достигает 5 метров.
Из доступного гражданскому потребителю, точность может повышаться при использовании серверов, например, при тех же сотовых вышках, которые зная свое точное положение и имея большие вычислительные ресурсы, принимают данные от устройств и производят вычисления с большей степенью точности, принимая во внимание больше факторов влияющих на вычисления.
Для многих задач подобной точности вполне хватает. Для определения направления, например, к Солнцу, Луне, Сириусу, или к достаточно удаленной географической точке разница в десяток метров ничтожна. Чем дальше объект, тем меньше будет относительная погрешность в определении направления на него.
С привычной навигацией по дорогам несколько сложнее. Данные приходят и обрабатываются пакетами, что приводит к обновлению текущего положения резкими скачками. Кроме всего прочего, данные GPS требуют времени на их обработку и успевают устаревать по мере быстрого движения.
Справиться с этим помогают карты дорог и алгоритмы предсказания с применением различных фильтров, типа, Калмана. Все кто пользуется GPS-навигаторами могли заметить, что местоположение на карте обновляется плавно, а в тоннелях, где спутники недоступны, индикатор положения средства передвижения еще продолжает двигаться. Да и эффект перескока с одной дороги на другую на плотных развязках с близко идущими дорогами далеко не редок.
HUD в BMW
Как же в кораблях, самолетах и космосе?
В отличие от смартфонов и гражданской потребительской электроники, промышленные системы инерциальной навигации и определения точного местоположения не ограничиваются единственными датчиками для каждого типа данных и часто используют другие технологии.
Наличие нескольких датчиков, например, нескольких гироскопов, позволяет компенсировать неточности, хотя и требует обработки данных фактически в реальном времени, а соответственно и больше энергии.
Иногда таких устройств могут быть целые группы, которые могут не только помогать определять ориентацию в пространстве, но и своей работой эту ориентацию поддерживать, как в космических кораблях – правда такие устройства имеют размеры явно отличающиеся от размеров тех датчиков, что установлены в смартфонах.
Калибровка, которая решает вопросы и в мобильных устройствах, также не исключается совсем, но эти системы намного более надежны, точны и могут работать дольше в автономном автоматическом режиме, без необходимости повторной калибровки – применение их, соответственно, более практично.
HUD в самолете
В смартфонах пока в основном имеется лишь по одному датчику на каждый из типов данных. Да и используются они, в отличие от серьезных систем, не все время, что из-за перерывов в их работе приводит к потере ориентации, которую потом нужно восстанавливать заново. Ведь это не основная из функций таких мобильных устройств, а энергии на постоянную работу будет уходить значительно больше в ущерб времени автономной работы.
Профессиональные устройства обрабатывают информацию более тщательно и по совсем другим принципам, так как это их основная цель – те же более точные GPS-ресиверы используют и специальные наземные станции разных типов, повышающие точность до 10 сантиметров, и совершенно другой подход к обработке данных от спутников, типа, фазового анализа, который выдает точность до 1 сантиметра.
Стоит учесть, что точность GPS для гражданских потребителей ограничена уже сразу на уровне данных поступающих со спутников. Эти ограничения достигаются и методом внесения случайных ошибок в данные, и методом закрытия доступа к определенным типам спутниковых сигналов. Таким образом профессиональные и военные устройства определяют свое местоположение намного более точно, чем обычные гражданские.
SkyNet наносит точный удар в 4-м Terminator
Перспективы
Анализируя ролик Google Glass с учетом знаний о том, как на сегодня реально обстоят дела с ориентацией в трехмерном пространстве на поверхности Земли у мобильных электронных устройств, напрашивается вывод, что продукт не предоставит нам что-то намного большее, чем мы имеем уже сегодня.
Интерфейс Google Glass
Максимум навигация с использованием GPS для ориентации, вывод информации соответствующей местоположению и утилитарные примочки не зависящие сильно от точной ориентации устройства, типа, погоды, курсов валют и акций, фото, видео и почты с голосовым управлением – собственно, то, что уже есть на многих мобильных платформах, только в очках.
Само по себе это, конечно, очень хорошо – отличное новое устройство для гиков, ранних потребителей, типа, меня.
Но хотелось бы чего-то большего и удобства.
Задумавшись я себе представил калибровку компаса в Glass в виде пресловутого “figure 8 motion” при очках водруженных на голову, а также подумал о времени автономной работы нового гаджета без необходимости подзарядки – ведь постоянно работающие сенсоры и GPS требуют прилично энергии.
Как же продуктивно и точнее пользоваться тем что есть на практике?
Несмотря на имеющиеся недостатки и особенности современные гаджеты вполне можно эффективно использовать в практических целях – для этого, правда, желательно знать об особенностях описанных выше, даже если автор выполняющего задачу приложения их учитывал при разработке.
Наиболее простой задачей является навигация с GPS, при использовании которой не нужно задумываться практически ни о чем – единственное, если движение осуществляется вне дорог, то стоит наблюдать за точностью данных GPS.
Если же стоит другая задача – прежде всего нужно исходить из поставленной задачи, для решения которой следует выбирать наиболее соответствующий способ использования и самого гаджета, и способ использования приложения на нем.
Например, в своих приложениях, в целях обхода ограничений оборудования и уменьшения влияния ошибок различных сенсоров, я постарался реализовать максимум возможностей помогающих более эффективно и точно решать реальные практически задачи – аналогов, на примере которых можно было бы проиллюстрировать эти практические приемы, практически нет.
Интерфейс компаса и утилиты Spyglass
Компас, а точнее ориентация в горизонтальной плоскости или вращение по оси гравитации, имеет несколько режимов – помимо магнитного он может работать и как гирокомпас с использованием только гироскопа, что полностью исключает и погрешность магнитного датчика и влияние помех, и как GPS-компас, который определяет направление по курсу движения и, таким образом, исключает еще и недостатки гироскопа.
Акселерометр, который определяет, собственно, плоскость горизонта, как перпендикуляр к вектору гравитации, можно откалибровать для каждой из возможных ориентаций устройства, что устраняет недостатки, если устройство нужно перевернуть в другую ориентацию.
При этом с использованием гироскопа значительно улучшается точность определения направления в трехмерном пространстве – мой компас в отличие от большинства других полностью работает в трехмерном пространстве и может указывать направление не только в плоскости горизонта к географическим точкам, но и на реальное расположение объектов учитывая высоту над уровнем моря, изгиб земной поверхности, указывать положение звезд, Солнца, Луны, учитывая множество факторов из вычислительной астрономии.
Правильный подход к точному определению положения и ориентации в движении и в различных инженерных задачах по измерению чего-либо на месте с использованием современных мобильных устройств будет разный.
При использовании магнитного компаса для наибольшей точности необходима калибровка при каждом последующем чтении направления, в силу изменчивости магнитного поля – то есть магнитным компасом реально пользоваться только в одной точке после калибровки, при перемещении в другую точку с большой вероятностью калибровка потребуется снова.
С гирокомпасом, который также требует калибровки, тактика использования примерно та же. Сначала необходимо произвести калибровку, а потом уже выяснить нужное направление и двигаться по нему какое-то время не глядя на показания приборов. Лучше даже выключить гаджет для большей экономии заряда батареи.
Постоянное использование магнитного компаса и гирокомпаса во время движения относительно бесполезно из-за свойств поля с магнетометром и накопления ошибок с гироскопом.
Поэтому во время движения, если необходимо постоянно наблюдать за данными с устройства, что особенно актуально в велосипедах, байках, машинах и других средствах передвижения из-за помех от металла и излучения, лучше переключиться на ориентацию по спутникам в режим GPS-компаса, когда направление будет определяться по курсу движения.
Если же нужно произвести точные измерения на месте или, например, прицелить антенну или телескоп, то наилучший режим это гирокомпас, который можно откалибровать самыми разными способами, например, ориентируясь по карте или с использованием небесных тел, Солнца и Луны, при отсутствии карты.
Даже для обхода точности GPS, например, в помещениях, местоположение можно установить вручную задав координаты или выбрав точку на карте – прием отлично подходит, когда две Wi-Fi или радиоантенны размещенные в зданиях разной высотности нужно точно нацелить друг на друга.
Более того, зная вводные данные далеко не всегда обязательно выезжать на местность – необходимые вычисления углов поворота, расстояний, направлений и так далее можно произвести не сходя с места, просто введя нужные данные в приложение.
Мечты или что было бы возможно при полноценной ориентации
Если бы мобильные устройства могли бы более стабильно, более точно ориентироваться в автономном режиме, без связи и при недостатке данных, то это дало бы людям целый ряд новых возможностей.
Стала бы возможна полноценная навигация в пещерах и под водой, куда не проходит сигнал со спутников GPS – многие помнят историю из «Илиады», где Ариадна помогла Тесею в лабиринте Минотавра с помощью своей путеводной нити.
Карта составленная автоматическим ботом в Alien vs. Predator: Requiem
Стало бы возможно автоматически составлять карты тех же пещер, планы зданий – в теории такое возможно уже сейчас, если считать шаги и пользоваться компасом, который относительно неплохо чувствует себя под землей, но на практике стабильность точного подсчета шагов и данных магнетометра оставляет желать лучшего.
Значительно улучшилась бы обычная навигация, стала бы возможной лучшая навигация под водой, куда тоже не доходит обычный GPS, повысилась бы точность различных измерений – все варианты использования технологий предугадать попросту невозможно.
Остается надеяться на технический прогресс и прогресс компаний, которые приводят в нашу жизнь полезные и революционные гаджеты.
Автор: happybyte