Нас информирует Happybyte.
Разобравшись в тонкостях разработки приложений дополненной реальности, начинаешь понимать, что вычисления точного положения практически любых объектов в пространстве тесно связаны друг с другом.
Во время работы над очередным обновлением нашего навигационного приложения 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, например, можно измерить угол между предполагаемым положением Солнца и видимым, а на основе этого получить реальное магнитное отклонение – стоит помнить, что магнитный северный полюс Земли не находится в одном месте, не соответствует географическому северному полюсу, постоянно дрейфует и даже не находится на противоположной стороне Земного шара, который на самом деле является эллипсоидом.
25.03.2010, Happybyte
21 комментариев
Форум →Ну и статейку наклепали, прямо что-то новенькое. Как бы чего не вышло, а то если вспомнить последние “большие” околоайфоновские статьи, то прямо диву даешься, что могут товарищи понаписать, мол, какая гадость, оффтоп, гоните автора в шею.
каааакже много букв
Монументально!! Впечатляют академические познания автора в астрономии.
Куплю приложение, как только поменяю свой 3Г на ГС. Могу кстати предложить идею – на этой базе разработать навигационное приложение для любителей походить вдоль берега на яхте. Ресторанчики там всякие на берегу отмечать, марины, достопримечательности… Таких любителей среди владельцев айфонов много, уж поверьте =)
Можно и лоции запихнуть наверное.. если айфон не надорвется )))
Не, статья интересная.
Почему подобные приложения для ориентации ограничиваются показаниями акселерометр+GPS+компас? Если первый еще более-менее, то точности и _скорости_ последних двух – часто бывает недостаточно!
Скажем, навел камеру на яркий объект – на Луну, прога распознала её, и скорректировала выводимую картинку, провела юстировку на лету.
Слабо, разработчики?
Albatross, подумайте, сколько будет весить приложение, если в него загрузить библиотеку всех окружающих предметов? И сколько минут вы будете ждать результат? В статье же написано: на данные момент не хватает вычислительных мощностей.
осилил…статья понравилась …думаю это ближайшее будущее программ для айфона :)
Albatross, не слабо в будущем, когда ресурсы под рукой у каждого будут момощнее :)
Магнетометр, если усреднять значение по времени в принципе относительно точный. Вот насчет GPS – да, точность сильно зависит.
То, что получается в результате взаимодействия GPS+магнетометр – True North (и используется для основных геодезических расчетов), точно можно сказать, что точность бывает не очень.
Суть в том, что True North определить техническими средствами (измеряя магнитные поля) невозможно.
Это можно делать либо по таблицам, либо по формулам описывающим переодическое смещение магнитного полюса относительно геодезических координат – но в любом случае это зависит от точности GPS, т.к. в итоге вычисляется азимут между текущим положением и предполагаемым положением магнитного полюса – собственно магнитное отклонение.
Еще есть карты магнитных отклонений, например:
http://upload.wikimedia.org/wikipedia/commons/2/28/Mv-world.jpg
Сама идея автоматически уточнять положение по Солнцу или Луне (и звездам) весьма неплоха – в древности примерно так и ориентировались в навигации. Если совместить это с астрономическими формулами, то может получиться весьма точно :) Технически вот только не очень просто.
CrazyTosser, такие программы уже есть и достаточно неплохие – на вскидку Yelp, Nearest Places, Layar (хотя в нем инфы как-то маловато несмотря на множественность источников).
Это скорее вопрос самих ресторанчиков, чтобы забить себя в базы данных Гугла и Викимапии.
Мы не ставили для себя целью создать то, что уже реализовано – скорее сделать что-то чего нехватаем нам самим. Spyglass больше предназначен для использования в оффлайне. Отсюда встоенные карты от Гугла не являются необходимой фичей – все, кроме карт работает само по себе и не требует постоянного доступа в сеть.
> каааакже много букв
Статью пришлось писать в несколько сокращенном варианте.
Хотелось изначально добавить больше технических и программистких деталей – формул, примеров расчетов.
Но, эту идею пришлось отбросить, потому что если бы сюда были добавлены формулы с объяснениями, то вместо 8 страниц A4 получилось бы на порядок больше – возможно выша бы небольшая книжка. Так в Spyglass для астрономических расчетов совокупно применяется более 200 формул.
2Артур Малосиев
iPhone – это интернет девайс. Зачем хранить в локальной базе, лучше для этого сервера иметь, но тут конечно дело в экономической состовляющей. И этим занимаются компании, которые могут вложить деньги в разработку и поддержку серверов.
Ага, особенно в открытом море масса провайдеров.
HappyByte
спасибо за статью
почитал бы полную версию статьи с формулами ))) не поделитесь расчетами?
просто на главной странице не привык читать много…. ))) меня заинтересовала данная тема
keepers, отъезжаем за 100 км от города и вне сети наслаждаемся нерабочей программой.
Вот это статья, поражён, автор молодец, удачи!
ARTak, спасибо :)
iGeorG, расчетами из какой области? Преобразование 3D в 2D координаты – одна из самых простых вещей. Фокусное расстояние для формулы 3D->2D высчитываем на базе углов обзора камеры iPhone – они известны.
По астрономии даже что-то относительно простое написать – это получится небольших размеров книга. Начать в этом направлении можно с книг от Willmann-Bell, например, что-нить от Jean Meeus – его работы считаются классикой, но для их лучшего понимания это хорошо совокупить с какими-либо совсем простыми книгами для начинающих, где рассматриваются системы координат и общие вещи.
HappyByte спасибо большое )))
теперь знаю куда копать ))))) кстати на ютубе посмотрел всяческие ролики про доп реальность….ребята делают потрясающие вещи)))) очень нравиться)))))
Одна из самых востребованных программ у меня
Star Walk
и существует она давольно давно,
кроме всяких прелестей, которых немало в программе, направляешь на небо на интересуемый объект –
и тебе сообщают что это,
захотел посмотреть сатурн
и тебе укажут где он, если он в видимой части неба, ест.
Это, что касается астрономии, м.б. кто ищет для себя и детей очень познавательная программа.
Статья понравилась, автору спасибо,
жаль, что она скорее “неформат” для этого сайта.
Или нет?
Учитесь мальчики. Вот как надо расказывать девочкам о звёздах :)
великая кетайская стина текста
я непонимаю зачем это программа может пригодится обывателю
только астрономам чтоль
Стёбная заглавная иллюстрация:) Надо понимать, что к “дополненной реальности” там относятся только окошки. И в окошках, собсно написно, что делать, если вы видите призрак женщины над могилой:)
Нашли орфографическую ошибку в новости?
Выделите ее мышью и нажмите Ctrl+Enter.Как скопировать музыку с одного iPod на другой?
Как использовать iMac в режиме внешнего дисплея
Почему библиотека iTunes на Mac занимает много места
Почему AirPods не зачитывают входящие уведомления
Почему не освобождается место при удалении файлов с флешки в macOS
Стоит ли ждать iPhone SE 2
Как починить ввод свайпом для русской клавиатуры в iOS 16.4
Что делать, если один наушник AirPods стал звучать тише