機 械 工 業(yè) 出 版 社本書是“十三五”江蘇省高等學校重點教材。全書貫徹“理論與實際相結合,教學與實踐相統(tǒng)一,緊跟當前SLAM研究重點”的思想,以ROS系統(tǒng)作為平臺,以Turtlebot機器人為載體,以實際應用為紐帶,在ROS系統(tǒng)中實現(xiàn)各種SLAM算法。
全書共分為5章。第1章介紹SLAM的基本定義、分類及其數(shù)學模型,對ROS系統(tǒng)進行簡要描述,分析在ROS系統(tǒng)下基于激光特征點的SLAM技術和基于視覺的SLAM技術的特點。第2章詳細分析一些典型的基于矢量的SLAM算法和基于隨機有限集的SLAM算法的基本原理及其實現(xiàn)。第3章給出ROS系統(tǒng)的詳細安裝步驟以及部分常用的ROS系統(tǒng)基本操作命令,并以Turtlebot機器人為載體進行基礎功能包的安裝和測試。第4章首先介紹用于SLAM的ROS相關工具及其使用,然后分別介紹基于激光雷達的Gmapping、Hector SLAM、Cartographer的原理,以及在機器人Turtlebot上的算法實現(xiàn)。第5章介紹基于視覺的MonoSLAM、ORB-SLAM2工作原理及其實現(xiàn)步驟,同時介紹多機器人視覺SLAM系統(tǒng)和地圖融合實現(xiàn)過程。
本書可作為機器人工程、自動化、機械電子工程、智能制造工程等相關專業(yè)高年級本科生或者研究生的教材,也可供相關工程技術人員參考。
本書結合編者多年科研成果以及應用型本科課程教學經(jīng)驗撰寫而成,內(nèi)容新穎,覆蓋面廣,將科研成果分結構、分層次地融入到知識體系之中,同時還吸納了國內(nèi)外該領域的眾多代表性成果。
隨著無人駕駛、機器人自主探測、智能物流配送等應用越來越廣泛,定位與地圖構建(Simultaneous Localization and Mapping,SLAM)作為這些應用的基礎,成為目前的研究熱點。SLAM相關的研究有很多,許多方法也得到了實際的應用,相應的出版物也較多,但關于所涉及的方法、技術的系統(tǒng)性與可操作性等方面的書籍仍然非常缺乏。
本書結合編者多年科研成果以及應用型本科課程教學經(jīng)驗撰寫而成,內(nèi)容新穎,覆蓋面廣,將科研成果分結構、分層次地融入到知識體系之中,同時還吸納了國內(nèi)外該領域的眾多代表性成果。本書在注重理論知識的同時,以ROS系統(tǒng)作為平臺,以Turtlebot機器人為載體,實現(xiàn)相應的SLAM算法,以求理論與實際相結合,緊跟當前SLAM的前沿研究成果。在講解算法原理的同時,以實際應用為紐帶,在ROS系統(tǒng)中實現(xiàn)相應算法,使讀者能夠快速地理解和掌握相關內(nèi)容。本書可作為機器人工程、自動化、機械電子工程、智能制造工程等相關專業(yè)高年級本科生或者研究生的教材,也可供相關工程技術人員參考。
本書的編寫隊伍由具有科研與工程經(jīng)驗的一線教師組成。全書共分為5章,由徐本連教授統(tǒng)稿并審定。 第1章介紹SLAM的基本定義、分類及其數(shù)學模型,對ROS系統(tǒng)進行簡要描述,分析在ROS系統(tǒng)下基于激光特征點的SLAM技術和基于視覺的SLAM技術的特點,本章主要由徐本連教授完成。第2章詳細分析一些典型的基于矢量的SLAM算法和基于隨機有限集的SLAM算法的基本原理及其實現(xiàn),本章主要由魯明麗教授、 徐本連教授完成。第3章給出ROS系統(tǒng)的詳細安裝步驟以及部分常用的ROS系統(tǒng)基本操作命令,并以Turtlebot機器人為載體進行基礎功能包的安裝和測試,本章主要由魯明麗教授、趙彩虹副教授完成。第4章介紹用于SLAM的ROS相關工具及其使用,以及基于激光雷達的Gmapping、Hector、Cartographer的原理,并在機器人Turtlebot上對這三種算法進行功能實現(xiàn),本章主要由魯明麗教授、袁儒鵬博士完成。 第5章主要介紹基于視覺的MonoSLAM、ORB-SLAM2工作原理及其實現(xiàn)步驟,同時介紹多機器人視覺SLAM系統(tǒng)和地圖融合實現(xiàn)過程,本章主要由魯明麗教授、從金亮博士完成。施健、李震、孫士秦、趙康也參與了本書的編寫。同時特別感謝清華大學王凌教授在百忙中審閱書稿并提出寶貴的修改建議。
由于編者水平有限,書中難免有不妥之處,敬請廣大讀者批評指正。
編者
前言
高等院校教師
第1章緒論1
1.1SLAM簡介1
1.1.1SLAM的基本定義1
1.1.2SLAM的分類3
1.2ROS簡介5
1.3基于ROS系統(tǒng)的SLAM技術6
1.3.1基于激光的SLAM技術7
1.3.2基于視覺的SLAM技術8
1.4SLAM技術的未來發(fā)展13
1.5本章小結14
參考文獻14
第2章SLAM算法簡介與實現(xiàn)15
2.1SLAM算法簡介15
2.1.1SLAM算法分類15
2.1.2不同種類SLAM算法的
特點16
2.2基于矢量的SLAM經(jīng)典算法19
2.2.1EKF-SLAM算法基本原理19
2.2.2EKF-SLAM算法的MATLAB
仿真驗證23
2.2.3FastSLAM算法基本原理23
2.2.4FastSLAM算法的MATLAB
仿真27
2.3基于隨機有限集的SLAM算法27
2.3.1隨機有限集27
2.3.2基于隨機有限集的SLAM28
2.3.3PHD-SLAM算法基本原理29
2.3.4PHD-SLAM算法的MATLAB
仿真驗證33
2.4本章小結34
參考文獻34
第3章基于ROS系統(tǒng)的SLAM
技術36
3.1ROS系統(tǒng)36
3.1.1ROS的版本介紹和安裝38
3.1.2ROS文件系統(tǒng)級45
3.1.3ROS計算圖級47
3.1.4ROS開源社區(qū)級50
3.2ROS系統(tǒng)基本操作51
3.2.1創(chuàng)建工作空間51
3.2.2創(chuàng)建ROS功能包及功能包
編譯52
3.2.3ROS節(jié)點的使用53
3.2.4ROS主題與節(jié)點的交互55
3.2.5ROS服務的使用57
3.2.6節(jié)點的創(chuàng)建和編譯58
3.2.7服務和消息文件的創(chuàng)建和
使用62
3.2.8Launch啟動文件68
3.3基于ROS系統(tǒng)的機器人實踐69
3.3.1Turtlebot介紹69
3.3.2Turtlebot功能包安裝和
配置71
3.3.3機器人底盤測試73
3.3.4機器人傳感器測試73
3.3.5機器人跟隨功能實現(xiàn)74
3.3.6基于ROS的多機通信配置75
3.4基于ROS系統(tǒng)的SLAM開源
方案78
3.4.1基于激光雷達的SLAM
算法78
3.4.2基于視覺的SLAM算法79
3.5本章小結80
參考文獻81
第4章激光SLAM技術82
4.1ROS相關工具的使用82
4.1.1rviz和Gazebo的簡介82
4.1.2Gazebo的使用83
4.1.3rviz的使用85
4.1.4Turtlebot機器人在Gazebo中的
仿真87
4.1.5Turtlebot機器人在rviz中的
顯示89
4.2激光雷達傳感器89
4.2.1激光雷達探測原理89
4.2.2基于ROS的激光雷達驅動
安裝90
4.3基于激光的Gmapping算法91
4.3.1Gmapping背景91
4.3.2Gmapping算法原理92
4.3.3Gmapping功能包的安裝95
4.3.4Gmapping算法在Turtlebot上的
實現(xiàn)98
4.4基于激光的Hector SLAM算法101
4.4.1Hector SLAM背景101
4.4.2Hector SLAM算法原理102
4.4.3Hector SLAM功能包的
安裝105
4.4.4Hector SLAM算法在Turtlebot上
的實現(xiàn)107
4.5基于激光的Cartographer算法109
4.5.1Cartographer背景109
4.5.2Cartographer算法原理110
4.5.3Cartographer功能包的
安裝113
4.5.4Cartographer算法在Turtlebot
上的實現(xiàn)117
4.6本章小結123
參考文獻124
第5章視覺SLAM技術125
5.1經(jīng)典視覺SLAM框架125
5.2視覺傳感器及其基礎算法126
5.2.1視覺傳感器126
5.2.2視覺里程計129
5.2.3后端優(yōu)化137
5.2.4回環(huán)檢測140
5.3MonoSLAM算法144
5.3.1MonoSLAM背景144
5.3.2MonoSLAM算法145
5.3.3MonoSLAM功能包的安裝150
5.3.4MonoSLAM實現(xiàn)152
5.4ORB-SLAM2算法155
5.4.1ORB-SLAM2背景155
5.4.2ORB-SLAM2算法155
5.4.3ORB-SLAM2功能包的
安裝162
5.4.4ORB-SLAM2在Turtlebot上的
實現(xiàn)166
5.5多機器人視覺SLAM技術簡介171
5.5.1多機器人系統(tǒng)171
5.5.2機器人相互識別173
5.5.3地圖融合策略177
5.5.4地圖融合182
5.6本章小結182
參考文獻182目錄