Дополненная реальность. Поиск

image
Поиск с помощью дополненной реальности (AR) становится все популярнее. Появляются русские аналоги таких поисковых машин, а точнее браузеров. В этой публикации я опишу процесс, на мой взгляд, самого простого создания поиска при помощи AR и мобильного устройства — воспользоваться готовой платформой и с помощью API создать свой канал трансляции.

На сегодняшний день в мире известны мне 2 крупные компании, которые предоставляют такие возможности, это: Layar и Junaio. Обе предоставляют API для разработчика по созданию своих каналов, приложения для iPhone, Android. Схема работы такая:
  • Регистрируемся как разработчик.
  • Получаем API ключ.
  • Создаем и настраиваем свой канал.
  • Создаем серверную часть канала (контент).
  • Скачиваем AR приложение на телефон, проверяем.


Junaio это проект компании Metaio — мюнхенская компания, продающая Unifeye приложения для разработки Augmented Reality. Проект Junaio молодой и менее известный чем Layar, несмотря на это проект достаточно перспективный и быстро развивающийся, сегодня опишу процесс создания канала именно в нем.

Предлагаю сделать немного большее чем «hello world», и разобрать код моего действующего канала — http://dogoodto.me.

1. Регистрируемся как разработчик


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

2. Получаем API ключ


Собственно с помощью этого ключа мы сможем связать наш контент с каналами созданными в Junaio. Предоставляя Callback API мы даем возможность junaio серверу получить информации с нашего сервера по 4 запросам:

channels/subscribe

Когда пользователь подписывается или отписывается от вашего канала.

pois/search

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

pois/event

Этот запрос будет отправлен на ваш сервер, когда пользователь начнет взаимодействие с вашими POI (Points Of Interest).

pois/visualsearch

На наш сервер отправляется запрос с изображением/фото которое сделал пользователь. Анализируется информация на сервере и клиент ждет ответ от junaio glue (позволяет добавлять 3D объекты в реальном времени на цветной маркер, Natural Feature Tracking на ваших телефонах, конечно можно также привязывать объекты и к координатам gps, но точность такую мы не получим.)

3. Создаем канал junaio



Вам нужно будет ввести определенную информацию о канале, такую как описание и тумбнаил. Главное предоставить callback адрес вашего сервера, откуда будет браться информация о POI.

4. Создаем серверную часть контента



Из меню разработчика на сайте junaio, можно скачать несколько версий пакетов для быстрого старта с примерами. Может быть PHP пакет, использующий Zend encryption либо ASP.NET C#. Предлагаю остановиться на PHP.

Это важный этап, в котором будет происходить основное действие, поэтому разделю его еще на 2 части:

4.1. Настроить связь сервера.



Скачиваем стартовый пакет junaio. Наш сервер конечно должен иметь Apache Webserver, установленный PHP 5, Zend Framework (минимальный бесплатный пакет можно скачать отсюда)

image

Сама установка и настройка предельно проста:
— распаковываете файлы в директорию на сервере. Название может быть любым, главное в callback url указать точный путь к /html директории скачанного дистрибутива.
— переименовать _.htaccess в .htaccess.
— скопировать Zend Framework в папку с дистрибутивом Junaio.
— отредактировать config/config.php (где и придется ввести полученный API key).

4.2. Создание логики нашего канала и отправка данных junaio серверу.



Проект dogoodto.me задумывался как сервис который делает тебя добрым человеком, позволяя искать «крики» о помощи и выполнять их как через web site, так и через AR поиск с мобильных устройств.

В этом проекте используется Google Maps API и простая связка php-mysql для сохранения «зова» о помощи. Это логика проекта. Интегрируется с junaio framework'ом она в файле html/index.php т.е. грубо говоря прямо в нашем callback url. Приведу код, который использую для проекта dogoodto.me:
header("Content-type: text/xml");

// Start XML file, echo parent node
echo '<?xml version="1.0" encoding="UTF-8"?>';
echo '';

// Iterate through the rows, printing XML nodes for each
while ($row = @mysql_fetch_assoc($result)){
// ADD TO XML DOCUMENT NODE
echo '';
echo '' . parseToXML($row['name']) . '';
echo '' . parseToXML($row['address']) . ' ';
echo '' . $row['lat'] . ',' . $row['lng'] . ',13';
echo '' . $row['cdate'] . '';
echo '0,0,0';
// echo '';
// echo '';
echo '<mime-type>text</mime-type>';
echo 'text';
echo 'google-maps-icons.googlecode.com/files/' . $row['type'] . '.png ';
echo 'google-maps-icons.googlecode.com/files/' . $row['type'] . '.png';
echo '';
}

