0
本文作者: 田苗 | 2017-09-04 17:18 |
雷鋒網(wǎng)按:本文作者為 Matt Miesnieks,目前擔任 6D.ai 的 CEO,Super Ventures 合伙人。此前,他發(fā)布過多篇文章探討了 ARKit 的相關問題。谷歌推出 ARCore 后,引起業(yè)界熱議,Matt 的最新博文中對 ARCore 做了詳細的分析。本文轉(zhuǎn)自亮風臺,雷鋒網(wǎng)對文章進行了校對和補充。
一位開發(fā)者戲稱:“我覺得 ARCore SDK,就像是他們隨便地把 Tango SDK 改了個名字,注釋掉深度相機那塊代碼,改了一種編譯標志?!睉摬恢惯@些,但也不會太多,比如支持 ARCore 的新的 Web 瀏覽器對開發(fā)者來說很友好,但它們屬于相互獨立的核心 SDK。
大概很多人都想知道為什么12個月之前,一切都已準備好的時候,Google 沒有發(fā)布 Tango VIO (無需深度相機),但現(xiàn)在才發(fā)布出來。
不論如何,這是一個好消息,意味著 ARCore 是非常成熟的,而且經(jīng)過了充分的軟件測試(盡管蘋果收購了 Metaio 和 Flyby 兩家公司有技術儲備,但 ARCore 還是比 ARKit 至少多兩年的實踐測試);另外,谷歌已經(jīng)為 Tango 安排好了全面的功能藍圖,其中不是所有的功能都要依賴 3D 深度相機,現(xiàn)在 ARCore 讓這些功能可以全面發(fā)揮出來了。
拋開名字不談,如果在能運行 ARCore 的普通智能手機上添加深度相機,你就等同于擁有了 Tango 手機。現(xiàn)在谷歌有一個更簡單的路徑,可以通過 OEM 旗艦機,推廣 SDK,ARCore 就會隨著手機而被推廣開來。
沒人會因為一款手機帶有 AR 功能而放棄使用優(yōu)質(zhì)的安卓手機,就像是沒人會因為 Windows 系統(tǒng)手機帶有 AR 功能,而放棄使用任何安卓手機。所以,微軟直接進軍頭戴設備?,F(xiàn)在人們一定會買手機,而 ARCore 也終于實現(xiàn)了免費。
一開始,Tango 聚焦于對 3D 空間手機移動的追蹤。最開始 Tango 的應用也多在于室內(nèi)映射。后來,VR/AR 才變成了最受歡迎的使用場景。
說到命名,這很有趣。Tango 總是被描述為“一款知道自己定位的手機”。而人們從不會被這樣的描述對 Tango 留下深刻印象。對我而言,當某系東西與 Google 地圖密切聯(lián)系時,手機才會有定位(但不知道 Google 是否這樣看)。有了新名字 ARCore,一切便與 AR 有關。
這就是有趣之所在了……我之前有說過蘋果 ARKit 能夠如此穩(wěn)定的三種標定方法:
相機的光學幾何校正(簡單)
相機的光度標定(難)
IMU誤差消除(非常難)
另外,傳感器的時鐘同步是更重要的。
標定不是非黑即白的問題,需要統(tǒng)計、并做更多的迭代以減少誤差,才能讓用例更加穩(wěn)定。系統(tǒng)標定得越好,位置估計誤差就會越不容易出現(xiàn)。
正如蘋果的 ARKit,Google 也做了以下幾件事:
首先,Google 對所支持的設備選擇十分謹慎。起初,只有Samsung S8和 Pixel。谷歌工程師已經(jīng)在這些平臺進行過傳感器標定的優(yōu)化,以適配于 DayDream 的 Inside-Out 追蹤(從三自由度向六自由度)。
不久前,谷歌工程師在韓國對 Samsung 傳感器進行標定和調(diào)諧,希望下一代手機可以支持 Daydream。所以我們才有了標定好且符合時鐘同步的相機與 IMU 的兩款設備。
Google 在今年早些時候的 I/O 大會上宣布 Inside-Out 6自由度跟蹤支持 Daydream
今年,Google為融合 Tango 和 Daydream SDK 做了大量工作,據(jù)說11 月份這項工作就會結(jié)束,所以 8 月底,很多底層工作應該會完成,意味著 Tango/ARCore VIO 系統(tǒng)可以利用 Daydream 傳感器融合的工作成果。
最后,標定的真正好處可以從系統(tǒng)表現(xiàn)看出來。ARKit 和 ARCore 在用戶發(fā)現(xiàn)誤差之前,都可以追蹤得非常好。在 AR 應用中,目前還是以內(nèi)容直觀可見的形式為主,不像室內(nèi)導航那樣,存在長時間長距離的端對端測試。
所以,從 AR 應用角度來看,標定帶來的差異幾乎是無法被檢測的。但是開發(fā)者們正在擴大 SDK 應用的界限,谷歌預計會在工廠中做更緊密的標定,并上市一批新一代的設備。
震動器被用于在工廠中標定加速度計,AR 軟件堆棧更無須擔心過多誤差的問題了。
我曾與一家最大的 IMU OEM 交談過,為了節(jié)省成本,他們的智能機IMU 在工廠中只是在單一溫度下進行標定。這意味著 IMU 硬件在某一指定的溫度下,誤差被調(diào)節(jié)到最低。但當手機發(fā)熱的時候,IMU 就不會那樣準確。雖然這是十分普遍的現(xiàn)象,但是對于 VIO 來說,一旦設備發(fā)熱,標定結(jié)果不可信,算法結(jié)果會產(chǎn)生漂移。當然,OEM 也可以在客戶要求下,在多種溫度下標定傳感器。
這一點,谷歌比不上蘋果。雖然這只是一個很小的誤差,但是意味著谷歌 ARCore VIO 代碼會隨著設備不同而發(fā)生變化。蘋果的軟硬件垂直集成幫助它更快地應對這類挑戰(zhàn),而 Android 需要對整個生態(tài)系統(tǒng)進行過濾。
ARCore 和 ARKit 提供了場景中的光照實時估計,所以開發(fā)者們可以迅速調(diào)整模擬光照,以便匹配真實世界(還可能同時觸發(fā)動畫人物)。
ARKit 和 ARCore 可以對場景光進行簡單的估計,不管是真實世界環(huán)境光還是尖銳的聚光燈。ARKit 為開發(fā)者提供了強度和色溫選項,而ARCore 提供了單像素強度值(Android Studio API)或 shader(Unity API)。這兩種方法在早期 Demo 中有相似的結(jié)果,而 Google 的 Demo看起來更好一些,可能是因為開發(fā)者們對 Tango 用得更熟。
不過,Google 在今年的 I/O 大會中已經(jīng)表示,對虛擬陰影在真實世界光照下調(diào)整的功能即將和開發(fā)者們見面。這是一個很大的進步,會讓 AR 更加真實。
Mapping,即 SLAM 中的‘M’,也叫構(gòu)建地圖,是 ARCore 相對于 ARKit 的顯著優(yōu)勢領域之一。
它意味著可以將 3D 真實世界的環(huán)境信息存在內(nèi)存中,供追蹤器(VIO系統(tǒng)中的重要部分)進行設備的定位。設備就可以知道自己在環(huán)境中所處的位置。為了幫助大家理解,舉個例子,蒙著眼睛把你放到一個陌生城市的市中心,只給你一張地圖,你可以通過地圖了解到自己的位置。
最簡單形式的 SLAM 建圖是一些離散的 3D 點云數(shù)據(jù),它們代表了光學特征點的位置(例如桌角)。在這些數(shù)據(jù)中還隱藏著一些元數(shù)據(jù),通過特征點在多幀中相同位置出現(xiàn)的次數(shù),表明點的可信度(例如走來走去的狗,可信度就很低,因為每張圖拍到的結(jié)果都不同)。
一些圖包括了“關鍵幀”,也就是每隔幾秒存儲的視頻或照片的單幀,可以幫助追蹤器更好地將真實世界與圖進行匹配。另外,一些圖使用密集點云,更可信但是需要 GPU 和更多內(nèi)存。ARCore 和 ARKit 都使用了離散點云圖(可能沒有關鍵幀)。
離散點云圖就像右上圖所示。左上圖顯示了點云和真實世界是如何匹配的(顏色代表點的可信度)。左下圖是原始圖像,右下圖是強度圖,可以被用到多種 SLAM 系統(tǒng)中(但并沒有用到 ARKit 或 ARCore 中)。
那么這是如何工作的呢?當你加載 ARCore/ARKit App 時,跟蹤器會檢測之前是否有加載好的圖,如果沒有就會通過立體計算,自定義一個新的地圖,也就是說我們擁有了相機視角下的一個小范圍3D圖。當你開始四處運動,相機捕捉到新的一幅圖,更多的 3D 點云加入到地圖中,地圖越變越大。
如果地圖變得太大而無法控制,追蹤則會變得糟糕,以至于追蹤出現(xiàn)漂移。不過,這也不再是個大問題,控制地圖是 SLAM 研究正在做的一部分(還有深度學習和 CNN AI)。
ARKit 在建圖的時候使用了“sliding window”,也就是說它只會在圖中保存最近的時間和距離數(shù)據(jù),舊的數(shù)據(jù)會被自動忽視,而 ARCore 會管理更大的地圖,也就是說系統(tǒng)會更加穩(wěn)定。
所以使用ARCore,即使追蹤跟丟了也會恢復得很好。
ARCore 和 ARKit 都采用了一種被稱為“錨點”(Anchors)的概念,讓我們感覺地圖似乎覆蓋了更大的物理面積。我第一次看到這個概念是在 HoloLens 上。正常情況下,系統(tǒng)會完全控制地圖,而用戶或應用開發(fā)者并不知道這點。錨點使開發(fā)者告訴系統(tǒng)“記住周圍的地圖,不要將其丟棄”。
我覺得錨點的物理范圍大概有 1 平方米,這其中有我自己猜測的部分,也有可能會根據(jù)系統(tǒng)看到的光學特征發(fā)生多種變化。但當用戶重新范圍物理位置時,該范圍足以讓系統(tǒng)重新實現(xiàn)定位。
不管何時,內(nèi)容被放置在一個物理位置時,開發(fā)者通常會丟下一個錨點。如果沒有錨點,用戶來回走動時,物理位置周圍構(gòu)建的地圖(內(nèi)容所呈現(xiàn)的地方)將會丟失,內(nèi)容也將丟失。而加上錨點后,內(nèi)容將永遠固定在那里,也不排除因為積累的漂移,系統(tǒng)需要矯正重新定位時,糟糕的 UX (用戶體驗)會對內(nèi)容產(chǎn)生影響。
構(gòu)建地圖的目的是以兩種方式來幫助追蹤:
第一,當我前后移動手機,地圖從一開始移動便建立,手機往回移動時,新的特征點可被實時檢測。
在位置計算中,通過對當前和先前場景的特征點收集,這使追蹤也更加穩(wěn)定。
第二,構(gòu)建地圖可幫助定位追蹤或是恢復追蹤。有時你會遮擋攝像頭,手機掉落,或是移動的太快,或是不穩(wěn)定因素發(fā)生,這時攝像頭看到的場景與最新更新的地圖無法匹配。
這就是我們所說的“追蹤丟失”,過去幾年,那些率先嘗試的開發(fā)者們每天都要吐槽 1000 次這個問題。這種情況下,系統(tǒng)可以做兩件事:
重置所有的標定系統(tǒng),然后重啟!這純粹由測距系統(tǒng)完成(沒有地圖)。你會看到所有的內(nèi)容“跳到”新的位置,然后固定在那里。用戶體驗并不好。
還有一件事是,系統(tǒng)可以使用它檢測到的 3D 特征,然后搜索整個地圖,嘗試匹配,隨著正確的虛擬位置進行更新。如果你當什么都沒發(fā)生,一直使用應用,你會發(fā)現(xiàn)虛擬內(nèi)容展示時,追蹤不停丟失,但恢復后,追蹤又正常。
這里又有兩個問題。
首先,隨著地圖構(gòu)建的越大,搜索過程會更耗時,過程也會更 密集,也就是說要一遍又一遍地開啟搜索;
其次,手機當前的位置永遠不會精準地與手機過去那一時刻的位置相匹配,所以這也加大了地圖搜索的難度,并且還要花費時間和計算去重新定位。基本上,即便有了構(gòu)建地圖,如果你移動的離地圖太遠,應用就沒法定位了,系統(tǒng)需要重置、重啟。
圖片上的每條線是 SLAM 地圖中的街道。在世界上任何地方,使用移動設備實現(xiàn) AR 功能,都會遇到 SLAM 地圖構(gòu)建問題。記住,現(xiàn)在盡管有機器可讀的地圖和數(shù)據(jù)結(jié)構(gòu),但它們不是那種人們可使用的 3D 街景地圖(這也是必須的)。
注意,對移動 AR 來說,我提到的“大”地圖大致意思為,可以覆蓋較大房間,或小型公寓物理面積的地圖。
同時,也意味著,對于室外 AR,我們不得不思考全新構(gòu)建地圖的方式。
針對地圖強大的重新定位是非常非常難的問題,而且在消費者體驗層面還未解決。如果任何人宣稱他們能提供多人 AR 玩法,或是固定性強的 AR 內(nèi)容,那么不管是由一號玩家創(chuàng)建的地圖,還是云端下載的地圖,他們的 UX 會受到其他手機(如二號玩家手機)重新定位性能的限制。
你會發(fā)現(xiàn),二號玩家不得不站在距離二號玩家很近的地方,雙方幾乎以同樣的姿勢舉著手機。但是,二號玩家,或其他玩家只想坐在與你相反方向的沙發(fā)上,打開手機,立馬看到你眼前看到的事物?;蚴钦f,站在距離幾米的空間內(nèi),看到 AR 內(nèi)容“固定”在那里。
(這里有一段 Tango實驗的視頻效果:https://www.youtube.com/watch?v=YulYq5P3heo)
現(xiàn)在已經(jīng)有應用可以變通地實現(xiàn)多人游戲,如使用標記點,或為二號玩家編寫距離應用開始位置的代碼。技術上看,這些是可以運行的,但是你要一直為用戶解釋如何操作,用戶體驗可能一團糟。所以,并沒有什么“簡單運行”的魔法。
當然,如果任何人有不同的解決方案,我很想請教一下。不過,就我所知,多玩家實現(xiàn)穩(wěn)定性極強的重新定位現(xiàn)在還無法實現(xiàn),也沒有發(fā)現(xiàn)公布的研究成果。這就像 VIO 的問題一樣,只有少部分人可能會解決。我只知道一個還未公布的系統(tǒng)能夠支持,2018 年初才會推出。
誰都未能想到,ARCore在ARKit發(fā)布后,擁有如此迅速的反應時間。相對于ARKit來說,ARCore其實有不少優(yōu)勢:
功能方面:有一些 ARKit 并未提到的功能優(yōu)勢
開發(fā)者經(jīng)驗:ARCore 在 Tango 和 Daydream 上積累幾年豐富的開發(fā)者經(jīng)驗,相對于 ARKit 僅僅幾個月來說,是更加成熟的。
OEM:有足夠的 OEM 廠商提供強大的支持
宣傳:一段比較走心的宣傳短片
我感覺 ARCore 的推出相當匆忙,例如沒有 ARCore 的 Logo。我在之前的文章中談過 OEM 廠商對于 Tango 手機的謹慎。ARCore 消除了攝像頭堆棧硬件商品化,以及 Tango 面臨的材料成本的問題??雌饋?,Google 已經(jīng)考慮到一些戰(zhàn)略控制,但是講真,我感覺一切太快了,這些事情還沒真正地實施。
Google 堅持 ARCore 是谷歌移動服務(GMS)的一部分,如果 AR 真的成為“下一個平臺”,這是重新劃分生態(tài)系統(tǒng)勢力的一個機會。ARCore 不只是像 GUI 那種功能。所有的初創(chuàng)公司都要考慮 SLAM 的問題。而 AR 是否會脫離 GMS,這可不好說。
OEM 廠商尋找 ARCore 替代品的最大原因可能是,他們巨大的市場(如中國)不歡迎 GMS。
GMS 最大的阻力在于:無法進入中國市場,那里卻是 OEM 廠商們最大的市場。廠商們更喜歡一個可以在全球運行的 AR 軟件解決方案。
如果你喜歡Android,你有一個 Samsung S8 或 Pixel,那么別猶豫,直接去開發(fā)吧。如果你喜歡 iPhone,也不要擔心是否需要換成 ARCore。
開發(fā)者應當關注的是,打造一個人們關心的 AR 應用要面臨巨大的挑戰(zhàn)。與學習如何在 ARKit 或 ARCore 上創(chuàng)建內(nèi)容相比,創(chuàng)建什么樣的內(nèi)容要花費更大的努力。
ARKit / ARCore SDK目前還是1.0版,功能還非常基礎(VIO、平面檢測、基礎照明),將在未來幾年內(nèi)獲得更多的功能(3D場景理解、遮擋、多人聯(lián)網(wǎng),內(nèi)容固定性等)。對開發(fā)商和消費者來說,這將是一個不斷的學習過程。所以現(xiàn)在只需要堅持向著自己認為對的路子走就好。
不要對使用哪個平臺想太多,多想想能創(chuàng)建什么樣的 AR 內(nèi)容
作為技術解決方案,它們的能力非常接近。ARKit 在集成和跟蹤方面具有一定的技術優(yōu)勢; ARCore 在建圖和重定位方面具有一些優(yōu)勢??墒沁@兩個優(yōu)點大多是專業(yè)的計算機視覺工程師才能看到的。
想用這張圖解釋一個設計師的價值
蘋果有一個清晰的市場宣傳優(yōu)勢,擁有龐大的設備基礎,可以立即升級到包含 ARKit 的最新 iOS 系統(tǒng)。蘋果的用戶一般更愿意花錢,所以從中期來看,AR 應用應該可以在 ARKit 上更好地獲利。
Android 的優(yōu)勢在于規(guī)?;?Android 生態(tài)系統(tǒng)需要至少 12 個月才能將所有的部分整合在一起,并在大多數(shù)新設備中獲得硬件支持的 ARCore。(時間可能會更長,通常 OEM 廠商會在 10 月份決定 2018 年的產(chǎn)品。)
ARCore 由此前 Tango 研發(fā)的基礎,其中大部分已經(jīng)進行了用戶/市場測試?,F(xiàn)在基礎已經(jīng)比較到位,看看這些系統(tǒng)在未來12-24個月內(nèi)如何快速發(fā)展,這會很有趣。
我認為,制約 AR 應用市場普及速度的將會是開發(fā)者打造的內(nèi)容。技術已經(jīng)足夠去創(chuàng)建消費者產(chǎn)品了。
ARKit 和 ARCore 哪個更好?主要還是看開發(fā)者的個人偏好和目標。這兩個系統(tǒng)都有自己的優(yōu)點和缺點,但重要的是兩者都能夠為消費者提供足夠的消費體驗,開發(fā)者請腦洞大開,盡情享受這個過程吧!
Via medium
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。