ARKIT/ARCore对比分析(二)
ARKit(2)? ARCore 和 ARKit平臺特點比對
曾與一家最大的 IMU OEM 交談過,為了節省成本,他們的智能機IMU 在工廠中只是在單一溫度下進行標定。這意味著 IMU 硬件在某一指定的溫度下,誤差被調節到最低。但當手機發熱的時候,IMU 就不會那樣準確。雖然這是十分普遍的現象,但是對于 VIO 來說,一旦設備發熱,標定結果不可信,算法結果會產生漂移。當然,OEM 也可以在客戶要求下,在多種溫度下標定傳感器。?
這一點,谷歌比不上蘋果。雖然這只是一個很小的誤差,但是意味著谷歌 ARCore VIO 代碼會隨著設備不同而發生變化。蘋果的軟硬件垂直集成幫助它更快地應對這類挑戰,而 Android 需要對整個生態系統進行過濾。
光照問題
ARCore 和 ARKit 提供了場景中的光照實時估計,所以開發者們可以迅速調整模擬光照,以便匹配真實世界(還可能同時觸發動畫人物)。
ARKit 和 ARCore 可以對場景光進行簡單的估計,不管是真實世界環境光還是尖銳的聚光燈。ARKit 為開發者提供了強度和色溫選項,而ARCore 提供了單像素強度值(Android Studio API)或 shader(Unity API)。這兩種方法在早期 Demo 中有相似的結果,而 Google 的 Demo看起來更好一些,可能是因為開發者們對 Tango 用得更熟。?
不過,Google 在今年的 I/O 大會中已經表示,對虛擬陰影在真實世界光照下調整的功能即將和開發者們見面。這是一個很大的進步,會讓 AR 更加真實。
構建地圖
Mapping,構建地圖,是 ARCore 相對于 ARKit 的顯著優勢領域之一。
它意味著可以將 3D 真實世界的環境信息存在內存中視覺信息中的三維重建,供追蹤器(VIO系統中的重要部分)進行設備的定位。設備就可以知道自己在環境中所處的位置。為了幫助大家理解,舉個例子,蒙著眼睛把你放到一個陌生城市的市中心,只給你一張地圖,你可以通過地圖了解到自己的位置。
最簡單形式的 SLAM 建圖是一些離散的 3D 點云數據,它們代表了光學特征點的位置(例如桌角)。在這些數據中還隱藏著一些元數據,通過特征點在多幀中相同位置出現的次數,表明點的可信度(例如走來走去的狗,可信度就很低,因為每張圖拍到的結果都不同)。
一些圖包括了“關鍵幀”,也就是每隔幾秒存儲的視頻或照片的單幀,可以幫助追蹤器更好地將真實世界與圖進行匹配。另外,一些圖使用密集點云,更可信但是需要 GPU 和更多內存。ARCore 和 ARKit 都使用了離散點云圖(可能沒有關鍵幀)。
離散點云圖就像右上圖所示。左上圖顯示了點云和真實世界是如何匹配的(顏色代表點的可信度)。左下圖是原始圖像,右下圖是強度(灰度)圖,可以被用到多種 SLAM 系統中(但并沒有用到 ARKit 或 ARCore 中)。
那么這是如何工作的呢?當你加載 ARCore/ARKit App 時,跟蹤器會檢測之前是否有加載好的圖,如果沒有就會通過立體計算,自定義一個新的地圖,也就是說我們擁有了相機視角下的一個小范圍3D圖。當你開始四處運動,相機捕捉到新的一幅圖,更多的 3D 點云加入到地圖中,地圖越變越大。
如果地圖變得太大而無法控制,追蹤則會變得糟糕,以至于追蹤出現漂移。不過,這也不再是個大問題,控制地圖是 SLAM 研究正在做的一部分(還有深度學習和 CNN AI)。?
ARKit 在建圖的時候使用了“sliding window”,也就是說它只會在圖中保存最近的時間和距離數據,舊的數據會被自動忽視,而 ARCore 會管理更大的地圖,也就是說系統會更加穩定。所以使用ARCore,即使追蹤跟丟了也會恢復得很好。
ARCore 和 ARKit 都采用了一種被稱為“錨點”(Anchors)的概念,讓我們感覺地圖似乎覆蓋了更大的物理面積。我第一次看到這個概念是在 HoloLens 上。正常情況下,系統會完全控制地圖,而用戶或應用開發者并不知道這點。錨點使開發者告訴系統“記住周圍的地圖,不要將其丟棄”。
我覺得錨點的某一合理物理范圍大概有 1 平方米,這其中有我自己猜測的部分,也有可能會根據系統看到的光學特征發生多種變化。但當用戶重新范圍物理位置時,該范圍足以讓系統重新實現定位。
不管何時,內容被放置在一個物理位置時,開發者通常會丟下一個錨點。如果沒有錨點,用戶來回走動時,物理位置周圍構建的地圖(內容所呈現的地方)將會丟失,內容也將丟失。而加上錨點后,內容將永遠固定在那里,也不排除因為積累的漂移,系統需要矯正重新定位時,糟糕的 UX (用戶體驗)會對內容產生影響。
構建地圖的目的是以兩種方式來幫助追蹤:
第一,當我前后移動手機,地圖從一開始移動便建立,手機往回移動時,新的特征點可被實時檢測。
在位置計算中,通過對當前和先前場景的特征點收集,這使追蹤也更加穩定。
第二,構建地圖可幫助定位追蹤或是恢復追蹤。有時你會遮擋攝像頭,手機掉落,或是移動的太快,或是不穩定因素發生,這時攝像頭看到的場景與最新更新的地圖無法匹配。這就是我們所說的“追蹤丟失”這種情況下,系統重定位的兩種方法:
F1:重置所有的標定系統,然后重啟!這純粹由測距系統完成(沒有地圖)。你會看到所有的內容“跳到”新的位置,然后固定在那里。用戶體驗并不好。
F2:系統可以使用它檢測到的 3D 特征,然后搜索整個地圖,嘗試匹配,隨著正確的虛擬位置進行更新。如果你當什么都沒發生,一直使用應用,你會發現虛擬內容展示時,追蹤不停丟失,但恢復后,追蹤又正常。
這里又有兩個問題。
首先,隨著地圖構建的越大,搜索過程會更耗時,過程也會更密集,也就是說要一遍又一遍地開啟搜索;
其次,手機當前的位置永遠不會精準地與手機過去那一時刻的位置相匹配,所以這也加大了地圖搜索的難度,并且還要花費時間和計算去重新定位。基本上,即便有了構建地圖,如果你移動的離地圖太遠,應用就沒法定位了,系統需要重置、重啟。
圖片上的每條線是 SLAM 地圖中的街道。在世界上任何地方,使用移動設備實現 AR 功能,都會遇到 SLAM 地圖構建問題。記住,現在盡管有機器可讀的地圖和數據結構,但它們不是那種人們可使用的 3D 街景地圖(這也是必須的)。
注意,對移動 AR 來說,我提到的“大”地圖大致意思為,可以覆蓋較大房間,或小型公寓物理面積的地圖。
同時,也意味著,對于室外 AR,我們不得不思考全新構建地圖的方式。
針對地圖強大的重新定位是非常非常難的問題,而且在消費者體驗層面還未解決。如果任何人宣稱他們能提供多人 AR 玩法,或是固定性強的 AR 內容,那么不管是由一號玩家創建的地圖,還是云端下載的地圖,他們的 UX 會受到其他手機(如二號玩家手機)重新定位性能的限制。
你會發現,二號玩家不得不站在距離二號玩家很近的地方,雙方幾乎以同樣的姿勢舉著手機。但是,二號玩家,或其他玩家只想坐在與你相反方向的沙發上,打開手機,立馬看到你眼前看到的事物。或是說,站在距離幾米的空間內,看到 AR 內容“固定”在那里。
(這里有一段 Tango實驗的視頻效果:https://www.youtube.com/watch?v=YulYq5P3heo)
現在已經有應用可以變通地實現多人游戲,如使用標記點,或為二號玩家編寫距離應用開始位置的代碼。技術上看,這些是可以運行的,但是你要一直為用戶解釋如何操作,用戶體驗可能一團糟。所以,并沒有什么“簡單運行”的魔法。
當然,如果任何人有不同的解決方案,我很想請教一下。不過,就我所知,多玩家實現穩定性極強的重新定位現在還無法實現,也沒有發現公布的研究成果。這就像 VIO 的問題一樣,只有少部分人可能會解決。我只知道一個還未公布的系統能夠支持,2018 年初才會推出。
ARCore 的優勢
誰都未能想到,ARCore在ARKit發布后,擁有如此迅速的反應時間。相對于ARKit來說,ARCore其實有不少優勢:
功能方面:有一些?ARKit?并未提到的功能優勢
開發者經驗:ARCore 在 Tango 和 Daydream 上積累幾年豐富的開發者經驗,相對于 ARKit 僅僅幾個月來說,是更加成熟的。
OEM:有足夠的 OEM 廠商提供強大的支持
宣傳:一段比較走心的宣傳短片
OEM 廠商依舊謹慎
我感覺 ?ARCore 的推出相當匆忙,例如沒有 ARCore 的 Logo。我在之前的文章中談過 OEM 廠商對于 Tango 手機的謹慎。ARCore 消除了攝像頭堆棧硬件商品化,以及 Tango 面臨的材料成本的問題。看起來,Google 已經考慮到一些戰略控制,但是講真,我感覺一切太快了,這些事情還沒真正地實施。
Google 堅持 ARCore 是谷歌移動服務(GMS)的一部分,如果 AR 真的成為“下一個平臺”,這是重新劃分生態系統勢力的一個機會。ARCore 不只是像 GUI 那種功能。所有的初創公司都要考慮 SLAM 的問題。而 AR 是否會脫離 GMS,這可不好說。
OEM 廠商尋找 ARCore 替代品的最大原因可能是,他們巨大的市場(如中國)不歡迎 GMS。
GMS 最大的阻力在于:無法進入中國市場,那里卻是 OEM 廠商們最大的市場。廠商們更喜歡一個可以在全球運行的 AR 軟件解決方案。
開發者現在可以用 ARCore 開發了嗎?
如果你喜歡Android,你有一個 Samsung S8 或 Pixel,那么別猶豫,直接去開發吧。如果你喜歡 iPhone,也不要擔心是否需要換成 ARCore。
開發者應當關注的是,打造一個人們關心的 AR 應用要面臨巨大的挑戰。與學習如何在 ARKit 或 ARCore 上創建內容相比,創建什么樣的內容要花費更大的努力。
ARKit / ARCore SDK目前還是1.0版,功能還非常基礎(VIO、平面檢測、基礎照明),將在未來幾年內獲得更多的功能(3D場景理解、遮擋、多人聯網,內容固定性等)。對開發商和消費者來說,這將是一個不斷的學習過程。所以現在只需要堅持向著自己認為對的路子走就好。
不要對使用哪個平臺想太多,多想想能創建什么樣的 AR 內容
ARCore 比 ARKit 更好嗎?
作為技術解決方案,它們的能力非常接近。ARKit 在集成和跟蹤方面具有一定的技術優勢(原因技術是基于特征點的); ARCore 在建圖和重定位方面具有一些優勢(給予vslam的)。可是這兩個優點大多是專業的計算機視覺工程師才能看到的。
蘋果有一個清晰的市場宣傳優勢,擁有龐大的設備基礎,可以立即升級到包含 ARKit 的最新 iOS 系統。蘋果的用戶一般更愿意花錢,所以從中期來看,AR 應用應該可以在 ARKit 上更好地獲利。
Android 的優勢在于規模化,但 Android 生態系統需要至少 12 個月才能將所有的部分整合在一起,并在大多數新設備中獲得硬件支持的 ARCore。
ARCore 由此前 Tango 研發的基礎,其中大部分已經進行了用戶/市場測試。現在基礎已經比較到位,看看這些系統在未來12-24個月內如何快速發展,這會很有趣。
總結
以上是生活随笔為你收集整理的ARKIT/ARCore对比分析(二)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 假如男司机上去只是打了这个女的几巴掌,然
- 下一篇: 做四维彩超多少钱啊?