在今年的Oculus Connect大會(huì)上,,扎克伯格公布了一款正在開(kāi)發(fā)的VR一體機(jī)產(chǎn)品——Santa Cruz,。細(xì)看報(bào)道你會(huì)發(fā)現(xiàn),這款產(chǎn)品除了將計(jì)算單元都集成到頭盔中,,還在前面增加了4顆攝像頭,。這些攝像頭的作用,其實(shí)是用來(lái)實(shí)現(xiàn)空間定位的,,在Oculus Rift CV1上,,空間定位系統(tǒng)需要通過(guò)一套外部傳感器來(lái)實(shí)現(xiàn),,這顯然不適合移動(dòng)方案。 許多人都說(shuō)VR一體機(jī)是未來(lái),,而移動(dòng)VR要真正移動(dòng)起來(lái),,就需要擺脫外部空間定位基站的束縛,。那么如何用另一種方案來(lái)擺脫有線VR通常使用的Outside-in空間定位方案呢,?那就是Inside-out空間定位技術(shù),此類(lèi)方案大都基于計(jì)算機(jī)視覺(jué)技術(shù),,包括微軟,、Google和Facebook在內(nèi)的科技巨頭都在進(jìn)行相關(guān)研究。 所謂的Inside-out追蹤到底是如何做的呢,?它使用了哪些技術(shù),,又有什么難點(diǎn),本期公開(kāi)課將為您解答這些疑問(wèn),。 ● ● ● 嘉賓介紹 馬賡宇,,清華大學(xué)計(jì)算機(jī)系本科,碩士,,以及博士,。馬博士于2015年9月加入uSens凌感科技,現(xiàn)任凌感科技技術(shù)副總裁和中國(guó)研發(fā)中心主任,。 在清華,,馬博士在人工智能與媒體集成實(shí)驗(yàn)室主攻人機(jī)交互和人工智能。馬博士曾任三星中國(guó)研究院(SAIT China)首席研究員與研發(fā)主任,,是三維顯示與人機(jī)交互技術(shù)以及虛擬現(xiàn)實(shí)技術(shù)的專(zhuān)家,,為T(mén)imothy Sauer所著教科書(shū)《Numerical Analysis》的譯者。 以下內(nèi)容整理自馬賡宇博士本次公開(kāi)課演講,,您將看到以下內(nèi)容: 大家好,,本次講座的主題是基于視覺(jué) 慣性傳感器的空間定位方法,前半部分是基于視覺(jué)的定位方法,,以前和學(xué)校及研究機(jī)構(gòu)做得比較多,。后半部分介紹慣性傳感器在定位中的應(yīng)用。慣性傳感器是最近幾年才興起的,,主要是因?yàn)槭謾C(jī)傳感器(這方面主要是iPhone)的發(fā)展,,傳感器的精度也在逐年提高。 手機(jī)里面的陀螺儀現(xiàn)在基本可以達(dá)到0.01度的誤差,,加速度計(jì)雖然誤差稍微大一點(diǎn),,如果用來(lái)估計(jì)針尖運(yùn)動(dòng)也可以起到很大的輔助作用。 ● ● ● 空間定位方法簡(jiǎn)介 這里列舉了一些空間技術(shù)應(yīng)用場(chǎng)景,。據(jù)我了解空間定位是從軍事上開(kāi)始應(yīng)用的,,主要是導(dǎo)彈的定位,可以在沒(méi)有GPS導(dǎo)航的情況下,根據(jù)自身的IMU和加速度計(jì)達(dá)到在幾千公里外只差幾百米的誤差,。然后像室外的自動(dòng)駕駛,、無(wú)人機(jī),室內(nèi)的機(jī)器人,、吸塵器等都是需要SLAM技術(shù)的,。 SLAM(simultaneous localization and mapping)就是同時(shí)進(jìn)行場(chǎng)景的建模和相機(jī)自身位置的定位,它的用途就是估計(jì)一些設(shè)備在場(chǎng)景中的位置和相對(duì)運(yùn)動(dòng)軌跡,。 在VR的場(chǎng)景里呢,,因?yàn)樾枰M出頭部運(yùn)動(dòng)后一些虛擬物體在場(chǎng)景中的位置,所以要實(shí)時(shí)得到頭相對(duì)于世界的位置,。圖示中的頭部位置有六個(gè)參數(shù),,三個(gè)表示旋轉(zhuǎn)三個(gè)表示位置一共六個(gè)自由度。旁邊有手和控制器,,意思是在VR的應(yīng)用里除了要知道這個(gè)設(shè)備相對(duì)于世界的位置還要知道手相對(duì)于設(shè)備,、以及控制器相對(duì)于頭盔或世界的位置。 然后我們?cè)趯?shí)驗(yàn)過(guò)程中發(fā)現(xiàn),,VR環(huán)境和其他一些應(yīng)用環(huán)境相比,,對(duì)SLAM的性能要求有些不同。在VR環(huán)境下對(duì)用戶影響比較大的幾個(gè)指標(biāo)是:
相對(duì)不太重要的指標(biāo),,一是loop closing,比如說(shuō)我在院子里走了一圈,,回到起始位置時(shí)它識(shí)別的結(jié)果是否和剛才的起始位置重合,。戴上VR頭盔以后看不到世界場(chǎng)景,有可能一米的誤差也感覺(jué)不到,。二是絕對(duì)誤差,,戴上頭盔以后頭部轉(zhuǎn)了100度,識(shí)別出來(lái)90度,,實(shí)際用戶也體驗(yàn)不到差別,;那么第三個(gè)絕對(duì)位置也就好理解了。 下面介紹幾種方向傳感器,,也就是陀螺儀的原理,。 機(jī)械陀螺儀 可能我們最了解的是以前上物理課見(jiàn)過(guò)的機(jī)械陀螺儀,。機(jī)械陀螺儀里面有一個(gè)轉(zhuǎn)子,由于能量守恒的原因,,整個(gè)設(shè)備高速旋轉(zhuǎn),,而轉(zhuǎn)子的方向是不變的,通過(guò)這種原理確定這個(gè)設(shè)備的方向,。這種設(shè)備可能早期在航海里應(yīng)用,,但現(xiàn)在應(yīng)該基本不用了。 激光陀螺儀 中間是現(xiàn)代高精度的激光陀螺儀,,在軍事上和一些高精度應(yīng)用上使用,。圖中中間是激光發(fā)射模塊,,往兩個(gè)方向發(fā)射激光,,左上角的傳感器會(huì)計(jì)算兩束光路距離的差。當(dāng)設(shè)備靜止時(shí),,兩邊的光線長(zhǎng)度一樣,;當(dāng)設(shè)備旋轉(zhuǎn)時(shí),兩邊的光路長(zhǎng)度會(huì)不一樣,,通過(guò)距離差來(lái)計(jì)算旋轉(zhuǎn)速度,。激光陀螺儀是很難小型化的。 MEMs陀螺儀 手機(jī)常用的是基于微機(jī)械結(jié)構(gòu)的MEMs陀螺儀,,它可以做到很小,。兩個(gè)黃色區(qū)域中間通過(guò)一個(gè)軸固定,利用科里奧利力——旋轉(zhuǎn)物體在有徑向運(yùn)動(dòng)時(shí)所受到的切向力,,來(lái)計(jì)算出角速度,。 圖中是一個(gè)加速度計(jì)的示意圖?;趶椈傻脑?,一個(gè)重物兩邊有彈簧固定,如果有加速度,,重物在彈簧上的位置就會(huì)改變,,位置的改變用電信號(hào)輸出就是它的加速度。對(duì)比之下,,陀螺儀識(shí)別出來(lái)的是角速度的值,,因?yàn)槲矬w在旋轉(zhuǎn)時(shí)會(huì)產(chǎn)生離心力,陀螺儀就是把離心力的大小輸出出來(lái)了,。本質(zhì)上陀螺儀和加速度計(jì)識(shí)別的都是受力,,等價(jià)于加速度。 這類(lèi)磁場(chǎng)傳感器是基于磁場(chǎng)的,。比如說(shuō)手機(jī)里的數(shù)字羅盤(pán)就是可以感應(yīng)出地球磁場(chǎng)的方向,。另外一種Razer Hydra遙控器,,中間的球會(huì)產(chǎn)生一個(gè)強(qiáng)磁場(chǎng),手柄上有一個(gè)傳感器可以識(shí)別出磁場(chǎng)的強(qiáng)度和方向,,以此來(lái)進(jìn)行手柄位置的定位,。 總結(jié)以上三種常見(jiàn)的傳感器的優(yōu)缺點(diǎn),陀螺儀精度很高,,手機(jī)上的采樣率可達(dá)到100hz,一些先進(jìn)的頭盔可達(dá)到1khz的采樣率,。加速度計(jì)的精度比較低,從芯片的參數(shù)表來(lái)看,,誤差達(dá)到0.1米每秒方的加速度,。如果用加速度進(jìn)行積分,經(jīng)過(guò)1秒鐘的累計(jì)誤差會(huì)到0.05m,,誤差較大,。 Outside-in定位 介紹一些基于Outside-in定位的一些VR頭盔設(shè)備,比如流行的Oculus,、HTC VIVE,、PSVR。主要講講HTC VIVE Lighthouse的工作原理,。因?yàn)槲覀冇X(jué)得他是性能最好的定位算法,,而且設(shè)計(jì)很有意思,如果把它理解成一個(gè)圖像的話,,可以達(dá)到很高的分辨率,。 發(fā)射器有兩排燈,起始時(shí)會(huì)全部照亮以示初始時(shí)間,,分別有豎直和水平的兩束光線旋轉(zhuǎn)掃描,,頭盔上的記錄器會(huì)記錄光線掃到的時(shí)刻。如果把時(shí)刻轉(zhuǎn)換成圖像坐標(biāo),,那么簡(jiǎn)單理解就是每次掃描可以得到一張圖像,,圖像記錄的是每個(gè)紅外感應(yīng)點(diǎn)在圖像上的XY坐標(biāo)。這樣有個(gè)好處就是如果時(shí)間很精確,,圖像的分辨率會(huì)很高,。 現(xiàn)在的數(shù)碼相機(jī)分辨率是有限制的,一般做SLAM的達(dá)到1080p就很高了,。另外,,每個(gè)LED的ID 都是已知的,不需要在圖像上進(jìn)行匹配或跟蹤,,就可以知道自己的圖像坐標(biāo),。 Inside-out定位 微軟的Hololens基于四個(gè)魚(yú)眼相機(jī)來(lái)進(jìn)行slam定位,不需要在場(chǎng)景里設(shè)置傳感器,。高通發(fā)布VR820一體機(jī)頭盔的參考設(shè)計(jì),,前面有兩個(gè)攝像頭,,使用高通芯片的DSP來(lái)進(jìn)行處理,也能達(dá)到inside-out的效果,。我們公司出的Power Fingo也是通過(guò)兩個(gè)紅外攝像頭進(jìn)行跟蹤,,里面有自帶的高通820來(lái)進(jìn)行計(jì)算,也是Inside-Out的SLAM硬件,。 上圖是三種跟蹤算法的比較 上圖是比較誤差對(duì)Outside-In 和Outside-Out的影響,。Outside-In的方法是假設(shè)傳感器是在外面的,認(rèn)為外面有個(gè)攝像頭,,頭盔上的Marker點(diǎn)在攝像頭的成像算出二維或三維的位置,,設(shè)備角度通過(guò)IMU來(lái)得到。如果角度有誤差,,位置是不會(huì)影響的,。因?yàn)檫@些點(diǎn)的位置不變,如果角度變化最多識(shí)別出紅框的結(jié)果,,至少位置上是相對(duì)穩(wěn)定變化不大的,。 Inside-Out的方法是頭盔上有攝像頭來(lái)識(shí)別外部的點(diǎn),,假設(shè)外部點(diǎn)離設(shè)備一米遠(yuǎn),,如果識(shí)別出的角度差了1度,位置可能就會(huì)差幾厘米,。如果大家仔細(xì)體驗(yàn)Hololens就會(huì)發(fā)現(xiàn),,在湊近虛擬物體時(shí),距離頭盔一分米內(nèi)的物體就會(huì)慢慢變黑不顯示,。因?yàn)樗R(shí)別出的頭盔位置的誤差會(huì)有一些抖動(dòng),,比如一米遠(yuǎn)的物體有稍微抖動(dòng),成像時(shí)顯示出來(lái)可能就很小,,如果物體就在眼前,,顯示出的抖動(dòng)會(huì)很大,所以Hololens采用取折中方法,,近處的物體不顯示,,以此減小SLAM誤差的影響。這也說(shuō)明Inside-out的方法對(duì)精度的要求會(huì)更高,。 ● ● ● 視覺(jué)和IMU融合的SLAM算法 下面介紹視覺(jué)和IMU融合的SLAM算法,,包括有什么改進(jìn)可以提高SLAM精度。先來(lái)看一些Demo,。 第一個(gè)Demo是融合IMU數(shù)據(jù)和基于單個(gè)普通相機(jī)的PTAM算法,。在筆記本的屏幕上可以看到桌面上有四個(gè)眼睛是虛擬的物體,整個(gè)場(chǎng)景是以AR的方式來(lái)顯示場(chǎng)景,,眼睛的位置和真實(shí)場(chǎng)景綁定,。如果SLAM的效果好,,那么當(dāng)相機(jī)運(yùn)動(dòng)的時(shí)候,這4個(gè)眼睛的位置依然綁定在真實(shí)場(chǎng)景的物體上不會(huì)變,。 在這個(gè)Demo中大家可以看到,,頭盔的運(yùn)動(dòng)(旋轉(zhuǎn))速度很快,這是在模擬真實(shí)的VR環(huán)境,,人戴著頭盔時(shí)一秒鐘可以運(yùn)動(dòng)180度,,有很快角速度。原始的PTAM算法在這種情況下會(huì)跟蹤失敗,。 而這個(gè)Demo毫無(wú)問(wèn)題,,因?yàn)槿诤狭薎MU才能達(dá)到這么穩(wěn)定的跟蹤。 第二個(gè)Demo是在手機(jī)上運(yùn)行的基于Mark點(diǎn)的SLAM算法,,桌面上有4個(gè)紅外反射點(diǎn),。這個(gè)初音跳舞的Demo,可以通過(guò)移動(dòng)手機(jī)(通過(guò)頭盔也可以)在不同的位置來(lái)看,,這個(gè)就是和Gear VR最大的區(qū)別,, Gear VR只能識(shí)別旋轉(zhuǎn),而前面運(yùn)動(dòng)場(chǎng)景是不會(huì)變的,。 第三個(gè)Demo是Marker點(diǎn)SLAM算法的測(cè)試程序,,手機(jī)在Mark前晃動(dòng),這個(gè)程序顯示的紅線是相機(jī)的運(yùn)動(dòng)軌跡,,我們也模擬VR環(huán)境下頭的快速運(yùn)動(dòng),,即使以很快的速度晃手機(jī),也可以跟蹤到很好的軌跡,,不會(huì)丟失,。 這些算法與網(wǎng)上一些SLAM定位算法或者基于手機(jī)的AR算法的最大區(qū)別就是,在快速運(yùn)動(dòng)或快速旋轉(zhuǎn)時(shí)也都可以很好的跟蹤到,。在VR環(huán)境下必須保證SLAM永遠(yuǎn)是對(duì)的,,必須保證即使多快的運(yùn)動(dòng)都不能丟失。否則如果丟失了再找回來(lái),,用戶看到的就是場(chǎng)景跳了一下又回來(lái)了,,體驗(yàn)是很差的。 ● ● ● 基于視覺(jué)的3D立體幾何的基本原理 這一頁(yè)介紹一下基于視覺(jué)的3D立體幾何的基本原理,,需要了解的兩個(gè)基礎(chǔ)知識(shí),,一個(gè)是3D坐標(biāo)變換,一個(gè)是針孔相機(jī)模型,。左邊是成像的基本原理,,相機(jī)兩個(gè)關(guān)鍵幀,一幀在c1位置,,一幀在c2位置,,同時(shí)觀測(cè)到一個(gè)三維空間點(diǎn),,就是前面藍(lán)色的點(diǎn),這個(gè)點(diǎn)和相機(jī)光心的連線,,這條連線和成像平面的交點(diǎn),,就是這個(gè)點(diǎn)在圖像上的坐標(biāo),這就是基本的針孔相機(jī)模型,。 因?yàn)檫@個(gè)3D點(diǎn)的位置在空間中是不變的,,所以這兩個(gè)相機(jī)的方向和位置以及3D點(diǎn)的位置就滿足一個(gè)方程,簡(jiǎn)單說(shuō)就是這兩條射線要相交,。 右邊是對(duì)應(yīng)的一個(gè)投影方程,,XYZ就是3D點(diǎn)的空間坐標(biāo),T是相機(jī)的光心,,XYZ減T再乘以R就是3D點(diǎn)在圖像坐標(biāo)系下的坐標(biāo),。左邊的矩陣一般叫K矩陣,F(xiàn)是相機(jī)的焦距,,cx,、cy是相機(jī)的光心,K乘以相機(jī)坐標(biāo)系下的坐標(biāo)就等價(jià)于得到了這個(gè)點(diǎn)的圖像坐標(biāo),。 這一頁(yè)是方程的具體應(yīng)用: 第一個(gè)應(yīng)用是相機(jī)定位,,就是在這個(gè)方程里已知3D點(diǎn)位置和投影點(diǎn)的圖像坐標(biāo),求相機(jī)的位置和方向R,,T,; 第二個(gè)應(yīng)用是已知好幾個(gè)R和T,就是已知好幾幀圖像,,以及這個(gè)圖像3D點(diǎn)的投影位置,要求3D點(diǎn)的世界坐標(biāo),,實(shí)際上就是剛剛那一頁(yè)左圖里邊,,已經(jīng)兩條射線的方向,要求它們的交點(diǎn),; 第三個(gè)應(yīng)用是最復(fù)雜的,,SLAM中Localization是相機(jī)定位,mapping求解3D坐標(biāo),,這個(gè)公式里邊如果相機(jī)位置和3D坐標(biāo)都不知道的話,,就需要多幀圖像,只知道u,、v,,x、y,、z都不知道的話,,需要很多個(gè)這樣的方程進(jìn)行方程組求解,,也是可以解出來(lái)這些未知數(shù)的。 還有一些進(jìn)階的技術(shù)知識(shí),,簡(jiǎn)單列舉一下,。第一是四元素,之所以用四元素表示旋轉(zhuǎn),,是因?yàn)槿绻脷W拉角表示旋轉(zhuǎn),,無(wú)法保證表達(dá)的連續(xù)性。還要了解各種非線性方程組求解的算法,。雖然現(xiàn)在有些工具包是解SLAM問(wèn)題的,,但基本上都沒(méi)有融合IMU,或者說(shuō)融合方法千差萬(wàn)別,。在VR需求下要求低延遲,、相對(duì)位置準(zhǔn),對(duì)絕對(duì)值要求不高,,方程都是需要改變的,,對(duì)于改變的方程要求解的話就需要了解各種非線性議程組的求解方法,下面列了這些,,常用的是最后這種,。 ● ● ● Visual SLAM 算法 介紹一下Visual SLAM 算法,一些論文里邊只用了視覺(jué)的方法(單目相機(jī))進(jìn)行SLAM,,包含Localization和Mapping,,這兩塊已經(jīng)介紹了。Visual IMU的融合,,主要改進(jìn)是在Localization的模塊,,Mapping是建立三維點(diǎn)坐標(biāo)的過(guò)程,這是用不到IMU的,,只是在Localization上要精確估計(jì)出相機(jī)的位置,,才需要IMU的融合。 純Visual SLAM的方法,,主要是在場(chǎng)景中提取特征點(diǎn),,進(jìn)行特征點(diǎn)匹配,但這種方法在室內(nèi)場(chǎng)景,,尤其是特征點(diǎn)比較少,,主要特征都是線和邊緣的場(chǎng)景,很容易跟蹤失敗,。 最近幾年有一些Direct Method,,不是通過(guò)特征點(diǎn)匹配而是直接通過(guò)圖像像素顏色匹配來(lái)優(yōu)化相機(jī)位置,代表的一些論文算法包括LSD-SLAM和DSO-SLAM,下面有兩個(gè)YouTube視頻供參考,。 他們的效果是基于純視覺(jué)算法中最好的了,,但是像剛剛那邊快速頭盔旋轉(zhuǎn),,他們的Demo如果出現(xiàn)這種情況肯定會(huì)丟失,。 這頁(yè)是DSO算法的簡(jiǎn)單介紹,在圖像management上要保留7個(gè)關(guān)鍵幀,,新來(lái)的每幀圖像會(huì)和最近的幀的特征進(jìn)行比較,,優(yōu)化新圖像的姿態(tài)(Localization),。到了一定范圍之后就要添加新的關(guān)鍵幀,把所有關(guān)鍵幀一起優(yōu)化(Mapping),,來(lái)更新3D點(diǎn)的位置,。右邊是運(yùn)行示意圖,上邊那些黑色的點(diǎn)是歷史建出來(lái)的3D點(diǎn)的點(diǎn)云,。 紅色的一條線,,是相機(jī)運(yùn)動(dòng)軌跡,藍(lán)色的小框是選擇的那些關(guān)鍵幀,,下面這些圖,,上面右下角是最近的關(guān)鍵,后面是歷史上的一些關(guān)鍵,。在現(xiàn)在的場(chǎng)景,,如何最遠(yuǎn)的那個(gè)關(guān)鍵關(guān)鍵幀中那些點(diǎn)太少,就會(huì)去掉,,生成一個(gè)新的關(guān)鍵幀,。 ● ● ● Vision IMU融合 Vision IMU融合的產(chǎn)品包括HoloLens、Tango和高通的一體機(jī),。它的好處包括: 通過(guò)IMU可以減小圖像匹配的搜索范圍,,在VR環(huán)境下頭快速旋轉(zhuǎn)時(shí)可以達(dá)到每秒180度的速度,如果沒(méi)有IMU的話,,相鄰圖像里邊搜索的范圍可能會(huì)很大,,比如當(dāng)前這個(gè)點(diǎn)在圖像的最左邊,下一幀可能就移動(dòng)到圖像最右邊了,; 可以在很少或沒(méi)有特征點(diǎn)時(shí)繼續(xù)跟蹤;Tango一個(gè)比較好的性能就是,,在沒(méi)有特征點(diǎn),,比如掃過(guò)一面白墻時(shí),也能夠基本正確地跟蹤一兩秒的時(shí)間,。 可以在圖像幀間預(yù)測(cè)位置,,因?yàn)閿z像頭的采集速率一般比較低,可能每秒30、60幀,,最快有300幀(Intel ,,而IMU可以達(dá)到每秒1000幀或者更高,如果把IMU加到圖像幀間預(yù)測(cè),,那么SLAM就可以以每秒1000幀的速率輸出位置,,而不是只在有圖像的時(shí)間輸出位置。高通的VR820就可以以800Hz的速度輸出頭部運(yùn)動(dòng)的結(jié)果,。 手機(jī)里邊有很多傳感器,,陀螺儀可以輸出采樣時(shí)的角速度,加速度計(jì)可以輸出這個(gè)時(shí)刻的加速度,。還有磁場(chǎng)傳感器,,GPS。有些手機(jī)里自帶的融合算法,,將磁場(chǎng),、陀螺儀和加速度計(jì)整合到一起輸出一個(gè)方向,它輸出的方向看上去誤差很小,。 IMU的速度很快,,1000Hz,但是相機(jī)的速度很慢,,需要有一個(gè)解決方法,。 從Gear VR開(kāi)始提出ATW這個(gè)概念后,現(xiàn)在大部分頭盔都實(shí)現(xiàn)了這個(gè)功能,。簡(jiǎn)單介紹一下,,用戶看到圖像的時(shí)間,是經(jīng)過(guò)了好幾個(gè)處理,,從圖像采集加上圖像處理加上渲染引擎渲染的時(shí)間,,才是用戶最終看到的時(shí)間。 所以SLAM需要輸出的,,不單是有圖像時(shí)刻相機(jī)的R和P,,還有圖像之后通過(guò)IMU積分的,當(dāng)前最新時(shí)刻的R和P,,以及在當(dāng)前時(shí)刻往后預(yù)測(cè)的渲染結(jié)束時(shí)刻的R和P,,最后輸出的預(yù)測(cè)R和P才是渲染引擎需要知道的相機(jī)位置和方向。 SLAM對(duì)硬件的要求是很高的,,上面列舉了一些,。對(duì)攝像頭的要求是全局快門(mén),手機(jī)里是卷簾快門(mén),,它的圖像掃描每一行曝光是不同的,,手機(jī)快速運(yùn)動(dòng)時(shí)圖像會(huì)變形,,這種處理起來(lái)會(huì)增加很多難度,雖然很多paper也處理這種問(wèn)題,,但現(xiàn)有的所有SLAM算法并不考慮卷簾快門(mén)的影響,。 相機(jī)需要固定的焦距、光圈,,焦距固定可以通過(guò)預(yù)先的標(biāo)定來(lái)標(biāo)定相機(jī)的焦距和畸變,;光圈的固定可以讓相機(jī)在運(yùn)動(dòng)過(guò)程中場(chǎng)景的亮度不會(huì)變化,方便特征點(diǎn)的匹配和跟蹤,。 相機(jī)需要大的視角,,比如魚(yú)眼或全景,視角越大跟蹤的效果越穩(wěn)定,。還有相機(jī)的快門(mén)速度足夠高,,這樣在相機(jī)高速運(yùn)動(dòng)和旋轉(zhuǎn)時(shí)圖像不會(huì)產(chǎn)生運(yùn)動(dòng)模糊。相機(jī)的幀率要足夠高,,這樣相對(duì)幀的圖像差距比較小,,方便跟蹤。 傳感器的要求,,外置高性能IMU會(huì)比手機(jī)自帶的精度要高,。加速度計(jì)的精度需要過(guò)一兩年能發(fā)明出更好的加速度計(jì)對(duì)SLAM性能的改進(jìn)也會(huì)有很大提高。 這頁(yè)是列了一些uSens的產(chǎn)品,,右上角是雙目的彩色攝像機(jī),,Color Fingo,可以進(jìn)行RGB SLAM,,以及AR see through顯示,。左下角是Fingo紅外相機(jī),可以識(shí)別手識(shí),,以及進(jìn)行基于紅外Marker的SLAM跟蹤,。右下角是Power Fingo,集合了兩個(gè)RGB和兩個(gè)紅外攝像頭,,同時(shí)內(nèi)置有820處理器,,可以機(jī)器內(nèi)部進(jìn)行手勢(shì)識(shí)別和SLAM跟蹤。 我們做的Markerless SLAM相比現(xiàn)有SLAM算法有多種改進(jìn),,在預(yù)測(cè)和優(yōu)化階段都結(jié)合了IMU的信息,。 Markerless的算法計(jì)算量比較大,在手機(jī)上跑不到實(shí)時(shí)快速運(yùn)動(dòng)跟蹤效果,,所以出于實(shí)用的目的,,uSens也開(kāi)發(fā)了基于Marker點(diǎn)的SLAM算法。下面兩個(gè)圖,,左圖是桌面級(jí)別的SLAM,需要在桌面放四個(gè)Marker反射點(diǎn)。右圖是房間級(jí)別的SLAM,,每面墻放6,、7個(gè),房頂6,、7個(gè),,大概一個(gè)房間需要30個(gè)Marker點(diǎn),這些Marker點(diǎn)的坐標(biāo)都可以事先通過(guò)離線方法計(jì)算出來(lái),,Marker點(diǎn)的ID通過(guò)點(diǎn)之間的位置來(lái)確定,,這種基于Marker的算法可以直接在手機(jī)上實(shí)時(shí)跑起來(lái),戰(zhàn)資源比較小,,在手機(jī)上每幀圖像是5ms之下的處理時(shí)間,。 ● ● ● Q&A環(huán)節(jié) Q:Markerless SLAM定位怎么樣可以做到低延遲、高精度,,擼棒性也很好呢,? A:Markerless SLAM是在三個(gè)階段都整合了IMU信息,第一個(gè)階段是已知當(dāng)前幀相機(jī)的位置,,通過(guò)IMU信息來(lái)預(yù)測(cè)相機(jī)的位置,,可以預(yù)測(cè)到3D的空間點(diǎn)在下一幀圖像的位置,這樣就可以提高特征點(diǎn)跟蹤的穩(wěn)定性,。 然后是在沒(méi)有圖像時(shí)候,,通過(guò)IMU來(lái)預(yù)測(cè)相機(jī)的位置,輸出給渲染模塊,。 還有是在優(yōu)化相機(jī)位置時(shí),,不光考慮圖像特征點(diǎn)的投影坐標(biāo),也考慮幀間和加速度計(jì)的信息來(lái)進(jìn)行統(tǒng)一優(yōu)化,,就是那一頁(yè)講得最復(fù)雜的議程,。 Q:為什么HoloLens的定位可以做得這么好? A:HoloLens的SLAM做得很好,,它的SLAM過(guò)程中是沒(méi)有用深度相機(jī)的,,完全依靠左右兩側(cè)的4個(gè)魚(yú)眼相機(jī),深度相機(jī)只在場(chǎng)景建模時(shí)候用,,它跟我們的思路一樣,,分兩個(gè)階段,一是把場(chǎng)景里3D點(diǎn)的位置確定出來(lái),,后面的跟蹤就只用特征點(diǎn)的圖像坐標(biāo)和IMU來(lái)處理,。 它的IMU精度還不確定,我們做過(guò)實(shí)驗(yàn),,比如在電梯里戴HoloLens,,電梯一啟動(dòng)一停時(shí),,場(chǎng)景整個(gè)就飛到上面飛到下面,它首先是相信IMU的數(shù)據(jù),,其次才是相信圖像的數(shù)據(jù),。 它里面有一個(gè)專(zhuān)門(mén)處理器HPU,專(zhuān)門(mén)處理特征點(diǎn)的識(shí)別匹配問(wèn)題,,這樣就可以達(dá)到實(shí)時(shí)的效果了,。最后,他們的位置跟蹤誤差其實(shí)挺大的,,如果你湊近看一個(gè)物體可以發(fā)現(xiàn)抖動(dòng)挺大,,再近一點(diǎn)就直接不顯示了。
|
|
來(lái)自: jinnison > 《待分類(lèi)》