《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計應(yīng)用 > 基于ORB-SLAM的移動機器人嵌入式實現(xiàn)與優(yōu)化
基于ORB-SLAM的移動機器人嵌入式實現(xiàn)與優(yōu)化
2017年微型機與應(yīng)用第5期
林連秀,葉蕓,姚劍敏,郭太良
福州大學(xué) 物理與信息工程學(xué)院, 福建 福州 350002
摘要: ORB-SLAM(基于ORB特征識別的同時定位與地圖構(gòu)建系統(tǒng))的源代碼無法在嵌入式開發(fā)板運行,其構(gòu)建的點云圖太稀疏無法滿足移動機器人路徑規(guī)劃要求。針對這個問題,文章提出將ORBSLAM進行改進與優(yōu)化,移植到嵌入式開發(fā)板完成SLAM過程。首先,刪除原PC端Linux系統(tǒng)下的軌跡、點云圖、一些依賴庫,保留并改進src和include文件夾下大部分C++代碼;其次,在嵌入式平臺以JNI調(diào)用方式調(diào)用改進后的C++代碼,增加OpenCV、g2o、DBoW2、Eigen等依賴庫;最后根據(jù)處理后的關(guān)鍵幀連接繪制柵格地圖,完成實時軌跡顯示和地圖構(gòu)建。實驗結(jié)果表明,通過移植實現(xiàn)了在嵌入式開發(fā)板進行SLAM過程,硬件配置要求和成本大大降低,所構(gòu)建的柵格地圖占存量更小且更直觀反映實際環(huán)境的布局情況,地圖誤差控制在±0.5 m的較高精度范圍內(nèi),較大程度地提高了SLAM性能。
關(guān)鍵詞: ORB-SLAM 嵌入式 移植 柵格地圖
Abstract:
Key words :

  林連秀,葉蕓,姚劍敏,郭太良

  (福州大學(xué) 物理與信息工程學(xué)院, 福建 福州 350002)

  摘要ORB-SLAM(基于ORB特征識別的同時定位與地圖構(gòu)建系統(tǒng))的源代碼無法在嵌入式開發(fā)板運行,其構(gòu)建的點云圖太稀疏無法滿足移動機器人路徑規(guī)劃要求。針對這個問題,文章提出將ORBSLAM進行改進與優(yōu)化,移植到嵌入式開發(fā)板完成SLAM過程。首先,刪除原PC端Linux系統(tǒng)下的軌跡、點云圖、一些依賴庫,保留并改進src和include文件夾下大部分C++代碼;其次,在嵌入式平臺以JNI調(diào)用方式調(diào)用改進后的C++代碼,增加OpenCV、g2o、DBoW2、Eigen等依賴庫;最后根據(jù)處理后的關(guān)鍵幀連接繪制柵格地圖,完成實時軌跡顯示和地圖構(gòu)建。實驗結(jié)果表明,通過移植實現(xiàn)了在嵌入式開發(fā)板進行SLAM過程,硬件配置要求和成本大大降低,所構(gòu)建的柵格地圖占存量更小且更直觀反映實際環(huán)境的布局情況,地圖誤差控制在±0.5 m的較高精度范圍內(nèi),較大程度地提高了SLAM性能。

  關(guān)鍵詞:ORB-SLAM;嵌入式;移植;柵格地圖

  中圖分類號:TP242文獻標(biāo)識碼:ADOI: 10.19358/j.issn.1674-7720.2017.05.016

  引用格式:林連秀,葉蕓,姚劍敏,等.基于ORB-SLAM的移動機器人嵌入式實現(xiàn)與優(yōu)化[J].微型機與應(yīng)用,2017,36(5):50-53.

