- PVSM.RU - https://www.pvsm.ru -

Device Lab от Google: Project Tango

Device Lab от Google: Project Tango / Хабрахабр

var N = 5;
var ar_duo1 = Math.floor(Math.random()*N+1);

if (typeof adriver == 'undefined')
{
var adb1 = 'yes';
}

var user_type = 'guest';

var page_type = "publish_corp";

(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');

ga('create', 'UA-726094-1', 'auto');
ga('create', 'UA-726094-24', 'auto', {'name': 'HGM'});

ga('require', 'displayfeatures');
ga('set', 'dimension1', user_type); // user type - guest/readonly/habrauser

ga('set', 'dimension4', adb1);

ga('set', 'dimension5', page_type);

if(typeof removeUtms === 'undefined') {
removeUtms = function(){};
}

ga('HGM.set', 'dimension1', user_type);
ga('HGM.set', 'dimension2', "habrahabr");
ga('HGM.send', 'pageview');

ga('send', 'pageview', { 'hitCallback': removeUtms });

var adcm_config ={
id:1034,
platformId: 34,

tags: ['hub_unity3d', 'hub_mobile_dev', 'hub_android_dev', 'hub_gamedev', 'g_software', 'g_development_tools', 'g_programming', 'g_mobile_os', 'g_android_os'],
init: function () {
window.adcm.call();
}
};

В Лаборатории Google [13] мы добрались до самого инновационного и многообещающего устройства. Project Tango - платформа компьютерного зрения для мобильных устройств, разработанная группой инженеров ATAP (Advanced Technology and Projects). Работающее на Android референсное устройство вы можете взять на тест [13] и использовать данные платформы в своих приложениях. Навигация внутри помещений, построение 3D-карт помещений, измерение расстояний, дополненная реальность – лишь малая часть задач, которые вы можете решить при помощи Project Tango. О том, как разрабатывать приложения для платформы – в нашей статье.

Device Lab от Google: Project Tango - 1

var div=$("#youtubeiframe6705613");
var height=div.width() * 0.5625;
div.height(height);
div.parent().height(height);

Project Tango это проект ATAP (Advanced Technology and Projects, исследовательское подразделение Google, образованное на основе Motorola Mobility и оставшееся после передачи всей остальной компании как раз в Lenovo), цель которого состоит в том, чтобы дать мобильным устройствам человеческое понимание пространства и движения.

За организацией ATAP в Google стоит легендарная Регина Дуган, глава DARPA, исследовательского отдела Министерства обороны, позже работавшая в Motorola. В Google она стала вице-президентом по инжинирингу, передовым технологиями и проектам. Под ее началом в ATAP, кроме Project Tango, разработали еще и Project Ara, первый модульный смартфон, который сейчас также готовится к выпуску.

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

Возможности, которые дает такая платформа, вполне удивительны. Например, вы можете измерять расстояния до удаленных предметов. Или играть в игры с предметами своей обстановки. Делать макеты и планы внутренних помещений со всей обстановкой. Примерять мебель еще до покупки. В дополнение к очкам виртуальной реальности Google Cardboard – моделировать ваш дом для дальнейшего использования в играх или приложениях.

Device Lab от Google: Project Tango - 2

Разработка

Сама большая технология Tango на самом деле подразделяется еще на три (важно понимать, что сами названия, скажем так, немного избыточно описывают технологии):

  • Отслеживание движений (Motion Tracking) – это позволяет устройству понимать позицию и ориентацию, движение в трехмерном пространстве (устройство выдает вам координаты и вектор движения);
  • Изучение области (Area Learning) - Tango-устройство может использовать визуальные подсказки для распознавания мира вокруг, самостоятельно исправляя ошибки в отслеживании движений и переопределяя себя в тех местах, где оно уже было (устройство распознает место и корректирует движения на основе этого);
  • Восприятие глубины (Depth Perception) – сенсоры могут «говорить» вам о формах реального мира вокруг, выстраивая взаимодействие с миром виртуальным (устройство может получить облако точек для текущего места).

Google предлагает для разработчиков несколько вариантов работы. У компании есть Unity SDK, Java Api и С API. Предназначение у каждого свое – Unity SDK больше подходит для 3D-игр или приложений, связанных с визуализацией, JAVA API для тех, кто хочет использовать функциональность Tango в своих уже существующих приложениях для Android, а C API для тех, кто пользуется Android NDK и кто хочет получить доступ к нативным функциям в собственном движке визуализации.

//Для размещения приложений в Google Play вам в манифест надо добавить следующее:

<uses-library android:name="com.projecttango.libtango_device2" android:required="true" />

//Тогда оно будет устанавливаться только на совместимые устройства.

$(document).ready(function(){
hljs.initHighlightingOnLoad();
});

.t264 .hljs {
background-color: ;
}

Вся работа Tango устройства руководствуется позами. По мере того, как устройство движется сквозь трехмерное пространство, оно до 100 раз в секунду высчитывает, где оно находится (позицию) и как оно повернуто (ориентацию). Одна единица таких объединенных данных называется "Позой" (pose). Это ключевая часть работы со всеми тремя концепциями, входящими в технологию – отслеживание движения, изучение области и восприятие глубины.

Вы как разработчики можете запрашивать позы двумя способами – для момента времени (через TangoService_getPoseAtTime()) или при доступности новых данных (коллбэк onPoseAvailable() для TangoService_connectOnPoseAvailable().)

В результате вы получаете такие данные:

typedef struct TangoPoseData {
  int version;
  double timestamp;                // в миллисекундах
  double orientation[4];           // как кватернион, вектора
  double translation[3];           // в метрах
  TangoPoseStatusType status_code; // статус может измерения быть и некорректным, что надо учесть в своих приложениях
  TangoCoordinateFramePair frame;
  int confidence;                  // не используется
  float accuracy;                  // не используется
} TangoPoseData;

$(document).ready(function(){
hljs.initHighlightingOnLoad();
});

.t264 .hljs {
background-color: ;
}

Важна также ещё одна вещь в описании платформы – «События» (Events). По сути это уведомление о важных для устройства событиях, таких как, например, слишком яркая или темная картинка, которая не дает возможности системе определить положение. Получать такие события можно через коллбэк TangoEvent для функции TangoService_connectOnTangoEvent().

ОК, с получением собственных данных более или менее понятно. Но изучение области – немногим более сложная задача. Оно дает устройству возможность «видеть» и запоминать ключевые визуальные элементы физического пространства – грани, углы и прочее – распознавая их в последующем. Для этого устройство создает и хранит математическое описание всех этих визуальных особенностей в своей базе.

Полученные данные можно использовать для улучшения отслеживания движения – улучшая аккуратность («корректировка дрифта») и позиционируя себя в ранее изученных областях («локализация»).

Описания мест хранятся в Area Description File (ADF). Самый простой способ создать ADF – использовать приложение Tango Explorer [14], которое предустановлено на устройстве. Более сложный – Tango API для изучения, сохранения или загрузки данных в ваше приложение. Это может понадобиться вам, например, если вы захотите, чтобы виртуальные объекты появлялись у пользователя в том же месте, в котором он их оставил. Тут вам и понадобится локализация – вы загружаете ADF и перемещаете устройство в новую область. Как только оно «увидит» совпадение области и ADF, оно мгновенно узнает свое местоположение. Без локализации начальная точка будет все время теряться и системе надо будет заново строить модели.

Третья часть работы – чувство глубины. Оно дает приложению возможность измерять расстояние между объектами реального мира, пока устройство лучше всего работает в закрытых помещениях – на расстоянии около 3 метров оно уже практически не применимо из-за проблем с инфракрасным датчиком.

Tango API выдает данные о глубине в виде облака точек. Это набор координат (x, y, z) для такого количества точек в сцене, которое возможно. Само облако регулируется структурой TangoXYZij, а получение - коллбэком onXYZijAvailable() для connectListener().

Уже этой осенью в продажу поступит первый фаблет Lenovo Phab 2 Pro. Большой смартфон, в золотом или сером цвете, это 6.4-дюймовый QHD экран, Snapdragon 652, 4 Гб оперативной памяти, батарея 4,050 мАч, звук Dolby Atmos 5.1. Плюс четыре камеры, включая 16 МП заднюю и 8 МП фронтальную, а также самое главное — 2 специальные Tango-камеры, одна для определения «глубины», а вторая для определения движения.

Первый проект

В качестве первого своего приложения для Tango вы можете использовать наработки из проекта Солнечной системы [15], разработанного студентами Университета Сан-Франциско. Он позволяет людям физически видеть нашу систему и совершать виртуальные прогулки по ней.

Device Lab от Google: Project Tango - 3

Проект написан на Unity как на самом быстром средстве разработки 3D-приложений.

Поднимается он всего за несколько простых шагов:

  1. Скачайте Unity SDK [16].
  2. Создайте новый проект Unity и импортируйте Tango SDK.

Device Lab от Google: Project Tango - 4

3. В качестве примера планеты разместите сферу в центре:

Device Lab от Google: Project Tango - 5

4. Замените Главную камеру на Tango AR Camera и подключите Tango Manager через префабы. Для этого сначала удалите игровой объект Главной Камеры со сцены. Затем перетяните Tango AR Camera и Tango Manager из TangoPrefabs в папку проекта. Иерархия сцены должна выглядеть так:

Device Lab от Google: Project Tango - 6

5. В Tango Manage есть несколько настроек. Вам нужно включить автоматическое подключение к сервису (Tango Manage), отслеживание движений и накладывание видео.

Device Lab от Google: Project Tango - 7

6. Измените настройки сборки так, как написано в этом руководстве [17].

И вот ваш первый проект готов. Выглядеть он должен примерно так:

Device Lab от Google: Project Tango - 8

Студенты сделали пивной пинг-понг на Unity в дополненной реальности:

var div=$("#youtubeiframe6705949");
var height=div.width() * 0.5625;
div.height(height);
div.parent().height(height);

Интересные проекты, реализованные с помощью Project Tango

Приложение дополненной реальности для шоппинга

В магазинах Walgreens устройства будут помогать [18] находить продукты. Понимая свою позицию внутри магазина, приложение сможет точно указывать путь к определенному товару. Кроме того, прямо в дополненной реальности будут показываться выгодные предложения и скидки, мимо которых иначе покупатели просто прошли бы (без преувеличения, они буду и правда "выскакивать с полок").

var div=$("#youtubeiframe6706032");
var height=div.width() * 0.5625;
div.height(height);
div.parent().height(height);

Навигация в Национальном музее искусств Каталонии

Навигация внутри помещений – одно из самых очевидных применений Project Tango. Одним из первых стал проект навигации [19] для Национального музея искусств Каталонии. Этот гигантский музей, построенный в 1929 году, состоит из множества залов и переходов, так что заблудиться в нем не составляет труда. Project Tango может вести вас по музею, а попутно ещё и рассказывать о полотнах, выставленных в нём.

var div=$("#youtubeiframe6706083");
var height=div.width() * 0.5625;
div.height(height);
div.parent().height(height);

Измерение расстояний

Ещё одно понятное применение для Project Tango [20] – измерение расстояний между точками. Если вы можете построить карту точек в трехмерном пространстве, то наверняка можете посчитать и расстояния между ними. Сколько метров в длину ваш стол, какова высота окна, влезет ли в этот проем диван – все это может измерить устройство, просто "посмотрев" на пространство перед собой.

var div=$("#youtubeiframe6706319");
var height=div.width() * 0.5625;
div.height(height);
div.parent().height(height);

Построение 3D-карт помещений

Следующий шаг в технологии после измерения расстояний – построение полноценных 3D-карт. Такое приложение сделали [21] в компании Matterport. И вам не нужны больше специальные 3D-камеры, все делается с помощью Project Tango:

var div=$("#youtubeiframe6706424");
var height=div.width() * 0.5625;
div.height(height);
div.parent().height(height);

Дополнительные материалы

Как отслеживать движения в Unity:

https://youtu.be/UMKMuYA_FcM [22]

Канал с несколькими роликами о разработке приложений на Unity:

https://www.youtube.com/channel/UCXh6fg2Lq3EC5FqwMzbFqtg/videos
[23]
Project Tango на GitHub:

Комментарии (0)

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

$(document).ready( function(){
window.tmidLogin = function(){ return false; };
if( $.cookie('tmid_no_check') === undefined ) {
var expire = new Date();
expire.setMinutes(expire.getMinutes() + 10 );
$.cookie('tmid_no_check', 1, { expires: expire } );
$.getScript("https://id.tmtm.ru/checklogin/", function(){
if( window.tmidLogin() ) {
var href = $('#login').attr('href');
if( href !== undefined ) {
window.location.href = href;
}
}
});
}
});

// global vars
var g_base_url = 'habrahabr.ru';
var g_show_xpanel = false;
var g_base_fullurl = 'https://habrahabr.ru/';
var g_is_guest = false;

(function (d, w, c) {
(w[c] = w[c] || []).push(function() {
try {
if (typeof (_yaparams) != 'undefined') {
w.yaCounter24049213 = new Ya.Metrika({id:24049213,
webvisor:true,
clickmap:true,
trackLinks:true,
accurateTrackBounce:true,
params:_yaparams});
} else {
w.yaCounter24049213 = new Ya.Metrika({id:24049213,
webvisor:true,
clickmap:true,
trackLinks:true,
accurateTrackBounce:true});
}

} catch(e) { }
});

var n = d.getElementsByTagName("script")[0],
s = d.createElement("script"),
f = function () { n.parentNode.insertBefore(s, n); };
s.type = "text/javascript";
s.async = true;
s.src = (d.location.protocol == "https:" ? "https:" : "http:") + "//mc.yandex.ru/metrika/watch.js";

if (w.opera == "[object Opera]") {
d.addEventListener("DOMContentLoaded", f, false);
} else { f(); }
})(document, window, "yandex_metrika_callbacks");

Device Lab от Google: Project Tango - 9

function checkHeaderPos(){
var topToHubs = $('.megapost-cover').offset().top + $('.megapost-cover').outerHeight();
var sT = $(this).scrollTop();
if (sT > topToHubs) {
$('.t199__js__header, .t199_js__header').fadeIn();
} else {
$('.t199__js__header, .t199_js__header').fadeOut();
}
}

$(window).on('scroll', function() {
checkHeaderPos();
});

function drawguides(){
if($("#guides").length)$("#guides").remove();

$("body").append('

');

var g=$('#guides');
var ww=$(window).width();

var offset_left=parseInt((ww-1200)/2);
var col_space=20;
var col_width=100;

if(ww=960){
for(i=0;i<13;i++){
var x1=(i*col_width)+offset_left-col_space;
var x2=(i*col_width)+offset_left+col_space;
var n=i+1;
if(i!=0)g.append('

');
if(i!=12)g.append('

');
if(i!=12)g.append('

'+n+'

');
}
}

if(ww<960){
var x=parseInt(ww/2);
g.append('

');
}

var doit;
$(window).resize(function() {
if($("#guides").length){
clearTimeout(doit);
doit = setTimeout(drawguides, 300);
}
});
}

function showguides(){
if($("#guides").length){
$("#guides").remove();
$("#guidesmenubutton").css("display","none");
}else{
drawguides();
$("#guidesmenubutton").css("display","block");
}
}

Автор:

Источник [67]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/lenovo/152911

Ссылки в тексте:

[1] TM Feed: https://tmfeed.ru?utm_source=tm_habrahabr&utm_medium=tm_top_panel&utm_campaign=tm_promo

[2] Хабрахабр: https://habrahabr.ru?utm_source=tm_habrahabr&utm_medium=tm_top_panel&utm_campaign=tm_promo

[3] Geektimes: https://geektimes.ru?utm_source=tm_habrahabr&utm_medium=tm_top_panel&utm_campaign=tm_promo

[4] Тостер: https://toster.ru?utm_source=tm_habrahabr&utm_medium=tm_top_panel&utm_campaign=tm_promo

[5] Мой круг: https://moikrug.ru?utm_source=tm_habrahabr&utm_medium=tm_top_panel&utm_campaign=tm_promo

[6] Фрилансим: https://freelansim.ru?utm_source=habrahabr&utm_medium=referral&utm_campaign=mainpage&utm_content=head_link

[7] Unity3D: https://habrahabr.ru/hub/unity3d/

[8] Разработка мобильных приложений: https://habrahabr.ru/hub/mobile_dev/

[9] Разработка под Android: https://habrahabr.ru/hub/android_dev/

[10] Разработка игр: https://habrahabr.ru/hub/gamedev/

[11] Блог компании Google: https://habrahabr.ru/company/google/

[12] 0 комментариев: #comments

[13] Лаборатории Google: http://bit.ly/29I0ANa

[14] Tango Explorer: https://developers.google.com/tango/tools/explorer

[15] проекта Солнечной системы: https://play.google.com/store/apps/details?id=tech.solarsimulator

[16] Unity SDK: https://unity3d.com/get-unity/download

[17] этом руководстве: https://developers.google.com/tango/apis/unity/unity-prefab-motion-tracking#create_a_simple_unity_scene

[18] будут помогать: http://www.businesswire.com/news/home/20140625005097/en/Indoor-Retail-Mapping-Leader-aisle411-Delivers-In-Store#.U6r5BfldWSo

[19] проект навигации: http://gizmodo.com/using-nothing-but-googles-project-tango-tablet-to-escap-1760614682

[20] применение для Project Tango: http://smartpicture3d.com/smart-picture-and-google-project-tango/

[21] сделали: https://matterport.com/matterport-and-google-atap-project-tango/

[22] https://youtu.be/UMKMuYA_FcM: https://youtu.be/UMKMuYA_FcM

[23] https://www.youtube.com/channel/UCXh6fg2Lq3EC5FqwMzbFqtg/videos
: https://www.youtube.com/channel/UCXh6fg2Lq3EC5FqwMzbFqtg/videos

[24] Примеры для Unity: https://github.com/googlesamples/tango-examples-unity

[25] Примеры для Java: https://github.com/googlesamples/tango-examples-java

[26] Примеры для C: https://github.com/googlesamples/tango-examples-c

[27] unity: https://habrahabr.ru/search/?q=%5Bunity%5D&target_type=posts

[28] дополненная реальность: https://habrahabr.ru/search/?q=%5B%D0%B4%D0%BE%D0%BF%D0%BE%D0%BB%D0%BD%D0%B5%D0%BD%D0%BD%D0%B0%D1%8F%20%D1%80%D0%B5%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D1%81%D1%82%D1%8C%5D&target_type=posts

[29] разработка игр: https://habrahabr.ru/search/?q=%5B%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0%20%D0%B8%D0%B3%D1%80%5D&target_type=posts

[30] device lab: https://habrahabr.ru/search/?q=%5Bdevice%20lab%5D&target_type=posts

[31] Project Tango: https://habrahabr.ru/search/?q=%5BProject%20Tango%5D&target_type=posts

[32] Project Ara: https://habrahabr.ru/search/?q=%5BProject%20Ara%5D&target_type=posts

[33] Google: https://habrahabr.ru/search/?q=%5BGoogle%5D&target_type=posts

[34] Lenovo: https://habrahabr.ru/search/?q=%5BLenovo%5D&target_type=posts

[35] Motorola Mobility: https://habrahabr.ru/search/?q=%5BMotorola%20Mobility%5D&target_type=posts

[36] инфракрасные датчики: https://habrahabr.ru/search/?q=%5B%D0%B8%D0%BD%D1%84%D1%80%D0%B0%D0%BA%D1%80%D0%B0%D1%81%D0%BD%D1%8B%D0%B5%20%D0%B4%D0%B0%D1%82%D1%87%D0%B8%D0%BA%D0%B8%5D&target_type=posts

[37] Google Cardboard: https://habrahabr.ru/search/?q=%5BGoogle%20Cardboard%5D&target_type=posts

[38] Motion Tracking: https://habrahabr.ru/search/?q=%5BMotion%20Tracking%5D&target_type=posts

[39] Area Learning: https://habrahabr.ru/search/?q=%5BArea%20Learning%5D&target_type=posts

[40] Unity SDK: https://habrahabr.ru/search/?q=%5BUnity%20SDK%5D&target_type=posts

[41] Java Api: https://habrahabr.ru/search/?q=%5BJava%20Api%5D&target_type=posts

[42] 3D-приложения: https://habrahabr.ru/search/?q=%5B3D-%D0%BF%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F%5D&target_type=posts

[43] Войдите: https://habrahabr.ru/auth/login/

[44] Регистрация: https://habrahabr.ru/auth/register/

[45] Публикации: https://habrahabr.ru/posts/top/

[46] Хабы: https://habrahabr.ru/hubs/

[47] Компании: https://habrahabr.ru/companies/

[48] Пользователи: https://habrahabr.ru/users/

[49] Q&A: https://toster.ru/?_aa=press_anykey

[50] Песочница: https://habrahabr.ru/sandbox/

[51] О сайте: https://www.pvsm.ru/info/about/

[52] Правила: https://www.pvsm.ru/info/help/rules/

[53] Помощь: https://www.pvsm.ru/info/help/

[54] Соглашение: https://www.pvsm.ru/info/agreement/

[55] Реклама: https://special.habrahabr.ru/advertising/

[56] Спецпроекты: https://special.habrahabr.ru/

[57] Тарифы: https://special.habrahabr.ru/corporate/

[58] Контент: https://special.habrahabr.ru/content/

[59] Вебинары: https://special.habrahabr.ru/workshops/

[60] Приложения: https://www.pvsm.ru/apps/

[61] Тест-драйв: https://special.habrahabr.ru/google/lab/

[62] Помощь стартапам: https://special.habrahabr.ru/hello_startup/habrahabr/

[63] Работа в IT: https://special.habrahabr.ru/#hr

[64] © TM: https://tmtm.ru/

[65] Служба поддержки: https://habrahabr.ru/feedback/

[66] Мобильная версия: https://m.habrahabr.ru/article/304762/?mobile=yes

[67] Источник: https://habrahabr.ru/post/304762/?utm_source=habrahabr&utm_medium=rss&utm_campaign=best