Build location-based augmented reality with ARCore geospatial API

Google for Developers · Intermediate ·🔧 Backend Engineering ·4y ago

Key Takeaways

Building location-based augmented reality with ARCore geospatial API and VPS

Full Transcript

Welcome to our Tech Talk. I'm Belal Sabdu, a product manager, and I'm joined today by Simon Lynon, a software engineer, and we're from the Google Maps team. Today, we're really excited to introduce you all to the ARCore Geospatial API, which will allow you to build global scale immersive location-based AR experiences on Android and iOS. We've been mapping the world in immaculate detail and scale over the past 15 years using satellites, aerial, and ground-level imagery to build an unprecedented understanding of the dynamic physical world. In totality, we've covered more than 10 million miles of Street View, a distance that can encircle the globe more than 400 times. We've also covered more than 36 million square miles of HD satellite imagery, covering more than 98% of the entire population. From this massive corpus of billions of images, we have fused them together into a 3D world model that geometrically and semantically understands the world, and it is the underpinning foundation for our first-party applications like Google Maps and Earth. This 3D world model is optimized for visualization, analysis, and localization. In other words, maps for humans and machines alike. Today, we are here to talk to you about the machine readable 3D model, and in particular, the smartphone camera in your pocket, and how we're enriching it with Google's understanding of the world to allow you, the developer community, to create immersive world-scale AR experiences. We're excited to partner with the Google AR teams to bring this 3D understanding of the world to you through Google's AR developer platform, ARCore, which allows Android and iOS developers to build immersive AR experiences for mobile. This technology is called global localization and has been stress tested in production powering the AR live view mode inside of Google Maps and the AR places filter in Google Lens. And today, we're excited to open up the same core capability to you, our developer community, to create immersive location-based AR experiences in your own applications. This capability is available in over 93 countries across the globe everywhere we have Street View. With that background in mind, let's get right into it. We'll start off by discussing different options for building location-based AR experiences. Then, we'll provide background on the technical capabilities on our road map, as well as walk you through the fundamentals of using this API and just how easy it is to get started. And finally, we'll share what our early partners are already doing with the geospatial API to address a range of verticals and use cases. Let's take a step back. If you want to build location-based AR experiences today, you have a couple of options. Use built-in sensors like the GPS and compass on your phone. Use spatial anchors like the ARCore Cloud Anchors API. And finally, use the geospatial API, which is the subject of today's talk. Let's understand the benefits and tradeoffs of using these various options. You've got GPS, which is a global scale system, great for building location-based experiences. But, if you've ever dealt with your blue dot jumping around, especially in an urban canyon, you know that the accuracy is a far cry from what you need to build AR experiences that reliably augment the camera view. Even after you do that crazy eight pattern for calibrating your compass, with location services, you'll typically get 5 to 10 m of positional accuracy and 30 to 45 degrees of rotational accuracy. This means that your camera may not even be looking in the right direction or your AR elements are completely out of frame. You also have the ability to use spatial anchoring capabilities like ARCore Cloud Anchors. In this case, you need to explicitly map a space or place of interest to attach content to it, and then can reliably localize against it. Cloud Anchors works really well at near field distances for private spaces or smaller event scale experiences, where you can physically show up and map the space before attaching AR content. But, with larger scale deployments of Cloud Anchors, discovering content is a challenge, and so is placement. We've heard from you, the developer community, that you want to guide users to the right location, to be able to remotely place content without physically going to those locations. Both of which are hard to do with Cloud Anchors today. Enter Visual Positioning System and Global Localization. Thanks to Google's decade plus of ground level imagery, we've already mapped the world in immaculate detail. By working in conjunction with location services, we can take a good GPS estimate and make it great, ready for AR. So, with the ARCore Geospatial API, you are able to remotely attach content to the world and guide users to it, allowing you to create immersive location based AR experiences almost everywhere we have Street View. All right, let's summarize the differences. With GPS, you get global scale with lower accuracy and variable reliability. With the Cloud Anchors API, you get high accuracy with an unlimited scale because you explicitly need to map a space. And with the Geospatial API, you get the best of both worlds. Remotely placing content in the world and offering nearly ubiquitous accurate localization and heading without needing to manually map the space. We hope to surface additional capabilities over time to help you build truly next-gen experiences. I will now hand it over to Simon to unpack the underlying technologies powering the Geospatial API and the capabilities it gives you to turn the world into your canvas. Thanks, Bilawal. In the following minutes, I walk you through the three pillars of the Geospatial API. Geo localization, geometry and anchoring, as well as world understanding. Localization is the foundation of the Geospatial API. It is key to bring your AR experiences to the global scale by allowing you to place virtual content in relation to the globe. To provide this capability, the device makes a server call to the Visual Positioning Service, VPS, where your geographic coordinates and images are used to match against high-resolution 3D data from Google Maps. This process is called visual localization, and it precisely locates your device with respect to the environment much more accurately than what was previously possible with GPS alone. I want to take a moment to run through how all this works. Street View images, which have been captured around the globe for more than 15 years, are the foundation of VPS. Deep neural networks identify and describe those parts of the images that are likely to be recognizable over long periods of time. You can see that the algorithm has learned to focus on buildings instead of cars. We then combine these salient points across tens of billions of images to compute a 3D point cloud of the environment. This localization model consists of trillions of points and spans nearly all countries where Street View coverage. When your device makes a request to the Geospatial API, a similar process is applied to the image. A neural network processes the pixels to find recognizable parts of the environment and matches them to the localization model. Computer vision algorithms then compute the position and orientation of the device that is sent back to you. This process makes use of TPUs, Google's machine learning accelerators, and it takes less than a second. Using the response from VPS, the Geospatial API takes care of merging your local coordinates with the geographic coordinates so you can work in a single coordinate system. As Belovod mentioned earlier, this launch offers a very rare combination. The Geospatial API builds on the Visual Positioning Service, which is in a very mature state, and we make the API available for nearly all areas covered by Google Street View, which is very widely scaled. One key challenge when building AR experiences is the accurate placement of content in relation to real-world geometry. The API we launched today allows for anchor placement at a given latitude, longitude, and altitude. We expect to launch terrain anchors later this year, which will allow you to create anchors by providing only latitude and longitude information, while other information from Google Maps is leveraged to precisely place the content at the right altitude above ground. The image on the right shows an example where the precise altitude information is key to a delightful user experience. In the following, I would like to give you a behind-the-scenes look at a technology that the team is currently working on. These capabilities are not launching today, but we're exploring ways to make them available for developers in the future. AR experiences become truly magical when they seamlessly integrate with the real world, for instance, through occlusions and physics interaction. We believe that one key enabler is given by abstract building geometry as shown in the image on the right. Another angle we are exploring is to bring already familiar AR concepts to a global scale. For example, ARCore provides the ability to anchor elements to physical locations and snap them to plane geometry detected by the device. For the geospatial API, we're thinking about a similar concept which we call geometric anchors. It consists of two parts. The first part is to capture and persist intent such as keeping anchors that were attached to a wall sticky to the wall. The second part is about maintaining anchor poses. So that even if the our models are refined over time, anchors remain at the location that you intended them to be at. Lastly, we will hope to gradually expose more of our underlying 3D semantic model which will allow you to build even richer experiences. In particular, in combination with existing geospatial offerings such as Google Maps platforms. Adding semantic understanding to the geospatial API will allow you to procedurally place content at places in the world such as a specific fountain in a park or your favorite coffee store. We're looking into making pieces of the semantic 3D model available in the coming quarters. After this exploration of the future, let's take a quick moment to look at what we are launching today. This code example shows you how easy it is to bring your AR experiences to a global scale. To obtain geospatial data, you need to enable the geospatial API by changing the geospatial mode in your session configuration to enabled. To determine an anchor location for remote anchor creation, you can for instance sample points from Google Earth or Google Maps. You can then start creating anchors in the global frame using these coordinates. Another example I want to show is how you obtain a geospatial pose in your app. A geospatial pose consists of latitude, longitude, and altitude information, as well as device orientation. All these quantities are provided with estimated uncertainties, so you can adjust your experience accordingly. You see that only a few lines of additional code are needed to build global scale AR experiences with the new geospatial API. And with that, I'm handing back to Bilawal to walk you through some use cases. Thanks, Simon. We've seen developer interest for a range of use cases and verticals. Today, we'll focus on three sets of applications. The first vertical is ride sharing and micro mobility. Both demand high accuracy location for a range of use cases where GPS just doesn't cut it. Thanks to our new API, partners are removing the friction from parking dockless e-scooters and e-bikes, adding pinpoint accuracy so that riders know exactly when their vehicle is in a valid parking spot. The result is greater peace of mind for riders and more properly parked scooters on city streets, leading to better relationships with the communities that our partners serve. Conversely, vehicle discovery gets easier, especially in dense urban corridors, with the increased location accuracy, which our partners are using to help customers find vehicles, thus improving their user experience and increasing vehicle rental rates. The next vertical is location-based AR experiences. Thanks to our API, developers can focus on creating compelling user experiences that provide utility and delight, without needing to build and maintain maps of multiple locations. Telstra and Accenture are creating a companion app for Marvel Stadium that brings customers to their seats while showcasing engaging immersive content along the way. Docomo and Curiosity are turning Tokyo hotspots into an immersive world where you can fend off virtual dragons with your favorite robot companion. Finally, we have gaming and self-expression. With the geospatial API, you can literally turn the globe into a canvas for creativity. In Balloon Pop, you can place balloons as targets in the real world and try to pop them using a physics-enabled ball that reacts to distance in world space. Nearby users can join the experience and pop the same balloons via a simple Firebase implementation. And with Pocket Garden, you can adorn your neighborhood with a colorful AR community garden, accurately placing seeds across the real world at scale, planting vines, puffy succulents, and more. We've also given Snap early access to this API to help explore entertaining and educational use cases. All of these are great examples of what is possible when you turn the globe into a canvas, and we're excited to share that Balloon Pop and Pocket Garden will be open sourced and available to you to bootstrap your own creativity. We look forward to seeing what developers build with the ARCore Geospatial API. So, to summarize, with the introduction of the geospatial API, we're providing the foundation for building global-scale AR experiences. The API is mature and production ready with the underlying technology deployed at Google scale for more than 3 years, and with a range of partners using it in their own experiences. The geospatial API is available today on all supported ARCore-enabled devices across Android and iOS. Get started with our new geospatial code lab or check out our samples for Android, Unity, and iOS in the ARCore SDK. We're excited to see what you create when the world is your canvas.

