sponsored links

從小白到自動駕駛系統工程師19——視覺SLAM

SLAM概念

SLAM (Simultaneous Localization and Mapping):同步定位與建圖。SLAM問題可以描述為: 機器人在未知環境中從一個未知位置開始移動,在移動過程中根據位置和地圖進行自身定位,同時在自身定位的基礎上建造增量式地圖,實現機器人的自主定位和導航。

從小白到自動駕駛系統工程師19——視覺SLAM

假設你是《魯濱孫漂流記》中的主人公,你漂流到一個無人的荒島上時,你需要迅速熟悉周圍環境,尋找食物和水源,躲避野獸,那麼你就需要完成以下事情:

1. 用眼睛觀察周圍的地標,比如一座最高的山峰、一顆造型奇特的石頭、一棵參天大樹等等,並且記住這些地標的特徵——特徵提取。

2. 根據眼睛所觀察到的環境資訊,在腦海裡構建一個包含這些地標的地圖,對它們的方位有一定的掌握——三維建圖。

3. 你開始沿著一條小路往前走,本來在你前方的一棵樹現在變成了在你左側,雖然你和樹的相對位置變化了,但你知道在你左側的這棵樹就是剛才在你前方的那棵——特徵關聯。

4. 透過你和樹相對位置的變化,你可以得到自己的運動軌跡、方向、速度、當前運動狀態——運動估計。

5. 在你前進的過程中,你會遇到新的地標,比如一條小河、一個洞穴等,根據獲取到的它們的方位資訊,校正自己腦海裡的地圖模型——狀態更新。

6. 當你無意中走了很長一段路以後,與腦海中的地標進行匹配,檢視自己是否走回了原路——迴環檢測。

上述你做的這些事情,就是視覺SLAM的幾個重要組成部分。

特徵提取

基於特徵的SLAM演算法是透過兩幀間相關聯的特徵來計算兩幀間相機的相對位姿關係的,因此特徵提取的好壞直接影響SLAM演算法的表現。一個好的特徵應該具有良好的光照不變性和幾何不變性,即無論在何種光照條件和幾何投影下,同一特徵不能有較大變化,否則不同幀圖相間的特徵無法匹配會導致SLAM運動估計失敗。

從小白到自動駕駛系統工程師19——視覺SLAM

常用的特徵包括點特徵、直線特徵、邊緣特徵等。由於直線特徵容易被遮擋,而邊緣直線的起始點可能不存在,因此絕大多數研究者使用點特徵,而將直線特徵在結構化環境中作為補充特徵。常用的點特徵一般分為角點特徵和塊特徵兩類。

角點特徵,即兩個或多個區域的交點,檢測速度快、易於計算、易於定位,但差異性較小。

塊特徵一般透過顏色、強度、紋理等資訊來劃分區域,特徵好、能穩定地檢測出來,但檢測速度慢。

從小白到自動駕駛系統工程師19——視覺SLAM

一般而言,人工設計的特徵點需要擁有如下性質:

1. 可重複性:相同的特徵可以在不同的影象中找到。

2. 可區別性:不同的特徵有不同的表達。

3. 高效率:統一影象中,特徵點的數量應遠小於畫素的數量。

4. 本地性:特徵僅與一小片影象區域相關。

特徵關聯

兩張影象匹配最簡單的方法就是遍歷影象中所有的特徵點,計算距離,距離最小的作為匹配點。為了防止出現一對多的匹配結果,使用雙向匹配的方法來確定最終結果。但當特種點數量較多時,計算量會非常大,無法實用。

從小白到自動駕駛系統工程師19——視覺SLAM

多解析度法:先在低解析度下進行搜尋,找到近似的最優匹配塊之後,再切換至高解析度下進行修正。運算複雜度較高。

透過在第二張影象上期望的區域中來搜尋可能的匹配點來提高匹配效率,期望區域可以透過三維點和建立運動模型的方式來得到,車輛的運動模型可以透過IMU、輪速計、GPS等獲取。

運動估計

SLAM問題的一項核心任務就是對相鄰兩幀影象的運動變化做出估計,從而得到整體的運動軌跡以及當前運動狀態。在得到對應的特徵後,求出兩者之間的空間位置的相對偏移量,得到的相對偏移量就是通常所指的運動向量,得到運動向量的過程被稱為運動估計。

