當前位置:
首頁 > 知識 > 做實景導航的有福了!ARKit增強現實版實景導航開源

做實景導航的有福了!ARKit增強現實版實景導航開源

做實景導航的有福了!ARKit增強現實版實景導航開源

ARKit:使用攝像頭和運動數據來繪製用戶移動時本地的地圖。

CoreLocation:使用WiFi和GPS數據來確定位置,精度比較低。

ARKit + CoreLocation:將高精度的AR與GPS數據相結合。

做實景導航的有福了!ARKit增強現實版實景導航開源

將這些技術結合起來的潛力是巨大的,在許多不同的領域有著很多的應用。 這個庫有兩個主要的特點:

  • 允許使用真實世界的坐標將元素放置在AR世界中。

  • 利用最近的位置數據點,並結合有關AR世界運動的知識,極大地提高了定位精度。

位置精度的改進目前還處於實驗階段,但在未來可能是最重要的組成部分。

由於目前還有一些工作尚未完成,並且存在其他方面的原因,因此最好由一個開放的社區來為這個項目服務,而不是通過GitHub Issues的方式。 所以我開放了一個Slack組,任何人都可以加入進來,討論有關這個庫的改進和大家的工作。

加入Slack社區

軟硬體要求

ARKit需要iOS 11系統,並支持以下設備:

  • iPhone 6S及以上

  • iPhone SE

  • iPad(2017)

  • iPad Pro的所有型號

iOS 11可以從Apple的開發者網站上下載。

使用方法

這個庫包含了ARKit和CoreLocation框架, 同時還包含了一個類似於Demo 1的演示程序。

使用CocoaPods進行設置

  1. 將本庫添加到你的podfile中: pod "ARCL"

  2. 在終端中,進入你的項目目錄,然後執行: pod update pod install

  3. 添加 NSCameraUsageDescriptionNSLocationWhenInUseUsageDescription 到 plist文件中以添加一個簡短說明(請參考演示項目)

手工設置

  1. ARKit+CoreLocation/Source目錄中的所有文件添加到項目中。

  2. 導入ARKit、SceneKit、CoreLocation和MapKit。

  3. 添加 NSCameraUsageDescriptionNSLocationWhenInUseUsageDescription 到 plist文件中以添加一個簡短說明(請參考演示項目)

快速入門指南

要在一座建築物上放置一個標註點,例如倫敦的金絲雀碼頭,我們要使用包含ARCL的主要類:SceneLocationView

首先,導入ARCL和CoreLocation,然後將SceneLocationView聲明為屬性:

import ARCLimport CoreLocationclass ViewController: UIViewController { var sceneLocationView = SceneLocationView()

當獲取到焦點時,調用sceneLocationView.run(),當中斷時,調用sceneLocationView.pause(),例如移動到不同的視角或者退出應用程序。

func viewDidLoad() {

在調用run()之後,就可以添加坐標了。 ARCL附帶一個名為LocationNode的類,它是3D場景中的一個對象,具有真實世界的位置,並且可以在世界範圍內顯示其他一些屬性。 LocationNode是SceneKit的SCNNode的子類,也可以進一步子類化。 對於這個例子,我們將使用一個名為LocationAnnotationNode的子類,我們用它在世界上顯示一個總是面向我們的2D圖像:

let coordinate = CLLocationCoordinate2D(latitude: 51.504571, longitude: -0.019717)let location = CLLocation(coordinate: coordinate, altitude: 300)let image = UIImage(named: "pin")!let annotationNode = LocationAnnotationNode(location: location, image: image)

默認情況下,你設置的圖像會以給定的尺寸顯示出來,例如,如果你提供了一個100x100的圖像,則會在屏幕上顯示為100x100像素大小。 這意味著遠處的注釋點與近處的注釋點看起來大小是相同的。 如果你希望按距離的遠近進行縮放,可以將LocationAnnotationNode的scaleRelativeToDistance設置為true

sceneLocationView.addLocationNodeWithConfirmedLocation(locationNode: annotationNode)

就是這樣了。 如果你設置sceneLocationView的幀,則現在應該會看到Canary Wharf上方懸停的標註點了。

附加功能

這個庫以及演示程序附帶了一些額外的配置功能。這些都在文檔里做了詳細介紹,一定要去看看。

SceneLocationView是ARSCNView的一個子類。 請注意,雖然這樣可以讓你完全訪問ARSCNView以通過其他方式去使用它,但你不應將委託設置為另一個類。 如果你需要使用委託功能,那麼應該將SceneLocationView子類化。

正北校準

有一個我個人無法攻克的難題,目前iPhone正北校準精度最高為15o。這對地圖導航來說還好,但是要將東西放在AR世界上時,它就成為了一個問題。

我相信通過使用各種AR技術可以攻克這個問題。

為了改善這個問題,我在庫中添加了一些函數,可以用來調整正北方向:

  • sceneLocationView.moveSceneHeadingClockwise

  • sceneLocationView.moveSceneHeadingAntiClockwise

  • sceneLocationView.resetSceneHeading

要使用這些函數,你要將sceneLocationView.useTrueNorth設置為false,然後在開始之前將設備指向北方的大致一個方向,這樣它才能更接近正北。將useTrueNorth設置為true(默認),它會根據自己的感覺不斷調整正北方。

在演示程序中,有一個名為adjustNorthByTappingSidesOfScreen的屬性,它用於訪問這些函數,默認是禁用的。一旦啟用這個屬性,則允許通過點擊屏幕的左側或右側來調整場景方向。

我的建議是你所處位置的正北方的附近放置一個地標,使用坐標在那個地方放置一個對象,然後使用moveSceneHeading函數來調整場景,直到它們排成一條線。

改進的定位精度

CoreLocation每1-15秒更新一次位置,精度從150米到4米不等。有時候,你會收到更精確的讀數,如4米或8米。同時,AR使用運動和相機數據來創建本地世界的地圖。

用戶可能會收到精度為4米的位置,然後他們向北走10米,並接收到另一個位置,讀數精確到65米。 這個精度為65米的讀數是CoreLocation可以提供的最好的精度,但是當獲取到4米精度的讀數時,程序知道用戶在AR場景中的位置,以及接著朝北走了10米,我們可以通過轉換這個數據來提供一個新的精度為4米的坐標。這樣就精確到了大概100米。

問題

我曾經提到,目前這些尚處於實驗階段。當用戶經過某個場景的時候,ARKit偶爾會發生錯亂,並給出錯誤地位置數據。 這個問題似乎也影響到了「歐拉角度」或者有關設備的方向信息。所以,在走過一小段距離之後,它可能會認為你目前正向著另外一個方向行走。

雖然蘋果今後會改進ARKit,但我認為,為了避免出現這些問題,我們需要自己進行改進,例如識別出何時會出現問題並進行糾正,以及通過將位置數據與我們假定的位置進行比較,以確定是否已經超過了某個值。

定位演算法改進

我們需要進一步優化定位演算法。

例如,有一種技術是查看最近的位置數據,轉換用戶行程中的每一個點,然後使用數據點之間的重疊來更精確地確定用戶可能的位置。

鳴謝

作者@AndrewProjDent,以及相關社區。

在MIT許可證的條款下開源。

文章原標題《ARKit-CoreLocation》,作者:Andrew Hart,譯者:夏天,審校:主題曲。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 雲棲社區 的精彩文章:

95後大學生用機器學習PAI大戰老年痴呆
教你打造雲上深度學習實驗室
使用MaxCompute進行網貸業務風控預測分析
五年內醫療行業AI應用前瞻

TAG:雲棲社區 |

您可能感興趣

OPPO AR步行導航體驗:這樣的實景導航更精準
OPPO AR步行導航 實景實時預覽更精準
拯救路痴,OPPO聯合高德地圖推出AR實景導航
谷歌地圖向少量用戶推AR實景導航
黑科技再現,OPPO R17 Pro擁有 AR實景導航,讓你出行輕鬆自在!
Google地圖推出AR實景導航,全面推出就要來了
Google 地圖推出了 AR 實景導航,它用起來怎麼樣?
AliOS全球範圍內率先實現AR導航功能!升級體驗更具科幻大片感!
斯坦福AI實驗室CVPR成果:機器人導航平台Gibson Env,1:1模擬真實環境
中國北斗與美國GPS實現信號兼容,我們的導航系統會變得更准嗎?
一行代碼實現底部導航欄TabLayout
拯救路痴!Google AR 實景導航全面覆蓋 Android 和 iOS 設備
拯救路痴!Google AR 實景導航全面覆蓋 Android和iOS 設備
MIT研發新導航系統 搭配感測器或實現遠途出行
科幻即現實 AliOS開創汽車AR導航駕駛系統
深空導航:NASA測試緊急導航工具
NASA深空導航儀正式啟動
Oppo又發新款手機了,與高德合作「真」VR實景導航顛覆傳統
路痴狂怎麼治?出門帶上OPPO R17,AR實景導航為您帶路
「路盲症」成為歷史 「AR-Driving」實景車道級導航開啟駕駛新時代