Original Description

ARCore is Google's developer platform for building augmented reality experiences. Developers can build immersive experiences with AR in the real world. Learn how to build world scale AR experiences remotely with VPS and the new ARCore Geospatial API. Resources: ARCore Documentation → https://goo.gle/3OjxlU5 ARCore Geospatial API documentation → https://goo.gle/3y9IKQD Google AR & VR Twitter → https://goo.gle/3MkA2mA Speakers: Bilawal Sidhu, Simon Lynen Watch more: All Google I/O 2022 Sessions → https://goo.gle/IO22_AllSessions Google Developers at I/O 2022 playlist → https://goo.gle/IO22_GoogleDevs All Google I/O 2022 technical sessions → https://goo.gle/IO22_Sessions Subscribe to Google Developers → https://goo.gle/developers #GoogleIO
Watch on YouTube ↗ (saves to browser)
Sign in to unlock AI tutor explanation · ⚡30

Playlist

Uploads from Google for Developers · Google for Developers · 0 of 60

← Previous Next →
1 Developer Journey - Sunnyvale DSC Summit ‘19
Developer Journey - Sunnyvale DSC Summit ‘19
Google for Developers
2 How Google is working with students - Sunnyvale DSC Summit ‘19
How Google is working with students - Sunnyvale DSC Summit ‘19
Google for Developers
3 Starting your career in the Cloud - Sunnyvale DSC Summit ‘19
Starting your career in the Cloud - Sunnyvale DSC Summit ‘19
Google for Developers
4 The Solution Challenge  - Sunnyvale DSC Summit ‘19
The Solution Challenge - Sunnyvale DSC Summit ‘19
Google for Developers
5 Firebase - Sunnyvale DSC Summit ‘19
Firebase - Sunnyvale DSC Summit ‘19
Google for Developers
6 Cloud Hero - Sunnyvale DSC Summit ‘19
Cloud Hero - Sunnyvale DSC Summit ‘19
Google for Developers
7 Panel discussion  - Sunnyvale DSC Summit ‘19
Panel discussion - Sunnyvale DSC Summit ‘19
Google for Developers
8 The art of negotiation - Sunnyvale DSC Summit ‘19
The art of negotiation - Sunnyvale DSC Summit ‘19
Google for Developers
9 Courage to care, solve and share - Sunnyvale DSC Summit ‘19
Courage to care, solve and share - Sunnyvale DSC Summit ‘19
Google for Developers
10 Version 9 of Angular, Glass Enterprise Edition 2, path to DX deprecation, & more!
Version 9 of Angular, Glass Enterprise Edition 2, path to DX deprecation, & more!
Google for Developers
11 [DEPRECATING] Introducing a new series (Assistant for Developers Pro Tips)
[DEPRECATING] Introducing a new series (Assistant for Developers Pro Tips)
Google for Developers
12 Detecting memory bugs with HWASan, Bazel 2.1, Next ‘20 session guide, & more!
Detecting memory bugs with HWASan, Bazel 2.1, Next ‘20 session guide, & more!
Google for Developers
13 Why Podcast.app chose a .app domain name
Why Podcast.app chose a .app domain name
Google for Developers
14 Machine Learning Bootcamp Jakarta 2019
Machine Learning Bootcamp Jakarta 2019
Google for Developers
15 Android Studio 3.6, Android 11 Developer Preview, Kubeflow 1.0, & more!
Android Studio 3.6, Android 11 Developer Preview, Kubeflow 1.0, & more!
Google for Developers
16 [DEPRECATING]  Importance of community (Assistant on Air)
[DEPRECATING] Importance of community (Assistant on Air)
Google for Developers
17 Why the Flutter team switched from .io to a .dev domain name
Why the Flutter team switched from .io to a .dev domain name
Google for Developers
18 3 website-building tips from .dev creators
3 website-building tips from .dev creators
Google for Developers
19 Why NimbleDroid chose a .app domain name
Why NimbleDroid chose a .app domain name
Google for Developers
20 Android Platform Codelab, Bazel 2.2, Maps Android Utility Library v1.0, & more!
Android Platform Codelab, Bazel 2.2, Maps Android Utility Library v1.0, & more!
Google for Developers
21 Google for Games Developer Summit: A free, digital experience for game developers
Google for Games Developer Summit: A free, digital experience for game developers
Google for Developers
22 Inspecting Home Graph (Assistant for Developers Pro Tips)
Inspecting Home Graph (Assistant for Developers Pro Tips)
Google for Developers
23 Google for Games Developer Summit Keynote
Google for Games Developer Summit Keynote
Google for Developers
24 Stadia Games & Entertainment presents: Keys to a great game pitch (Google Games Dev Summit)
Stadia Games & Entertainment presents: Keys to a great game pitch (Google Games Dev Summit)
Google for Developers
25 Empowering game developers with Stadia R&D (Google Games Dev Summit)
Empowering game developers with Stadia R&D (Google Games Dev Summit)
Google for Developers
26 Supercharging discoverability with Stadia (Google Games Dev Summit)
Supercharging discoverability with Stadia (Google Games Dev Summit)
Google for Developers
27 Stadia Games & Entertainment presents: Creating for content creators (Google Games Dev Summit)
Stadia Games & Entertainment presents: Creating for content creators (Google Games Dev Summit)
Google for Developers
28 Bringing Destiny to Stadia: A postmortem (Google Games Dev Summit)
Bringing Destiny to Stadia: A postmortem (Google Games Dev Summit)
Google for Developers
29 Live Captioning in Google Slides
Live Captioning in Google Slides
Google for Developers
30 [DEPRECATING]  User engagement for the Google Assistant
[DEPRECATING] User engagement for the Google Assistant
Google for Developers
31 TensorFlow Dev Summit ‘20, Google for Games Dev Summit, Cloud AI Platform Pipelines, & much more!
TensorFlow Dev Summit ‘20, Google for Games Dev Summit, Cloud AI Platform Pipelines, & much more!
Google for Developers
32 Top 5 from the TensorFlow Dev Summit 2020
Top 5 from the TensorFlow Dev Summit 2020
Google for Developers
33 Developer Student Clubs 2019 Turkey Leads Summit
Developer Student Clubs 2019 Turkey Leads Summit
Google for Developers
34 Building simpler payment experiences | Google Pay Plugin for Magento 2
Building simpler payment experiences | Google Pay Plugin for Magento 2
Google for Developers
35 Become A Developer Student Club Lead
Become A Developer Student Club Lead
Google for Developers
36 Firebase Kotlin Extensions, ARM apps on the Android Emulator, Angular v9.1, & more!
Firebase Kotlin Extensions, ARM apps on the Android Emulator, Angular v9.1, & more!
Google for Developers
37 Test suite for Smart Home (Assistant for Developers Pro Tips)
Test suite for Smart Home (Assistant for Developers Pro Tips)
Google for Developers
38 Google Play updates, Bazel 3.0, Business Console for Google Pay, & more!
Google Play updates, Bazel 3.0, Business Console for Google Pay, & more!
Google for Developers
39 How to use error logs (Assistant for Developers Pro Tips)
How to use error logs (Assistant for Developers Pro Tips)
Google for Developers
40 Contact Center AI, Android Studio 4.1 Canary 5, TensorFlow QAT API, & more!
Contact Center AI, Android Studio 4.1 Canary 5, TensorFlow QAT API, & more!
Google for Developers
41 WebView DevTools, Kotlin meets gRPC, Flutter CodePen support, & more! (Episode 200)
WebView DevTools, Kotlin meets gRPC, Flutter CodePen support, & more! (Episode 200)
Google for Developers
42 Offline handling for Smart Home (Assistant for Developers Pro Tips)
Offline handling for Smart Home (Assistant for Developers Pro Tips)
Google for Developers
43 Android 11 Dev Preview 3, Google Fonts for Flutter, Shielded VM, & more!
Android 11 Dev Preview 3, Google Fonts for Flutter, Shielded VM, & more!
Google for Developers
44 Machine Learning Foundations: Ep #1 - What is ML?
Machine Learning Foundations: Ep #1 - What is ML?
Google for Developers
45 Flutter web support updates, BigQuery materialized views, Cloud Spanner emulator, & more!
Flutter web support updates, BigQuery materialized views, Cloud Spanner emulator, & more!
Google for Developers
46 Computer vision by building a neural network with TensorFlow | Machine Learning Foundations
Computer vision by building a neural network with TensorFlow | Machine Learning Foundations
Google for Developers
47 Machine Learning Foundations: Ep #3 - Convolutions and pooling
Machine Learning Foundations: Ep #3 - Convolutions and pooling
Google for Developers
48 Android 11 Beta plans, Flutter 1.17, Dart 2.8, & much more!
Android 11 Beta plans, Flutter 1.17, Dart 2.8, & much more!
Google for Developers
49 Machine Learning Foundations: Ep #4 - Coding with Convolutional Neural Networks
Machine Learning Foundations: Ep #4 - Coding with Convolutional Neural Networks
Google for Developers
50 Google Developers ML Summit
Google Developers ML Summit
Google for Developers
51 Real-world image classification using convolutional neural networks | Machine Learning Foundations
Real-world image classification using convolutional neural networks | Machine Learning Foundations
Google for Developers
52 Adobe XD support for Flutter, Architecture Framework, temporary closures with Places API, & more!
Adobe XD support for Flutter, Architecture Framework, temporary closures with Places API, & more!
Google for Developers
53 Machine Learning Foundations: Ep #6 - Convolutional cats and dogs
Machine Learning Foundations: Ep #6 - Convolutional cats and dogs
Google for Developers
54 Machine Learning Foundations: Ep #7 - Image augmentation and overfitting
Machine Learning Foundations: Ep #7 - Image augmentation and overfitting
Google for Developers
55 Announcing Firebase Live, Flutter Day, Java 11 on Google Cloud Functions, & more!
Announcing Firebase Live, Flutter Day, Java 11 on Google Cloud Functions, & more!
Google for Developers
56 Machine Learning Foundations: Ep #8 - Tokenization for Natural Language Processing
Machine Learning Foundations: Ep #8 - Tokenization for Natural Language Processing
Google for Developers
57 Android 11 Beta, Google Play Asset Delivery, Firebase Crashlytics SDK, & much more!
Android 11 Beta, Google Play Asset Delivery, Firebase Crashlytics SDK, & much more!
Google for Developers
58 Natural Language Processing: Using sequencing APIs in TensorFlow | Machine Learning Foundations
Natural Language Processing: Using sequencing APIs in TensorFlow | Machine Learning Foundations
Google for Developers
59 Build a sarcasm classifier using NLP and TensorFlow | Machine Learning Foundations
Build a sarcasm classifier using NLP and TensorFlow | Machine Learning Foundations
Google for Developers
60 AR Realism with the ARCore Depth API
AR Realism with the ARCore Depth API
Google for Developers

Related Reads

📰
Conditional Operator (`?:`) in Java
Learn to use the conditional operator in Java to simplify your code and improve readability
Dev.to · Rajesh Bhola
📰
I couldn't find an npm package to sort filenames into buckets, so I built one
Learn how to create an npm package to sort filenames into buckets and apply it to a file-management feature
Dev.to · Elizabeth Sobiya
📰
Why FastAPI Apps Slow Down Over Time (Low CPU, High Latency Explained)
Learn how to identify and fix common issues that slow down FastAPI apps over time, such as session leaks and blocking code, to improve performance and reduce latency
Dev.to · Ayush Kumar
📰
When `await mutation()` lies: the `{ error }` destructuring that saves your weekend
Learn how to handle errors when using await mutation() to save time and frustration in your coding projects
Dev.to · Michel Faure
Up next
Indian Express Editorial Analysis by Chandan Sharma - 1 JULY 2026 | UPSC Current Affairs 2026
StudyIQ IAS
Watch →