從小白到自動駕駛系統工程師19——視覺SLAM

根據使用的匹配特徵點維度的不同,大體上有三種估計方法。

1. 待計算的兩幀影象間的特徵點都用二維影象座標進行表示。

2. 待計算的兩幀影象間的特徵點都用三維影象座標進行表示。

3. 待計算的兩幀影象間,前一張用三維座標表示,後一張用二維座標表示。

因為前一幀影象的特徵點都已經被三角化,即已經知道了這些點的3D位置。那麼新的幀到來後,透過影象匹配就可以得到與那些3D點相對應的2D點,再根據這些3D-2D的對應關係,利用PnP演算法解出當前幀的相機位姿。PnP問題有多種求解方法,包括P3P、直接線性變換(DLT)、EPnP(Efficient PnP)、UPnP等等,而且它們在OpenCV中都有提供。因為三維座標需要根據前面多張照片及運動模型來獲取,不可避免地會引入額外的誤差。

後端最佳化

前端視覺里程計能給出一個短時間內的軌跡和地圖,但不可避免地誤差累積,這個地圖在長時間內是不準確的。要想構建一個尺度,規模更大的最佳化問題,以考慮長時間內的最優軌跡和地圖,這時後端最佳化就出現了。常用最佳化演算法對比如下:


演算法


缺點


優點


KF/EKF


假設噪聲為高斯分佈,在高維狀態空間時計算效率較低,不適合大規模場景的地圖構建。


原理簡單,小場景下收斂性好。


PF


會不可避免出現粒子退化現象,每個粒子需包含整張地圖資訊導致不適合大場景地圖構建。


將運動方程表示為一組粒子,通過蒙特卡羅方法求解,能夠處理非線性非高斯噪聲。


EM


計算量大,不能用於大規模場景。


有效解決了資料關聯問題。


圖最佳化


對閉環檢測演算法的要求很嚴格。


出現多種圖最佳化框架,能夠有效解決濾波器演算法的缺陷,能用於大規模場景的地圖建立。

迴環檢測

迴環檢測,又稱閉環檢測,是指機器人識別曾到達某場景,使得地圖閉環的能力。說得簡單點,就是機器人在建圖的時候能意識到某個地方是“我”曾經來過的,然後把此刻生成的地圖與剛剛生成的地圖做匹配。

迴環檢測之所以能成為一個難點,是因為:如果迴環檢測成功,可以顯著地減小累積誤差,幫助機器人更精準、快速的進行避障導航工作。而錯誤的檢測結果可能使地圖變得很糟糕。因此,迴環檢測在大面積、大場景的地圖構建上是非常有必要的 。

常用的迴環檢測方法有圖最佳化、詞袋模型、相似度計算、決策樹、SVM等。

分類: 故事
時間: 2022-04-04

相關文章

民間故事:書生見河中女子沐浴,多次騙他下河,女子:別跟我比慘

民間故事:書生見河中女子沐浴,多次騙他下河,女子:別跟我比慘
新聊齋|換魂新娘 清朝時,有個書生名叫盧常,因為屢考不中,漸漸就心灰意冷,絕了做官的心.從此揹著一個行囊,到處遊山玩水,走走停停,有時也在當地住一兩個月. 有一次,盧常路過一個非常偏僻的小山村,村裡很 ...

民間故事:小夥深山採藥遇女子落水,救人後,意外討了一房媳婦
兩宋年間,在江南道有一個名叫蒲瑞淵的小夥子,由於父母雙親都在幾年前的瘟疫中失去了生命,當時還只有七八歲的蒲瑞淵當時就變成了一個無依無靠的孤兒. 而就在這場瘟疫之中,像蒲瑞淵這樣失去了父母或者子女的人可 ...

民間故事:屠夫深夜歸家,老漢請他殺豬,看到老漢的腳他拔腿就跑

民間故事:屠夫深夜歸家,老漢請他殺豬,看到老漢的腳他拔腿就跑
我們都知道過年必吃的就是餃子,包餃子離不開豬肉,而在過年的時候,羊肉.牛肉等各種肉類也深受人們的歡迎,因此到了年關,屠夫們不是殺豬就是宰羊,最是忙碌.明朝一屠夫在年關忙到深夜才回家,一老漢等在門口請他 ...

