Разобравшись в тонкостях разработки приложений дополненной реальности, начинаешь понимать, что вычисления точного положения практически любых объектов в пространстве тесно связаны друг с другом.
Во время работы над очередным обновлением нашего навигационного приложения Spyglass добавление отслеживания текущего расположения небесных тел напрашивалось буквально само собой.
Теперь мы делимся подробностями. В статье мы не приводим готовых формул, но стараемся дать достаточную информацию, которая поможет разобраться, как это работает, и может стать отправной точкой для желающих разрабатывать подобные приложения.
Часть I – дополненная реальность
На сегодня существует несколько различных типов приложений дополненной реальности. В основном они различаются по методу получения информации об окружающем нас мире.
Радикально настроенные фанаты склонны считать настоящей «тру» дополненной реальностью только те реализации, где в реальном режиме времени происходит прежде всего распознавание визуальных образов. Такие приложения изначально не знают, какие предметы нас окружают, но умеют их распознавать и сообщать нам актуальную информацию о них. Схожим образом функционирует человеческий мозг.
Помимо решения достаточно непростой задачи визуального распознавания с позиции чистой науки и алгоритмов такие приложения пока еще требуют значительных вычислительных ресурсов. Также относительная стабильность распознавания пока достигнута лишь для весьма ограниченного типа объектов – лиц, контуров некоторых предметов, геометрических маркеров и штрихкодов. При этом даже распознавание таких объектов требует определенных условий – удобного расположения камеры, однородного фона и цвета, стабильного освещения.
Программа NearestPlaces
Поэтому большее распространение на сегодня получили приложения другого типа, которые можно обобщенно назвать НАВИГАТОРАМИ.
Навигаторы не получают информации непосредственно об окружающих нас объектах в реальном режиме времени – вместо этого они определяют расположение устройства в окружающем пространстве с помощью встроенных сенсоров – GPS, магнетометр, акселерометр. На основе информации о собственном расположении приложение вычисляет объекты, которые должны находиться вокруг. Наибольшее распространение подобный подход получил в GPS-навигаторах.
Логически же оба подхода имеют к дополненной реальности практически одинаковое отношение – восприятие зависит только от того, с какой стороны рассматривать предмет.
Так, «тру» приложения дополненной реальности тут же превращаются в «навигаторы», когда возникает необходимость вспомнить об объектах, которые пропали из поля зрения – такие объекты находятся в памяти или базе данных и их положение с точки зрения программы вычисляется относительно положения устройства или наблюдателя, поскольку актуальность того, что не доступно взору в данный момент, может быть весьма спорной – вы не можете с уверенностью сказать, что яблоко все еще лежит на столе за спиной, если вы его не видите, но вы знаете, что оно лежит именно там или по крайней мере лежало пять минут назад.
С другой стороны, если типичный «навигатор» рассматривать, как единую систему с теми, кто наполняет базу данных, то можно считать, что такая система видит и распознает образы, как и «тру» приложения – единственное, весь процесс получения информации целиком занимает больше времени.
Более того, у любой приближенной к «тру» системы, в то числе и у человеческого мозга, есть порог восприятия – если наблюдаемый объект движется быстрее, чем мозг успевает это воспринять, то мы никогда не сможем увидеть реальное положение объекта – информация будет устаревать слишком быстро.
Те, кто знаком с GPS-навигаторами, знают об основном недостатке подобного подхода – приложения с уверенностью могут определить только собственное положение в пространстве, а относительно окружающих предметов информация может быть весьма устаревшей. На дорогах может начаться ремонт, а улицам бывает дают новые имена – все зависит от актуальности базы данных. Да и относительно приемлемая точность достигается только на улице, когда есть сигнал от достаточного числа спутников.
Однако актуальность и точность не являются большой проблемой, поскольку существенная часть объектов отслеживающихся подобным образом относительно стабильна в рамках наблюдаемых временных интервалов да и базы данных при использовании современных технологий актуализируются достаточно быстро, а точность позиционирования, хотя часто и не требует быть высокой, постоянно растет.
Поскольку подход навигаторов требует существенно меньше вычислительных ресурсов вкупе с ценовой доступностью мобильных устройств они получили весьма широкое распространение.
Именно приложения второго типа, которые накладывают дополнительную информацию на картинку или видео в режиме реального времени, на сегодня наиболее часто называют приложениями дополненной реальности в отношении мобильных устройств таких, например, как iPhone 3GS.
Часть II – совмещение картинки и дополнительной информации
Дополненная реальность сама по себе прежде всего ассоциируется именно с совмещением или наложением дополнительной информации на картинку или видео в режиме реального времени.
Определить же в каком именно месте картинки необходимо отобразить информацию по тому или иному предмету для простого GPS-навигатора зная только GPS-координаты практически невозможно без распознавания образов, а если объект достаточно удален или не находится в поле зрения, то распознавание образов становится невозможным и ориентироваться нужно другим способом.
Относительно недавно появились устройства, в частности iPhone, в которых в дополнение к GPS-ресиверу появились дополнительные датчики – акселерометр и магнетометр, которые и помогают решить задачу совмещения реальной картинки и дополнительной информации.
Акселерометр дает информацию о векторе гравитации относительно устройства, а магнетометр о векторе направленности окружающего магнитного поля.
Оба сенсора помогают ориентироваться в так называемых горизонтальных координатах, которые задаются азимутом и высотой. Азимут – угол по ходу часовой стрелки между направлениями к серверу и к объекту относительно наблюдателя. Высота – угол между воображаемой плоскостью горизонта и направлением к объекту от наблюдателя.
Для полноценной ориентации в рамках горизонтальных координат помимо датчика GPS необходимы оба устройства – и акселерометр и магнетометр. Без магнетометра отсутствует возможность ориентироваться по азимуту.
При наличии двух акселерометров в разных частях устройства – с течением накопления статистических данных такая ориентация была бы возможна, но поскольку акселерометр только один, то доступностью приложений с дополненной реальностью похвастаться пока могут только владельцы современных iPhone 3GS, в которых присутствуют оба сенсора.
Совмещая информацию от всех трех датчиков мы получаем относительно точные данные о расположении устройства в пространстве с привязкой к географическим координатам – широте и долготе, а также о направлении взгляда встроенной камеры с привязкой к горизонтальным координатам – азимуту и высоте.
Расположение окружающих предметов, а точнее предметов, которые должны нас окружать, вычисляется относительно положения наблюдателя, за которое принимается расположение устройства.
Координаты объектов относительно наблюдателя обычно вычисляются именно в горизонтальных координатах, что делает задачу совмещения картинки и дополнительной информации об объектах в поле зрения камеры весьма тривиальной, особенно, если известны углы обзора камеры.
Работа именно в горизонтальной системе координат делает также весьма удобным отсечение объектов, которые находятся вне поля зрения камеры. Хотя мы пошли и немного другим путем – отсекая объекты не по угловому расстоянию, реальные углы обзора камеры лежат в основе наших формул.
Техническое отступление
Зная углы обзора камеры iPhone (53° x 37.5°) легко вычислить правильное фокусное расстояние для использования в трехмерных преобразованиях и таким образом более точно вычислять положение объектов на картинке.
Часть III – (не)много о звездах
Для географических точек, помимо расстояния и азимута, можно также вычислять и угловую высоту на основе формул описывающих эллипсоид Земли, а также учитывая высоту над уровнем моря.
Для небесных же тел традиционно для наблюдательной астрономии, когда нужно знать куда именно направлять телескоп, финальными координатами являются именно азимут и угловая высота – горизонтальные координаты относительно наблюдателя, что также делает их очень удобными объектами для отображения поверх картинки с камеры.
Задача каталогизации и точного определения точных позиций небесных тел волнует человечество с древнейших времен.
Задача, скажем честно, весьма непростая – звезды и небесные тела в целом на самом деле двигаются неравномерно. В зависимости от точности, которой необходимо достичь в результатах в расчетах нужно принимать к сведению тысячи, а иногда десятки тысяч факторов влияющих на их движение.
Положение звезд в каталогах обычно задается в экваториальных координатах – прямом восхождении и склонении, зафиксированных на определенную дату или эпоху. Отсчет ведется от небесного экватора и точки весеннего равноденствия. Современные каталоги (ICRS, FK5) ориентируются на так называемую эпоху J2000, которая соответствует 12 часам первого января 2000 года.
Несмотря на то, что небесные цела двигаются неравномерно, для большинства задач вычисление их положений с приемлемой точностью можно производить по упрощенной формуле – добавляя к координатам светила указанным в каталоге его собственное движение.
Собственное движение это фактически угловая скорость перемещения звезды по небесной сфере в заданной системе координат. Учитывая, что промежуток времени от эпохи каталога небольшой – это дает достаточную точность. Собственное движение для прямого восхождения и склонения светила обычно выражается в тысячных долях угловой секунды в год.
Более точные формулы расчета изменения положений звезд на небесной сфере также учитывают и другие факторы, как расстояние, радиальное ускорение, параллакс и другие.
Таким образом для того, чтобы просто определить текущее положение звезды в экваториальной системе координат достаточно к ее координатам из каталога добавить изменения в координатах произошедшие за время прошедшее со времени составления каталога.
Однако эта формула не учитывает собственное движение земли, которое учитывается в последующих уточняющих вычислениях.
Большая часть астрономических формул привязана к временному промежутку прошедшему от начала эпохи. Казалось бы, что вычислить его просто, но на самом деле гражданское время на Земле отсчитывается неравномерно и зависит от многих факторов. Так для звездных расчетов с некоторых пор стали использовать так называемое Земное Динамическое Время, которое отличается от земного на десятки секунд (на 67 секунд для 2010 года). К сожалению, в силу того, что Земля движется и вращается неравномерно разницу во времени можно определить только экспериментально с помощью наблюдений. Для прошедших периодов эта разница берется из специальных таблиц и интерполируется для промежуточных временных отрезков. Для коротких промежутков времени существуют формулы, которые эту разницу могут вычислить с приблизительной точностью. В тех же расчетах, где разница во времени в одну-пол минуты не существенна – ее можно не учитывать.
После того, как были определены координаты в экваториальной системе координат – определяются точные координаты в той же экваториальной системе с учетом факторов вызванных движением Земли – прецессией, нутацией, годовой аберрацией, годовым параллаксом, гравитационным отклонением света.
Во время вращения Земли вокруг своей оси из-за влияния в том числе гравитации Луны ось колеблется и описывает круговые движения, как это делает, например, крутящийся волчок – этот эффект называют прецессией. Более того, это круговое движение неравномерно и фактически ось описывает не круговую фигуру, а нечто напоминающее абажур вычурной люстры, когда ось отклоняется то в одну, то в другую сторону от линии кругового движения в рамках прецессии – этот эффект называют нутацией.
Нутация в свою очередь в силу воздействий Луны и других небесных тел вычисляется целой совокупностью формул зависимых от времени – только основных из них около 50. Если же не требуется большая точность, то возможен расчет по упрощенной формуле с ошибкой в рамках от 0.1 до 0.5 угловых секунд.
Эффекты годовой аберрации – когда кажется будто звезда отклоняется от своего реального положения в следствие направления движения звезды и конечности скорости света.
Эффект годового параллакса – когда кажется будто неподвижные звезды двигаются относительно друг друга в следствие движения Земли по своей орбите, часто не учитывается в расчетах для звезд, поскольку максимальная коррекция в таком случае не превышает 0.8 угловых секунд или 0.2 тысячных градуса.
Гравитационное отклонение света Солнцем также часто не учитывается поскольку большинство наблюдаемых звезд находится на достаточном отклонении от него и эффект гравитационного отклонения света не превышает 0.03 угловых секунд.
Сложив полученные экваториальные координаты звезды с необходимыми вычисленными величинами коррекции мы получаем ее точные координаты. Далее зная географические координаты наблюдателя преобразуем экваториальные небесные координаты в горизонтальные относительно наблюдателя. Точность подобного преобразования может быть увеличена, если принять во внимание высоту над уровнем моря и то, что Земля является эллипсоидом, а не шаром, причем эллипсоидом меняющим свои контуры со временем.
Однако это еще не все
У Земли есть атмосфера, которая преломляет свет. Причем преломляет она его разному в зависимости от толщи воздуха, через который свету необходимо пройти. В следствие этого, фактически те положения звезд, которые мы видим на небосводе практически никогда не соответствуют реальному.
Существует целый ряд формул с той или иной степенью точности определяющий массу воздуха в зависимости от угла наклона светила над горизонтом, но все простые и короткие варианты являются относительно приблизительными.
Более точные формулы помимо температуры и давления воздуха должны учитывать также и то, что воздушная масса не является однородной и преломляет свет по разному в разных ее слоях.
Кроме того свет принадлежащий к разным участкам спектра с разной длинной волны преломляется по разному – поэтому более сложные и точные формулы также должны учитывать спектр небесных объектов. Приблизительные же формулы рассчитаны для желтого света нашего Солнца.
Если же требуется определить более точные положения таких объектов, как Луна, тогда формулы становятся еще более усложненными из-за влияния даже таких удаленных небесных тел, как, например, Юпитер. Число периодических формул результаты, которых необходимо сложить в упрощенном варианте насчитывает несколько десятков. В одном из наиболее точных на сегодняшний день методе расчетом число таких формул достигает 26 тысяч.
Вместе с тем пугаться особо не стоит. Часто, когда астрономы говорят о низкой точности – для гражданских целей их низкая точность вполне приемлема – ошибки не превышают сотых и тысячных долей градуса.
Зная даже о таких основных факторах из позиционной астрономии, о которых мы рассказали выше, задумываешься о том, что без серии сложных расчетов догадаться, где на самом деле располагается то или иное небесное тело, которое мы видим на небе, практически невозможно, и понимаешь степень смелости тех, кто занимается практикой полетов в космос пусть пока еще только в ближайший – ведь ошибка на тысячные доли градуса в рамках огромных расстояний в межзвездных пространствах может стать роковой при межзвездном путешествии. Можно элементарно промахнуться – при ошибке на 0.001° в путешествии к ближайшей к нам Альфе Центавра ошибка составит примерно на 7 миллиардов километров.
Заключение – немного про iPhone
В Spyglass ($1.99, iTunes link) мы используем совокупность формул, которые учитывают практически все из описанных выше факторов и которые позволяют вычислить видимое положение небесных объектов с точностью до пары десятков угловых секунд.
Угол обзора камеры iPhone таков, что один градус при однократном увеличении соответствует примерно 9 пикселам. Ошибка в 30 угловых секунд, например, при этом составит 0.008° или 0.075 пиксела – что является практически незаметным.
Большее влияние на точность оказывают GPS-ресивер и магнетометр.
Проведенные нами эксперименты показали, что при стабильной точности данных GPS и магнетометра – позиционирование наложенных объектов дополненной реальности получается весьма точным.
Практически же знание, например, положения Солнца в навигации может принести реальную пользу даже в наши дни. С помощью Spyglass, например, можно измерить угол между предполагаемым положением Солнца и видимым, а на основе этого получить реальное магнитное отклонение – стоит помнить, что магнитный северный полюс Земли не находится в одном месте, не соответствует географическому северному полюсу, постоянно дрейфует и даже не находится на противоположной стороне Земного шара, который на самом деле является эллипсоидом.
Если вы хотите стать Информатором и донести до читателей жизненно важную информацию, пришлите на адрес свою статью или обзор. Текст должен быть авторским и не встречаться на других ресурсах.
Источник: