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. node中的socket.io制作命名空间

    如果开发者想在一个特定的应用程序中完全控制消息与事件的发送,只需要使用一个默认的"/"命名空间就足够了.但是如果开发者需要将应用程序作为第三方服务提供给其他应用程序,则需要为一个用 ...

  2. Centos 6.5 下安装 Zabbix server 3.0服务器的安装及 监控主机的加入(2)

    一.Centos 6.5 下的Zabbix Server安装 上篇文章记录的是centos 7 下安装zabbix ,很简单.但是6.5上面没有可用的源直接安装zabbix,所以需要从别处下载.感谢i ...

  3. mysql数据库忘记密码时如何登录

    1.打开cmd命令提示符,进入上一步mysql.exe所在的文件夹即: 2.输入命令  mysqld --skip-grant-tables  回车,此时就跳过了mysql的用户验证 3.然后直接输入 ...

  4. LR11中webservice协议的性能测试应用

    使用LR11对webservice协议的接口测试应用 脚本开发步骤:1.打开vuser generator,新建一个脚本,选择webservice协议:2.选择Manage Services(服务管理 ...

  5. memcached内存分配机制

    memcached的内存分配没有用到c语言中自带的malloc函数,因为这个函数分配内存的时候效率很低,对于这种要求快速响应,对效率要求非常高的缓存软件来说非常不合适. memcached用的是自己的 ...

  6. C# 强制删除文件,解除占用的几点思考

    有一个古老的传说: 占用的文件是可以被强制删除的... 如果被别的应用程序打开着,你就要先找到那个打开的程序,结束掉才行.或者关闭关闭相关进程,延迟的方法. 一般来说被占用就意味着有其它进行或者线程对 ...

  7. 有关Zedgraph的功能扩展的笔记

    1.坐标轴范围.刻度调整后需要加上下面的语句才能刷新:     zedGraphControl1.AxisChange();     zedGraphControl1.Refresh(); 2.坐标范 ...

  8. Java后端发送email实现

    依赖的jar包 <dependency> <groupId>com.sun.mail</groupId> <artifactId>javax.mail& ...

  9. UNIX网络编程——socket的keep-alive(转)

    第一部分 [需求] 不影响服务器处理的前提下,检测客户端程序是否被强制终了. [现状] 服务器端和客户端的Socket都设定了keepalive属性. 服务器端设定了探测次数等参数,客户端.服务器只是 ...

  10. Unity Mecanim 动画系统

    1. Animator 组件 Controller:使用的Animator Controller文件. Avatar:使用的骨骼文件. Apply Root Motion:绑定该组件的GameObje ...