// End XML file
echo '';


Как вы видите — это простой вывод xml файла, который берет свои значения из базы данных. В базу они заносятся самими пользователям, когда они добавляют крики о помощи на google maps. У каждой POI могут быть настроены разные параметры, но обязательными (чтобы ваш канал прошел проверку без ошибок) являются все nodes указанные выше.

Отмечу что, dogoodto.me использован здесь с целью демонстрации нечто большего чем в стандартных пимерах Junaio «Hello World», а не рекламировать «сырой» сервис. Если у вас есть какие-то идеи/критика/предложения по поводу проекта — я открыт для кооперации.

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

UPD.

5. Скачиваем AR приложение на iPhone, проверяем



После того как ваш канал будет проверен модераторами Junaio, он появится в листинге выбранной вами категории при регистрации канала:
image

Активировав live view, вы увидите все POI, отправляемые вашим сервером каналу в Junaio.
image
+49
21 июля 2010, 12:38
68
neskin 5,6

комментарии (24)

+6
kal1sha #
Думаю выходные пройдут за глубоким исследованием в этой области, спасибо заинтересовали!
+2
neskin #
пожалуйста. рад, что эта тема интересует.
0
Olezha #
весьма интересная идея.

а работает только под Android, Iphone? Windows Mobile 6.х уже откинули и похоронили? :(
0
hellt #
Конечно похоронили. Сколько можно над собой издеваться-то?
0
docomo #
Как это в итоге выглядит в AR-приложении, можно посмотреть скриншот или фото?
Заинтересовали!
+1
neskin #
Сделал пару скриншотов результата проделанной работы, добавил в публикацию.
НЛО прилетело и опубликовало эту надпись здесь
0
Chikey #
да и сам код… извините, но непонятно зачем echo '';
и так наглядней
while ($row = @mysql_fetch_assoc($result)){
// ADD TO XML DOCUMENT NODE
$node = <<<EOS

EOS;
чем многo echo
–3
Inco #
Это мистика =)
неюзабильно и точка… ибо на картинке то хорошо что 3 метки… а в реале?.. ну когда их там хотябы 20-30 вы реального мира за ними не увидите =)
Да и представляю чувака крутящегося на вытянутой руке с смартфоном, наводя на разные стороны, ищащего что-то нужное =)
НЛО прилетело и опубликовало эту надпись здесь
+1
Olezha #
выезжающие слева/справа фильтр на кафе, рестораны, бары и другие увеселительные заведения + другие нужные заведения.
0
neskin #
Расстояние от вашего местоположения, до ближайших объектов вы настраиваете сами в приложении (простым ползунком, например, искать только в радиусе 500 метро). также вы можете указывать расстояние когда POI должна появится перед пользователем в коде XML отдаваемой Junaio — node:
<minaccuracy/>
<maxdistance/>
0
olegsuv #
Да и представляю чувака крутящегося на вытянутой руке с смартфоном, наводя на разные стороны, ищащего что-то нужное =)
Раньше тоже самое говорили про людей которые «разговаривают сами с собой» (bluetooth-гарнитуры).
–1
InfernoZ #
освещение пальцев не правильное, глаза выжигает
+1
jandosul #
О_о в скорое избранное
0
smartov #
интересно. в избранное статью добавило больше человек, чем плюсануло
0
zemel #
Просто часто в избранное добавляют статью, чтобы прочитать её позднее, и соответственно оценить после прочтения.
0
XPyCT #
ведь плюсовать не все могут
0
Arsenichev #
Вот объясните мне, на экране мобильно показываются иконки, они просто показываются или с привязкой к объекту в реальности? Если да, то чет не могу понять как приложение узнает куда повернута камера телефона?
0
DEHiCKA #
трехосевой магнетометр
0
neskin #
Все верно, на экране показываются иконки, с привязкой к GPS координатам (ширина, долгота и высота над поверхностью, эти координаты легко узнать через google maps в любой точке нашей планеты).

Цифровой компас встроенный в iphone 3GS, 4G определяет направление «куда повернута камера телефона».
0
Arsenichev #
Понятно. Это только для айфонов.
0
neskin #
не только. android приложения тоже есть
0
Olegas #
Чорт! Я «придумал» это пол года назад, один к одному. Даже использование меток в помещении вместо GPS-позиционирования… =(

Идея ничто, реализация — все.

Твою идею думают еще стопицот человек.

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