民間故事:男子夜走山路,見美婦上前抱住,數日後丟了小命

民間故事:男子夜走山路,見美婦上前抱住,數日後丟了小命
新聊齋|羊販遇妖 明朝,一羊販走山路回家,路遇一美豔婦人,他上前挑逗幾句後,一把將婦人抱住.那婦人也不反抗,陪他在地上玩耍一番.事後美婦變成狐狸離開,羊販大驚跑回家.次日晚上,那美婦帶著一頭巨狼找上門 ...

民間故事:少女十八歲,滿頭白髮,道士見了竟是跪倒喊娘
民間故事,奇聞趣事,這裡是話神道仙的原創故事領域. 接下來請看傳奇的民間故事. 世間之大無奇不有,古往今來,民間可是發生了很多怪事,有些已經超出了人們的想象極限. 在古代,有著這麼一個怪事. 離著縣城 ...

民間故事:商人回家,發現妻子悄然離開,找到後竟然多了一個兒子

民間故事:商人回家,發現妻子悄然離開,找到後竟然多了一個兒子
新聊齋:原創故事<巧妹> 從前,有個叫周錫的商人,雖是個舊姓人家,但卻家道敗落,如今再不能閒飯度日. 周錫自幼聰慧,飽讀詩書,長得也俊,可遭遇家庭變故,他只得棄儒為商,出外營生. 幾年過去 ...

民間故事:農夫山中避雨,天上掉下個美女子,揹回家得到神奇金鈴

民間故事:農夫山中避雨,天上掉下個美女子,揹回家得到神奇金鈴
新聊齋|龍女與農夫 古時,一農夫山中避雨時,看見雲層中一個人掉落下來.過去一看,發現是一個頭上長角的美貌女子.那女子已被摔昏,怎麼叫喊都不醒來,農夫將她揹回家,精心服侍照顧.三天後女子醒來,離開時報恩 ...

民間故事:富翁連克七任妻子,道士見後連忙跪下:你怎麼出來了

民間故事:富翁連克七任妻子,道士見後連忙跪下:你怎麼出來了
故事發生在明朝正德年間,有一個富翁連克七任妻子,過路道士見後連忙跪下對他說:"你怎麼出來了?" 杭州府有個叫步精雲的富翁,此人出身貧寒,小小年紀看遍世間冷暖,有一股常人所不能及的悍 ...

民間故事:更夫夜晚見豪宅內躺兩人,趕忙報官,沒料引出一段公案

民間故事:更夫夜晚見豪宅內躺兩人,趕忙報官,沒料引出一段公案
在古時候那個沒有監控也沒有刑偵手段的年代,一些犯下了殺人罪行的人,說不定一輩子都不會被抓住.以前的捕快們斷案抓人,大多數憑藉的也只是多年以來的經驗和了解.比如什麼"龍蛇混雜"的地方 ...

民間故事:木匠夜宿破廟,把墨斗掛在門上,醒來捉一野兔造棺下葬

民間故事:木匠夜宿破廟,把墨斗掛在門上,醒來捉一野兔造棺下葬
新聊齋|墨線縛女鬼 古時,一木匠夜晚回家,遇大雨躲進山中破廟.他拿出墨斗掛在門上,進廟安穩睡了一覺.次日醒來,開門看見墨線縛住一隻野兔,木匠捉兔回家,準備殺了吃肉.晚上卻做了一個怪夢,天明後他連忙做了 ...

民間故事:書生夜夜聽到嬰兒哭,道士割開他的胸口,露出一張人臉

民間故事:書生夜夜聽到嬰兒哭,道士割開他的胸口,露出一張人臉
宋朝淳化年間,揚州有個名叫吳遷的書生.此人相貌英俊,才華橫溢,是當地許多少女的夢中情人.吳遷考上舉人後,為了自己的仕途,娶了當地知府的女兒.可兩人婚後不久,卻發生了一件怪事. 吳遷每天夜裡,總能聽到嬰 ...

民間故事:木匠中秋節夜宿主家,睡覺時在床頭放一把米,逃過一劫