0引言

  *基金項目:福建省自然科學(xué)基金(2014J01236);福建省科技重大專項(2014HZ0003-1);福建省資助省屬高校專項課題(JK2014003).同時定位與地圖構(gòu)建(SLAM)技術(shù)是移動機器人在未知環(huán)境中,通過對環(huán)境的觀測,遞增地構(gòu)建環(huán)境地圖,并通過構(gòu)建的環(huán)境地圖實現(xiàn)對機器人的定位,它是實現(xiàn)機器人自主導(dǎo)航和定位的關(guān)鍵技術(shù)。目前實現(xiàn)SLAM的算法很多,其中ORB-SLAM以追蹤效果好、地圖精度高、定位穩(wěn)定性好等優(yōu)勢脫穎而出,成為研究熱點。

  ORB-SLAM算法由Raúl M A等人于2015年發(fā)表在IEEE Transactions on Robotics[1],且在PC的Linux系統(tǒng)上開放了開源ORB-SLAM系統(tǒng)。采用該ORB-SLAM開源算法,在PC Linux系統(tǒng)上較好實現(xiàn)了SLAM過程,但等同于PC的硬件配置需求成本高,對移動機器人普通嵌入式開發(fā)板不適用[2]。ORB-SLAM算法主要由追蹤、地圖構(gòu)建、閉環(huán)控制3個線程組成,其中地圖構(gòu)建部分平均處理每關(guān)鍵幀約385 ms,相對比較耗時,具備較大優(yōu)化空間[3]。采用ORB-SLAM開源算法所構(gòu)建的地圖是用點云圖方式顯示,點云很稀疏,不容易看出所構(gòu)建的室內(nèi)結(jié)構(gòu)[4]。對移動機器人地圖要求上,柵格地圖表示法優(yōu)于點云圖表示法,一方面可以大大節(jié)省內(nèi)存空間,另一方面也便于后續(xù)路徑規(guī)劃過程中進行碰撞檢測和空間可行性分析[5]。從硬件開發(fā)成本考慮,如若用PC進行移動機器人開發(fā),顯然只用到PC很小部分功能,造成功能浪費、成本偏高,而嵌入式開發(fā)板有著低功耗、低成本、適當(dāng)?shù)腃PU運算效能與友善的軟件接口等優(yōu)勢[6]。

  針對以上ORB-SLAM源代碼只能運行在PC而無法在嵌入式開發(fā)板上運行,且其構(gòu)建的點云圖太稀疏無法滿足移動機器人路徑規(guī)劃要求的問題,本文對此進行了較大改進,保留ORBSLAM部分源碼并做出修改,移植到嵌入式開發(fā)平臺,修改地圖構(gòu)建中的耗時部分,增加基于柵格地圖實時軌跡顯示部分。移植到普通嵌入式開發(fā)板后的ORB-SLAM,不僅大大降低了對硬件平臺的要求,還完成了基于柵格地圖的實時軌跡顯示,使地圖能清晰了然地反映實際環(huán)境的布局情況,且所建地圖控制在較高精度范圍內(nèi)。

1ORB-SLAM改進與優(yōu)化

  1.1總設(shè)計流程的改進

  本文將原PC端Linux系統(tǒng)下的ORBSLAM進行了移植和改進,最終在Android平臺完成了基于柵格地圖的軌跡繪制即完成了實時地圖構(gòu)建,改進后的總設(shè)計流程如圖1所示。

Image 001.jpg

  在上述流程圖模塊中,本文主要修改的部分是:修改所保留的ORB-SLAM原src和include文件夾下的C++代碼;在LOCAL MAPPING部分中進行了大部分刪減,只做優(yōu)化部分;刪除了原實時點云及軌跡顯示部分,在嵌入式平臺添加GRID MAP部分即基于柵格地圖的實時軌跡顯示部分。

  1.2ORB-SLAM源碼的修改

  ORB-SLAM算法的實現(xiàn)主要在src和include文件夾下,完成追蹤、地圖構(gòu)建、閉環(huán)控制和重定位等任務(wù)。本文對源碼所作的修改工作主要有:刪除MapDrawer.cc和Viewer.cc代碼即刪除軌跡、點云圖顯示部分的代碼;刪除Linux下依賴復(fù)雜的ROS系統(tǒng)部分的代碼;更換不同系統(tǒng)下的OpenCV、g2o、DBoW2、Eigen等庫;修改輸入接口,以便直接連接攝像頭在線使用;注釋掉部分代碼,包含保存當(dāng)前幀圖片、點云的代碼等。

  1.3LOCAL MAPPING部分的改進

  LOCAL MAPPING線程用于處理新的幀,更新優(yōu)化它們本地鄰近的幀。它對關(guān)鍵幀作確定新的地圖云點、更新局部區(qū)域、局部偏差調(diào)整、去除冗余關(guān)鍵幀等工作。LOCAL MAPPING在整個系統(tǒng)中耗時相對較長,其平均處理每關(guān)鍵幀要用時約385 ms,而像TRACKING平均處理每幀只要約30 ms。考慮到一方面LOCAL MAPPING相對耗時,一方面這部分作刪減后精度不會受到很大影響,這為移植到嵌入式平臺提供了一個可行之處。所以本文對LOCAL MAPPING部分中的Triangulate ORB、Update Local Area、Prune Redundant KeyFrame進行了刪減,只做優(yōu)化部分,主要部分的設(shè)計如圖2所示。

