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