民間故事:木匠中秋節夜宿主家,睡覺時在床頭放一把米,逃過一劫
明朝一木匠中秋節夜宿主家,他在主家院子裡檢查了一圈,發現事情不對勁,便在枕頭下放了一把米,因此逃過一劫.這到底是怎麼回事呢?且聽我娓娓道來. 順德府有個叫韓山野的員外,他年方三十,為人厚道善良,人緣極 ...

民間故事:書生放走一條鯉魚,當晚做了個夢,鯉魚答應書生一件事

民間故事:書生放走一條鯉魚,當晚做了個夢,鯉魚答應書生一件事
從前,一書生乘船外出遊歷,突然有一條鯉魚自己跳上船來,書生的朋友打算下船後將鯉魚燉了吃.可是書生見鯉魚奄奄一息,心生憐憫,於是將鯉魚放回了江中.當晚,書生夢見鯉魚,鯉魚承諾答應書生一件事情. 新聊齋: ...

民間故事:財主的兩個兒子,一好一壞,壞的那個後來浪子回頭

民間故事:財主的兩個兒子,一好一壞,壞的那個後來浪子回頭
讀民間故事,品百味人生,歡迎觀看月汐醬講故事. 話說古時,有一個姓李的財主,他有兩個兒子,老大叫李德,幫著李財主打理生意,在李德的幫助之下,家中的生意蒸蒸日上,李財主非常欣慰,有這麼一個優秀的兒子. ...

民間故事:老翁救下一隻金龜,當晚做了奇怪的夢,醒後救了全村人

民間故事:老翁救下一隻金龜,當晚做了奇怪的夢,醒後救了全村人
從前,一老翁去到河邊,見一少年手中擺弄著一隻通體金黃的烏龜,邊走邊說:"回家燉了這隻烏龜,一定美味!"金龜眼中立即落淚.老翁見到,頓時心生憐憫,花錢買下金龜.當晚,老翁做了一場奇怪 ...

民間故事∶包公案之石獅子傳奇

民間故事∶包公案之石獅子傳奇
點選右上角關注我,每天分享匪夷所思的古代奇案與民間故事. 北宋仁宗年間,山東境內有一次鬧洪災,沒想到因此引發了一樁傳奇大案,竟然先後驚動了包拯和仁宗皇帝,這是怎麼回事呢?要想把這個故事說清楚,還得從一 ...

民間故事:貴婦收留乞丐,乞丐與小偷勾結,小偷進屋貴婦投懷送抱

民間故事:貴婦收留乞丐,乞丐與小偷勾結,小偷進屋貴婦投懷送抱
本故事為<民間故事>系列之第247期,如果您喜歡看民間故事記得常來 古時候在長平縣,有戶趙姓人家.戶主趙小剛是當地一名大富商,家財萬貫,旗下有客棧布莊,生意遍佈全城,堪稱當地首富. 雖說趙 ...

民間故事:書生遇月老,詢問自己姻緣,月老:你妻子剛剛滿月

民間故事:書生遇月老,詢問自己姻緣,月老:你妻子剛剛滿月
明朝萬曆年間,開封府有個名叫雲奇的書生.雲奇老實敦厚,性情淳樸,奈何天資愚鈍,讀了十幾年書也沒能考上功名,恰逢父親離世,家道中落,雲奇只好放棄讀書,整日打零工維持生計. 一日夜裡,雲奇幹完活回家,走到 ...

民間故事:獵戶途經古廟,發現上香的都是男子,藉口討水發現端倪

民間故事:獵戶途經古廟,發現上香的都是男子,藉口討水發現端倪
民間故事,奇聞趣事,這裡是話神道仙的原創故事領域. 接下來請看傳奇的民間故事. 北山腳下,有著一位出名的獵戶王朔,之所以出名,主要是此人年幼的時候,家境貧寒,實在是養不起了,所以父母將他送去出家做了道 ...

民間故事:女嬰出生會說話,君有情妾有意,十六年後嫁給他

民間故事:女嬰出生會說話,君有情妾有意,十六年後嫁給他
清朝的時候,某地有個生員名叫謝天順,雖然家境貧寒,很才華橫溢,很多人都看好他,認為他是文曲星下凡,將來必能金榜題名,入朝為官. 城裡有個姓鄧的富戶,仰慕謝天順的才華,請他在家裡教導子弟讀書.謝天順兢兢 ...