Image 002.jpg

  1.4GRID MAP部分的設(shè)計

  機器人地圖包括幾何地圖、點云地圖、拓撲地圖和柵格地圖等,其中原ORBSLAM采用點云地圖來表示,其所構(gòu)建的點云圖中點云很稀疏,完全不能看出任何結(jié)構(gòu)。而柵格地圖將環(huán)境分解成一系列具有二值信息的網(wǎng)格單元,對環(huán)境描述直觀清晰,適當(dāng)調(diào)整柵格的大小既可以降低存儲消耗,又保留環(huán)境的空間結(jié)構(gòu),同時也便于后續(xù)路徑規(guī)劃過程中進行碰撞檢測和空間可行性分析,所以本文去除點云圖表示法而改用柵格地圖表示法。本文采用的柵格地圖用黑格表示障礙物,白格表示無障礙物可通過區(qū)。GRID MAP主要部分的設(shè)計如圖3所示。

  

Image 003.jpg

  由設(shè)計圖3可知,本文設(shè)計的顯示端顯示三個部分:一是USE_CAMERA_INPUT,顯示攝像頭采集到的當(dāng)前圖像,未經(jīng)過任何處理;二是DRAW_FRAME,對當(dāng)前圖像幀進行3D ORB特征點的提取與匹配,并在窗口顯示特征點追蹤情況;三是DRAW_GRID_MAP,繪制最終處理后的所有KeyFrames,追蹤當(dāng)前KeyFrames和CameraCenter。采用柵格地圖表示法將各KeyFrames用線連起來,繞室內(nèi)全覆蓋運行即可完成最終室內(nèi)地圖的繪制,地圖以矢量形式存儲供移動機器人合理規(guī)劃路徑和重定位之用。

2實驗結(jié)果與分析

  2.1實驗硬件配置對比

Image 006.jpg

  實驗硬件配置為PC和自制的移動機器人模型,其中移動機器人模型主要用到的模塊有基于Android平臺的開發(fā)板、單目攝像頭、電機,PC和開發(fā)板參數(shù)如表1所示。PC系統(tǒng)擁有很強的運算能力,但通常只用到小部分,倘若用于機器人開發(fā)而配置一個PC,不僅眾多未開發(fā)資源被浪費,且其在購買成本、功耗性、便攜性、集成性方面都具有較大劣勢。而嵌入式開發(fā)板具有低功耗、低成本、適當(dāng)?shù)腃PU運算效能與友善的軟件接口等優(yōu)點,被稱之為低價計算機。對比表1參數(shù),將ORBSLAM從PC移植到嵌入式開發(fā)板上實現(xiàn),則大大降低了對硬件配置的要求,成本、功耗也大大降低,縮小了機器人體積,方便攜帶。

  實驗選用的單目攝像頭為小蟻攝像頭,采用 “張正友”標(biāo)定法原理,標(biāo)定模板采用包含12×12的正方塊的棋盤格,每個棋盤格大小為30 mm×30 mm,在MATLAB下運行程序載入20張不同角度、像素為640×480的棋盤格圖片進行相機標(biāo)定,標(biāo)定結(jié)果如表2所示。

