How To Start Building Spatially Aware Apps With Google’s Project Tango

“Tango can enable a whole new range of applications that simply weren’t possible before.”

On a fundamental basis, a smartphone’s camera is not really a camera at all. Sure, it can take pictures and videos. But on a more practical basis, the camera is really a cluster of sensors, lens and hardware that are capable of so much more.

Google is putting those sensors to the test with what it calls Project Tango, a platform that uses computer vision and machine learning to comprehend the world around it.

“Fundamentally, Tango is about enabling mobile devices to understand the world around them,” said Wic Meeussen, Google’s engineer in charge of Area Learning for Project Tango at Google I/O 2016. “Tango can enable a whole new range of applications that simply weren’t possible before.”

The use cases for Project Tango have the potential to be immense. Developers will be able to use it to create significant augmented reality experiences by mapping objects in the real world. Virtual reality multi-player gamers will benefit by knowing where other people and objects are in the physical area near them. Project Tango will ultimately be the tool that solves the problem of indoor object mapping for the era of augmented reality.

The Essential Guide Guide to Android 6.0 MarshmallowWhat you need to know about all the features of Android 6.0GET IT NOW

As far as smartphone cameras have come, what we have in 2016 are going to look like ignorant and unintelligent relics compared to what is to come. With that in mind, let’s take a look at everything developers will need to know to get started with Project Tango.

The History Of Project Tango

Google’s Project Tango is an excellent example of the type of innovation happening at the conjunction of hardware, software, sensors and the cloud happening at the smartphone level. Tango, introduced in June 2014, is a platform that brings computer vision, image processing and advanced vision sensors to smartphones. Tango can perform motion tracking, depth perception and area learning to help understand the world around it.

Project Tango is a truly open project with dozens of companies contributing to its development including the NASA Jet Propulsion Laboratory, Lenovo, Autodesk, Qualcomm, Nvidia and the Open Source Robotics Foundation. A developer kit, a 7-inch tablet called Yellowstone, has been available since 2014 and currently costs $512 through Google’s Project Tango website.

The Project Tango developer kit tablet includes a four mega-pixel, two millimeter lens back RGB-IR (infrared) pixel sensor with a large cluster of sensors, many of which you’d find in a normal smartphone (accelerometer, barometer, GPS, gyroscope) but also additional sensors for motion tracking and 3D depth sensing.

Another Project Tango device called Peanut was a smartphone tested at the MARS lab at the University of Minnesota. Two Peanut smartphones were sent to the International Space Station to be tested by NASA in SPHERES robots. Google stopped supporting the Peanut in September 2014.

Three Core Concepts For Project Tango

Project Tango is organized around three core concepts: motion tracking, area learning and depth perception.

Motion Tracking: Allows a device to understand its motion at it moves through an area.

Before jumping into how Project Tango implements Motion Tracking, it is important to understand a simple concept of physics. In school, students are taught to make plots on a two-degree (X,Y) Cartesian coordinate plane in horizontal or vertical points. A third degree (Z) to represents depth (imagine turning a square into a cube).

A free floating object is not bound to just three points but rather on a notion called degrees of freedomthat govern attitude and trajectory. Imagine a satellite in space. Its attitude is governed by its movement along the X,Y,Z axes. Its movement along those axes (pitching, yawing, rolling) are three additional points to monitor. Thus the movement of a rigid body (a satellite … or a smartphone) in a three-dimensional space can have up to six degrees of freedom.

The combination of position and orientation of an object is called its “pose.”

Pose data acts as the starting point in all in Project Tango Motion Tracking sessions and plots the movement of the device through space along its course.

Google’s developer page states:

The APIs support two ways to get pose data: callbacks to get the most recent pose updates, and functions to get a pose estimate at a specific time. The data is returned with two main parts: a vector in meters for translation and a quaternion for rotation. Poses are specified within specific reference frame pairs, and you must specify a target frame with respect to a base frame of reference when asking for a pose.

