大神解讀:谷歌 ARCore 就是低配版 Tango,它比蘋果 ARKit 好在哪?
沉浸感按:本文作者為 Matt Miesnieks,目前擔任 6D.ai 的 CEO,Super Ventures 合伙人。此前,他發布過多篇文章探討了 ARKit 的相關問題。谷歌推出 ARCore 後,引起業界熱議,Matt 的最新博文中對 ARCore 做了詳細的分析。本文轉自亮風台,沉浸感對文章進行了校對和補充。
ARCore 只是低配版的 Tango 么?
一位開發者戲稱:「我覺得 ARCore SDK,就像是他們隨便地把 Tango SDK 改了個名字,注釋掉深度相機那塊代碼,改了一種編譯標誌。」應該不止這些,但也不會太多,比如支持 ARCore 的新的 Web 瀏覽器對開發者來說很友好,但它們屬於相互獨立的核心 SDK。
大概很多人都想知道為什麼12個月之前,一切都已準備好的時候,Google 沒有發布 Tango VIO (無需深度相機),但現在才發布出來。
不論如何,這是一個好消息,意味著 ARCore 是非常成熟的,而且經過了充分的軟體測試(儘管蘋果收購了 Metaio 和 Flyby 兩家公司有技術儲備,但 ARCore 還是比 ARKit 至少多兩年的實踐測試);另外,谷歌已經為 Tango 安排好了全面的功能藍圖,其中不是所有的功能都要依賴 3D 深度相機,現在 ARCore 讓這些功能可以全面發揮出來了。
拋開名字不談,如果在能運行 ARCore 的普通智能手機上添加深度相機,你就等同於擁有了 Tango 手機。現在谷歌有一個更簡單的路徑,可以通過 OEM 旗艦機,推廣 SDK,ARCore 就會隨著手機而被推廣開來。
沒人會因為一款手機帶有 AR 功能而放棄使用優質的安卓手機,就像是沒人會因為 Windows 系統手機帶有 AR 功能,而放棄使用任何安卓手機。所以,微軟直接進軍頭戴設備。現在人們一定會買手機,而 ARCore 也終於實現了免費。
一開始,Tango 聚焦於對 3D 空間手機移動的追蹤。最開始 Tango 的應用也多在於室內映射。後來,VR/AR 才變成了最受歡迎的使用場景。
說到命名,這很有趣。Tango 總是被描述為「一款知道自己定位的手機」。而人們從不會被這樣的描述對 Tango 留下深刻印象。對我而言,當某系東西與 Google 地圖密切聯繫時,手機才會有定位(但不知道 Google 是否這樣看)。有了新名字 ARCore,一切便與 AR 有關。
你所討論的標定又如何呢?
這就是有趣之所在了……我之前有說過蘋果 ARKit 能夠如此穩定的三種標定方法:
相機的光學幾何校正(簡單)
相機的光度標定(難)
IMU誤差消除(非常難)
另外,感測器的時鐘同步是更重要的。
標定不是非黑即白的問題,需要統計、並做更多的迭代以減少誤差,才能讓用例更加穩定。系統標定得越好,位置估計誤差就會越不容易出現。
正如蘋果的 ARKit,Google 也做了以下幾件事:
首先,Google 對所支持的設備選擇十分謹慎。起初,只有Samsung S8和 Pixel。谷歌工程師已經在這些平台進行過感測器標定的優化,以適配於 DayDream 的 Inside-Out 追蹤(從三自由度向六自由度)。
不久前,谷歌工程師在韓國對 Samsung 感測器進行標定和調諧,希望下一代手機可以支持 Daydream。所以我們才有了標定好且符合時鐘同步的相機與 IMU 的兩款設備。
Google 在今年早些時候的 I/O 大會上宣布 Inside-Out 6自由度跟蹤支持 Daydream
今年,Google為融合 Tango 和 Daydream SDK 做了大量工作,據說11 月份這項工作就會結束,所以 8 月底,很多底層工作應該會完成,意味著 Tango/ARCore VIO 系統可以利用 Daydream 感測器融合的工作成果。
最後,標定的真正好處可以從系統表現看出來。ARKit 和 ARCore 在用戶發現誤差之前,都可以追蹤得非常好。在 AR 應用中,目前還是以內容直觀可見的形式為主,不像室內導航那樣,存在長時間長距離的端對端測試。
所以,從 AR 應用角度來看,標定帶來的差異幾乎是無法被檢測的。
但是開發者們正在擴大 SDK 應用的界限,谷歌預計會在工廠中做更緊密的標定,並上市一批新一代的設備。
震動器被用於在工廠中標定加速度計,AR 軟體堆棧更無須擔心過多誤差的問題了
。
我曾與一家最大的 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,即 SLAM 中的『M』,也叫構建地圖,
是 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 (用戶體驗)會對內容產生影響。
構建地圖的目的是以兩種方式來幫助追蹤:
第一,當我前後移動手機,地圖從一開始移動便建立,手機往回移動時,新的特徵點可被實時檢測。
在位置計算中,通過對當前和先前場景的特徵點收集,這使追蹤也更加穩定。
第二,構建地圖可幫助定位追蹤或是恢復追蹤。有時你會遮擋攝像頭,手機掉落,或是移動的太快,或是不穩定因素髮生,這時攝像頭看到的場景與最新更新的地圖無法匹配。
這就是我們所說的「追蹤丟失」,過去幾年,那些率先嘗試的開發者們每天都要吐槽 1000 次這個問題。這種情況下,系統可以做兩件事:
重置所有的標定系統,然後重啟!這純粹由測距系統完成(沒有地圖)。你會看到所有的內容「跳到」新的位置,然後固定在那裡。用戶體驗並不好。
還有一件事是,系統可以使用它檢測到的 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 廠商提供強大的支持
宣傳:一段比較走心的宣傳短片
ARCore宣傳視頻
「ARCore,為什麼你出現得這麼快!」
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 在建圖和重定位方面具有一些優勢。
可是這兩個優點大多是專業的計算機視覺工程師才能看到的。想用這張圖解釋一個設計師的價值
蘋果有一個清晰的市場宣傳優勢,擁有龐大的設備基礎,可以立即升級到包含 ARKit 的最新 iOS 系統。蘋果的用戶一般更願意花錢,所以從中期來看,AR 應用應該可以在 ARKit 上更好地獲利。
Android 的優勢在於規模化,但 Android 生態系統需要至少 12 個月才能將所有的部分整合在一起,並在大多數新設備中獲得硬體支持的 ARCore。(時間可能會更長,通常 OEM 廠商會在 10 月份決定 2018 年的產品。)
ARCore 由此前 Tango 研發的基礎,其中大部分已經進行了用戶/市場測試。現在基礎已經比較到位,看看這些系統在未來12-24個月內如何快速發展,這會很有趣。
我認為,制約 AR 應用市場普及速度的將會是開發者打造的內容。技術已經足夠去創建消費者產品了。
ARKit 和 ARCore 哪個更好?主要還是看開發者的個人偏好和目標。這兩個系統都有自己的優點和缺點,但重要的是兩者都能夠為消費者提供足夠的消費體驗,開發者請腦洞大開,盡情享受這個過程吧!
相關閱讀
大神揭秘:蘋果 ARKit憑什麼碾壓對手?
大神問答:關於 ARKit 的 16 大問題解讀
大神解讀:ARKit 很厲害,但蘋果做 AR 眼鏡還需翻過這 8 座大山
※全景照片不怕歪!Facebook 用神經網路矯正扭曲的地平線
※HTC 考慮賣掉 Vive,VR真的這麼不景氣?
※大家都看好的VR+教育又迎來新玩家,大微VR發布K12VR教育產品
※專利文件曝光,等待三年的Magic Leap的AR眼鏡原來長這樣?
※照片/視頻/直播都弱爆了!Owlii要以實時全息傳送改變社交
TAG:沉浸感 |