Image 007.jpg

Image 009.jpg

  2.2移植后的ORB-SLAM運行結(jié)果分析

  本文建立的柵格地圖為640×960像素的地圖,占用柵格大小為30,機器人實際寬度為0.15 m,如圖4所示,白色部分為移動機器人繞室內(nèi)一圈的軌跡,完整柵格地圖即為移動機器人繞室內(nèi)全覆蓋移動,最終白色部分表示可通過區(qū),黑色部分表示障礙物區(qū)。由表3可知,地圖軌跡點與實際標(biāo)定點的誤差最大為0.539 m,其軌跡誤差一般能控制在±0.5 m的較小范圍內(nèi),約為地圖尺寸的0.78%,相比原PC Linux系統(tǒng)實現(xiàn)的軌跡誤差約為地圖尺寸的1%,誤差并未擴大反而有所縮小,即定位精度得到提高。

Image 008.jpg

  圖5為修改前所構(gòu)建的點云圖,圖中軌跡由相機位姿估計點構(gòu)成,左下圖為相機實時采集的圖像并對特征點進行提取與匹配。圖6為修改后所構(gòu)建的柵格地圖,左上圖為相機采集的原圖,左下圖為特征點提取與匹配圖,右圖為柵格地圖。首先從占存量對比分析,移動機器人按同樣路線繞室內(nèi)一圈構(gòu)建一張1 280×960的地圖,原Linux系統(tǒng)運行的ORB-SLAM所建的點云圖占存量約為4 940 KB,而移植后的柵格地圖占存約98 KB,相差大約50倍的耗存量,可見使用柵格地圖表示法在節(jié)約存儲空間上具有非常大的優(yōu)勢。再從直觀性對比分析,原Linux系統(tǒng)運行的ORB-SLAM所建的點云圖非常稀疏,只含有稀疏的地圖特征點來構(gòu)成軌跡,看不出實際空間結(jié)構(gòu)與布局,這稀疏的地圖對于機器人下一步的應(yīng)用會造成很大的困難。而基于柵格地圖繪制的ORBSLAM地圖,每個柵格可直接映射到現(xiàn)實環(huán)境的某個區(qū)域,白格表示已經(jīng)運行的可通過區(qū),黑格表示障礙物區(qū),機器人繞室內(nèi)全覆蓋一次即可直觀地得到布局情況,其所存儲的障礙信息非常便于移動機器人進行動態(tài)避障以及路徑規(guī)劃。

  

Image 010.jpg

  2.4移植前后運行指標(biāo)對比

  先對原ORB-SLAM與移植后ORB-SLAM代碼運行情況進行對比分析,本文移植過程中在同一臺PC上安裝了WIN7+Ubuntu雙系統(tǒng)用于開發(fā)ORB-SLAM,將ORB-SLAM代碼在同一臺PC上運行,原Linux系統(tǒng)CPU占用率高達約180%,移植到WIN7后CPU占用率約48%,可知原ORB-SLAM因為依賴一些Linux系統(tǒng)自帶庫使運行速度得到限制。再對LOCAL MAPPING部分運行速率進行對比,原ORB-SLAM的LOCAL MAPPING部分主要包含KeyFrame Insertion、Map Point Cullin、Map Point Creation、Local BA、KeyFrame Culling,總體運行時間約為464.27 ms。優(yōu)化后,通過減小與字典的匹配次數(shù),減小關(guān)鍵幀重新計算的次數(shù),將總體運行時間提高到約280.50 ms,刪減ORB-SLAM的LOCAL MAPPING部分速率得到40%的提升,較大程度地簡化了移植工作。

  3結(jié)論

  本文提出并實現(xiàn)了將ORB-SLAM通過改進與優(yōu)化,最終移植到嵌入式開發(fā)板完成SLAM過程,CPU占用率和運行速率得到提升,大大降低了硬件成本和配置要求。針對原點云圖太稀疏無法滿足移動機器人路徑規(guī)劃要求的問題,改用柵格地圖表示法,從而使地圖占存量縮小了約98%,且更直觀地反映了實際環(huán)境的布局情況。通過移植,最終的軌跡誤差一般能控制在±0.5 m的較小范圍內(nèi),相比原軌跡誤差得到了縮小。這種改進技術(shù)不只適用于移動機器人,同樣也適用于像VR/AR那樣需要用到嵌入式開發(fā)板來完成定位的技術(shù)領(lǐng)域。