Motion Tracking in Project Tango only provides relative location and distance with its sensors, not GPS coordinates (use the Google Location API for that). Motion Tracking does not give a device the ability to know or learn an area nor does it “remember” previous sessions. Over long periods of time and distance, small errors will creep up and cause errors in measurement, leading to “drift” (where the perceived and absolute positions of the device are no longer aligned).

Area Learning: If Motion Tracking only measures movement from point to point along a trajectory, area learning corrects for drift by learning and remembering where it has been.

Area Learning is a function of computer vision. The camera is walked through an area and can remember it by saving an Area Description File (ADF). Area Learning will remember the turns and curves, structures and organization of where it has been. Combined with motion tracking, you can see how a trajectory can be plotted and then its features memorized to know exactly where it is. These capabilities are important when it comes to the notion of creating interactive augmented reality environments or games in which a person moves through a physical space (like a retail store, for instance).

“This is what really gives your Tango device a memory,” Meeussen said.

To create an ADF, developers can either use the Project Tango Explorer or the Project Tango APIs to handle learning, saving and loading in the app. To create consistent experiences within an app, developers must perform localization, which consists of loading a previously saved ADF and move the device into the area that was saved with that ADF.

“This is what really gives your Tango device a memory,” said Meeussen. “When you bring Tango device into a new space it will use its camera to create a mathematical description in its memory.”

Google notes that Area Learning works best in areas with visually diverse aspects. A blank room with white walls will be hard for a computer to distinguish. At the same time, areas should look nearly the same when they learned (and saved to the ADF) as when they are booted up again. To handle different angles or changes in areas, developers should create multiple ADFs from different angles and orientations from a particular starting point.

Depth Perception: The ability to see the distance of objects in the real world is something that humans take for granted. I know that my laptop is about two feet in front of me and the wall another five feet from that. Computers have a harder time in sensing depth.

To sense depth, Project Tango allows manufacturers to choose among three depth perception technologies: Structured Light, Time of Flight (both use infrared) and Stereo (which does not use infrared).

Depth Perception in Project Tango is designed to work best indoors between 0.5 and 4 meters. Areas with high degrees of IR light (sunlight or incandescent bulbs) cannot be scanned well.

The Project Tango API uses point clouds to scan depth data of all objects within its purview to give X,Y,Z coordinates of specific objects.

Project Tango Development Tools

Project Tango functions on Android device platforms that run in C, Java and Unity. Google has APIs and code samples available for each programming language (see here for JavaUnity and C).

Project Tango has four primary tools for building apps:

  • Explorer: The Project Tango Explorer on a device allows developers to switch between Area Learning capabilities, Point Cloud (for depth perception) and diagnostics.
  • Permissions: Project Tango—per Android’s granular permission scheme—must ask for the use of a device’s camera and other functions. The Permissions Manager allows developers and users to set up and revoke permissions for apps in Project Tango.
  • Constructor: The Constructor allows developers access to 3D models of environments and then they save and export the 3D mesh. The Constructor is an app specific to Project Tango devices.
  • ADF Inspector: Once a developer creates an ADF, the Inspector allows them to “see inside” the file to be able to improve it. The ADF Inspector is an app specific to Project Tango devices.

Google and Lenovo will release a consumer-grade Project Tango device later in 2016.

