AR 導航的幾種實現思路

蘋果API搬運工發表於2019-12-24

AR 導航的幾種實現思路

說明

當 AR 技術剛出現的時候,很多人都認為導航是重要應用方向。但是,ARKit 已經發展到 ARKit 3 了,完善的AR導航方案也沒有出現。 因此,我們只能用一些技巧來實現一些簡單的 AR 導航。

固定點位導航

固定點位導航,就是在 AR 中放置幾個固定的點,比如點 A,B。這種導航只能從 A 點到 B 點,或者從任意位置沿直線先到 A 點,然後再到 B 點。

當然了,點位的確定一般需要藉助圖片錨點/物體識別錨點,或者用世界地圖重定位先確定世界座標原點,再確定點 A,B 的位置。

缺點

這樣的缺點可想而知,非常不靈活。點位需要提前確定,起點位置也受限。比如我起點已經在 AB 之間了,仍然會引導我先走到 A 點,再走到 B 點。除非新增大量判斷程式碼,或者使用圖相關的演算法。

優點

寫得快,無需聯網,無需額外資訊,簡單可靠。

尋路演算法導航

在 iOS 中使用無向圖等演算法,其實不必自己從頭寫。GameplayKit框架中就自帶了幾種尋路演算法,包含有向圖/無向圖/A* 等演算法。

蘋果官方文件 Pathfinding

比如,用 GKGridGraphGKGridGraphNode,其實就可以實現網格尋路,效果類似於A* 演算法

AR 導航的幾種實現思路
GKGraphGKGraphNode 就可以實現有向圖/無向圖的尋路,效果類似於迪傑斯特拉(Dijkstra)演算法
AR 導航的幾種實現思路

還有更好用的 GKObstacleGraphGKGraphNode2D,可以實現在有障礙物的連續空間導航,可繞過障礙物,找到最短路徑。

AR 導航的幾種實現思路

缺點

缺點也有,就是需要提前準備好區域地圖,哪些區域是連通的,哪些地方是不可進入的障礙物區域。

優點

自由指定起點終點,自動避障,無需聯網。

結合地圖導航

而現有的地圖 SDK 中的導航演算法已經非常完善,不僅能任意指定起點終點,還會自動避開障礙物,找到最短/最快路徑。我們可以將 AR 與地圖類 SDK 結合,實現導航方案。

比如,仿寫百度地圖的3自由度 AR 導航,利用百度地圖 SDK 與 ARKit,實現了簡單的 AR 導航功能。 如何仿寫一個簡易版的3自由度 AR 導航

AR 導航的幾種實現思路

又比如,這個開源專案,利用 ARKit 和 CoreLocation 框架,實現了 6 自由度的 AR 導航。值得借鑑。 ARKit-CoreLocation

AR 導航的幾種實現思路

缺點

需要 GPS 和定位許可權,在室內使用受限。需聯網以使用地圖 SDK 的部分功能。GPS 近距離誤差大。

優點

地圖資訊內建,尋路演算法先進,支援多種策略,另有偏航和重新算路,語音播報等功能。

相關文章