參考文獻

  [1] RAU'L M A, MONTIEL  J M M, TARD-S J D. ORB-SLAM: a versatile and accurate monocular SLAM system[J]. IEEE Transactions on Robotics, 2015,31(5): 1147-1163.[2]RAU'L M A, TARDS J D. Probabilistic semi-dense mapping from highly accurate feature-based monocular SLAM[C]. Robotics: Science and Systems, 2015.

  [3] RAU'L M A, TARD-S J D. ORB-SLAM: tracking and mapping recognizable features[C]. RSS 14 Workshop on Multi VIew Geometry in RObotics (MVIGRO), 2014.

  [4] RAU'L M A, TARD-S J D. Fast relocalisation and loop closing in keyframe-based SLAM[C]. IEEE International Conference on Robotics and Automation (ICRA), June 2014.

  [5] 張彪,曹其新,王雯珊. 使用三維柵格地圖的移動機器人路徑規(guī)劃[J]. 西安交通大學(xué)學(xué)報,2013,47(10): 5761.

  [6] 金麗科技.讓嵌入式Linux變身為低價計算機(上)[J]. 電子與電腦,2007,14(5):6164.


此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
亚洲精品在线观看免费| 亚洲视频一区二区| 国产精品啊v在线| 欧美国产成人精品| 久久免费国产精品| 亚洲欧美亚洲| 亚洲影院污污.| 一区二区电影免费在线观看| 亚洲三级免费电影| 亚洲国产成人精品久久| 久久gogo国模啪啪人体图| 亚洲欧美日韩国产一区| 亚洲无玛一区| 亚洲永久视频| 亚洲一区二区三区在线看| 一本到高清视频免费精品| 亚洲国产天堂久久综合网| 亚洲高清不卡一区| 亚洲电影免费观看高清| 在线观看视频一区| 韩国女主播一区| 国内精品久久久久影院色| 国产一区二区精品久久99| 国产区日韩欧美| 国产精品一区在线观看| 国产精品一区二区三区四区| 国产精品国产三级国产aⅴ浪潮 | 欧美日本精品一区二区三区| 欧美激情麻豆| 欧美日韩国产在线看| 欧美日韩亚洲高清| 国产精品久久久一区二区三区| 国产精品乱码久久久久久| 国产精品自在欧美一区| 国产主播一区| 亚洲国产高清aⅴ视频| 亚洲精品国产精品国自产观看浪潮 | 日韩视频一区二区| 中文av字幕一区| 亚洲男人av电影| 久久精品人人做人人爽| 欧美 日韩 国产 一区| 欧美精品一区二区蜜臀亚洲| 欧美午夜片在线免费观看| 国产精品一区二区三区四区五区 | 精品不卡在线| 亚洲精选中文字幕| 亚洲永久字幕| 亚洲福利电影| 一区二区精品在线观看| 亚洲欧美成人网| 久久久噜噜噜久久中文字幕色伊伊| 免费一级欧美片在线播放| 欧美日韩黄视频| 国产丝袜美腿一区二区三区| 亚洲成人在线视频播放| 一本综合久久| 久久国产天堂福利天堂| 夜夜夜精品看看| 欧美一区二视频在线免费观看| 久久综合九色| 欧美丝袜第一区| 国内精品久久久久久| 日韩视频一区二区在线观看| 翔田千里一区二区| 一本久久青青| 久久久.com| 欧美日韩国产综合视频在线| 国产一区二区激情| 亚洲免费电影在线观看| 欧美一区二区国产| 日韩亚洲成人av在线| 欧美在线亚洲一区| 欧美国产视频日韩| 国产一区二区三区黄| 99国产精品久久久久久久久久| 午夜精品视频| 99视频日韩| 另类春色校园亚洲| 国产精品欧美风情| 91久久精品日日躁夜夜躁欧美| 午夜精品理论片| 欧美一区二区黄| 亚洲专区一区二区三区| 免费视频亚洲| 国产日韩精品视频一区| 夜夜嗨av一区二区三区网站四季av | 久久久美女艺术照精彩视频福利播放| 欧美日韩亚洲视频| 尤物精品在线| 亚洲欧美在线免费| 亚洲婷婷免费| 欧美成人一二三| 国产一区二区三区日韩欧美| 一本色道久久88综合日韩精品 | 免费观看30秒视频久久| 国产精品有限公司| 9l视频自拍蝌蚪9l视频成人 | 亚洲免费福利视频| 老司机免费视频一区二区三区| 国产精品视频yy9099| 亚洲精品一级| 亚洲三级影院| 久久久噜噜噜久久久| 国产日韩欧美三级| 亚洲一区观看| 亚洲自拍偷拍网址| 欧美日韩日本国产亚洲在线| 亚洲国产成人午夜在线一区| 亚洲国产精品成人| 久久夜色精品亚洲噜噜国产mv| 国产精品一二三四| 亚洲一区二区网站| 亚洲一区二区三区久久| 欧美日韩国产麻豆| 亚洲日本欧美| 亚洲看片免费| 欧美激情亚洲精品| 亚洲国产精品久久久久秋霞蜜臀| 久久精品一区二区三区中文字幕 | 91久久精品国产91久久| 亚洲久色影视| 欧美伦理a级免费电影| 亚洲日本黄色| 一区二区欧美日韩| 欧美日韩亚洲一区二| 日韩视频免费观看高清在线视频| av72成人在线| 欧美日韩视频一区二区| 99re6热只有精品免费观看| 99精品视频一区二区三区| 欧美诱惑福利视频| 国产美女一区| 欧美一区免费视频| 久久免费少妇高潮久久精品99| 国产视频欧美| 久久成人羞羞网站| 久热国产精品视频| 亚洲电影第三页| 日韩亚洲欧美中文三级| 欧美另类一区二区三区| 一区二区三区福利| 亚洲欧美日产图| 国产欧美日本| 久久精品国产亚洲高清剧情介绍| 久久久青草青青国产亚洲免观| 狠狠v欧美v日韩v亚洲ⅴ| 亚洲国产成人不卡| 欧美精品亚洲| 在线视频亚洲欧美| 欧美一区二区高清| 国内久久精品| 亚洲精品日韩久久| 欧美日韩免费区域视频在线观看| 一区二区三区欧美在线| 先锋亚洲精品| 一区视频在线| 99亚洲伊人久久精品影院红桃| 欧美视频日韩视频在线观看| 亚洲免费婷婷| 麻豆精品网站| 9色国产精品| 欧美在线视频一区| 亚洲韩日在线| 亚洲欧美日韩精品久久亚洲区| 国产婷婷色一区二区三区在线| 亚洲国产精品成人综合色在线婷婷 | 91久久久国产精品| 欧美午夜免费电影| 亚洲二区在线观看| 欧美亚州在线观看| 久久精品理论片| 欧美日韩亚洲高清| 久久精品一区二区三区不卡牛牛| 欧美日韩国产电影| 欧美一区二区精品| 欧美视频官网| 亚洲高清三级视频| 欧美性久久久| 亚洲国产精品视频一区| 国产精品国内视频| 亚洲清纯自拍| 国产女主播在线一区二区| 亚洲精品综合精品自拍| 国产乱码精品| 在线视频日本亚洲性| 国内精品视频在线观看| 亚洲综合欧美日韩| 亚洲国产高清自拍| 久久成人精品无人区| 亚洲裸体视频| 美国三级日本三级久久99| 亚洲一区在线直播| 欧美激情按摩在线| 欧美一区二区三区精品电影| 欧美日韩三级视频| 亚洲激情视频在线播放| 国产精品男gay被猛男狂揉视频| 亚洲国产精品第一区二区三区 | 国产精品狼人久久影院观看方式|