How To Start Building Spatially Aware Apps With Google’s Project Tango的更多相关文章

  1. Building Modern Web Apps-构建现代的 Web 应用程序

    Building Modern Web Apps-构建现代的 Web 应用程序 视频长度:1 小时左右 视频作者:Scott Hunter 和 Scott Hanselman 视频背景:Visual ...

  2. 书籍:Building Secure PHP Apps

    Building Secure PHP Apps https://leanpub.com/buildingsecurephpapps

  3. 【本人译作推荐】Windows 8应用开发:C#和XAML卷(原名:Building Windows 8 Apps with C# and XAML)

    [图书推荐] 译名:Windows 8应用开发:C#和XAML卷 原名:Building Windows 8 Apps with C# and XAML   编辑推荐 国内第一本使用XAML与C#语言 ...

  4. Issues I encountered when building Windows Store apps on a new laptop

    I took over my beloved wives samsung ativ book 9 recently as her first job granted her a brandnew su ...

  5. Building Modern Web Apps-构建现代的 Web 应用程序(一些感想)

    <iframe src="http://channel9.msdn.com/Series/MVA-China/Web20140611A01/player?h=540&w=960 ...

  6. Metro Revealed: Building Windows 8 apps with XAML and C# 阅读笔记

    第一章1.1.3中提到 Jesse Liberty 的<Pro Windows 8 Development with XAML and C#>,这是一本关于win8更全面的书,以后看.

  7. (转) 实时SLAM的未来及与深度学习的比较

          首页 视界智尚 算法技术 每日技术 来打我呀 注册     实时SLAM的未来及与深度学习的比较 The Future of Real-Time SLAM and “Deep Learni ...

  8. VR AR MR

    VR.AR和MR的区别? VR就是创造一个完全取代现实的世界,让人感觉「我怎么在这里?」 AR则是在现实世界的图像中叠加一些东西,让人感觉「哎?这里多了个本来不存在的东西」 MR则是虚拟物体完全和现实 ...

  9. AngularJS Front-End App with Cloud Storage Tutorial Part 1: Building a Minimal App in Seven Steps

    原文 : http://www.codeproject.com/Articles/1027709/AngularJS-Front-End-App-with-Cloud-Storage-Tutoria ...

随机推荐

  1. Mybatis扩展

    分页插件PageHelper 其实Mybstis内部有实现逻辑分页的功能,但是较为麻烦和难用.这里记录一个分页插件PageHelper的使用,我们可以在它的github地址https://github ...

  2. 【BZOJ】3670: [Noi2014]动物园(KMP)

    题目 传送门:QWQ 分析 像求next一样求num. 第二次求next时加上不超过一半的条件. 时间复杂度: $ \huge O ( n ) $ 代码 // luogu-judger-enable- ...

  3. cloudera manager卸载流程

    注意:卸载Cloudera Manager后,根据需要保留或者删除集群中的Hadoop数据.下面的命令没有删除Hadoop数据,可以在控制台的Hadoop 和MapReduce /配置/选项卡,查看H ...

  4. 转-----FPGA工程师:持守梦想or屈于现实

     昨晚无意间看到一段新闻频道对最近炒得火热的“史上最年轻教授”的专访,倒是他的一位同学对于梦想的“现实版”解说颇有些耐人寻味.大体意思是说“拼了老命考上一所梦寐以求的大学,父母辛辛苦苦交了学费,我们却 ...

  5. 一个简单的异常/条件重试类(C#)

    单个类,简单好用 using System; using System.Linq.Expressions; using System.Threading; using System.Threading ...

  6. halcon连续采集图像

    dev_close_window()dev_update_window('off')create_bar_code_model ([], [], BarCodeHandle)dev_open_wind ...

  7. sql常用优化

    最近因工作需要,查找资料整理了一下sql的常见优化,具体如下: 1.尽量避免全表扫描,一般在where或order by 涉及的列上建立索引: 2.尽量避免在where子句中对索引字段进行null值判 ...

  8. 搭建一个Web API项目(DDD)

    传送阵:写在最后 一.创建一个能跑的起来的Web API项目 1.建一个空的 ASP.NET Web应用 (为什么不直接添加一个Web API项目呢,那样会有些多余的内容(如js.css.Areas等 ...

  9. C++中float类型的存储

    C++中float用32位来表示,f = (-1)^S * T * 2^E,S是符号位,T是尾数,E是指数 首先我们把f表示成科学计数法的形式,然后再写出其在内存中的表示,在这里T写成1.XXX的形式 ...

  10. filter入门

    TestFilter.java package com.cdsxt.filter; import java.io.IOException; import javax.servlet.Filter;im ...