目前ROS(Robot Operating System)正逐步成為機(jī)器人開發(fā)領(lǐng)域的主要工具平臺,同時SLAM技術(shù)也日益成為機(jī)器人應(yīng)用領(lǐng)域的研究熱點。本書主要講解ROS編程與SLAM算法,并介紹 ROS 與機(jī)器人仿真軟件V-rep的結(jié)合應(yīng)用。書中各章節(jié)所涉及的代碼均有對應(yīng)的源代碼,可供讀者下載,便于調(diào)試與應(yīng)用。
本書以作者在機(jī)器人開發(fā)過程中遇到的問題及相關(guān)解決方案為基礎(chǔ),深入淺出地介紹了ROS的基礎(chǔ)知識以及使用方法。
本書的創(chuàng)新之處在于提供了結(jié)合ROS進(jìn)行機(jī)器人開發(fā)的V-rep環(huán)境。國內(nèi)有關(guān)該軟件的中文資料較少,與ROS結(jié)合進(jìn)行開發(fā)的資料更是稀缺。本書結(jié)合ROS與V-rep這兩款優(yōu)秀的機(jī)器人開發(fā)軟件,為讀者提供了建圖和導(dǎo)航實現(xiàn)的項目實例。
本書包含以下內(nèi)容:
·ROS開發(fā)的基礎(chǔ)知識及常用調(diào)試工具。
·SLAM功能包源碼解讀及自定義功能包再現(xiàn)建圖過程。
·Navigation功能包解讀及相關(guān)算法。
·ROS與V-rep聯(lián)合開發(fā)實現(xiàn)機(jī)器人建圖與導(dǎo)航。
主編:
陶滿禮,碩士,畢業(yè)于東北大學(xué)機(jī)械工程與自動化學(xué)院機(jī)械電子工程專業(yè)。曾先后在沈陽新松機(jī)器人自動化股份有限公司服務(wù)機(jī)器人事業(yè)部擔(dān)任軟件工程師,在北京天下宏圖空間信息技術(shù)有限公司擔(dān)任視覺算法工程師。主要研究方向為機(jī)器人激光SLAM與Navigation路徑規(guī)劃算法研究、三維點云及深度學(xué)習(xí)在物體識別與定位領(lǐng)域的應(yīng)用。
參編:
夏麗娟,東北大學(xué)工商管理學(xué)院企業(yè)管理專業(yè)碩士,遼寧大學(xué)商學(xué)院企業(yè)管理專業(yè)學(xué)士。主要研究方向為綠色供應(yīng)鏈管理、復(fù)雜網(wǎng)絡(luò)研究、項目管理、供應(yīng)鏈系統(tǒng)的數(shù)學(xué)建模及算例分析應(yīng)用。
張志飛,碩士,畢業(yè)于東北大學(xué)機(jī)械工程與自動化學(xué)院,沈陽新松機(jī)器人自動化股份有限公司智能交通事業(yè)部工程師。主要從事機(jī)器人產(chǎn)品開發(fā)及ROS相關(guān)研究,包括Delta并聯(lián)機(jī)器人無傳感器力位混合控制及輪式掛軌巡檢機(jī)器人等產(chǎn)品的研發(fā)。
夏文杰,學(xué)士,畢業(yè)于中國民航大學(xué),主要從事互聯(lián)網(wǎng)軟件產(chǎn)品研發(fā)工作,包括產(chǎn)品定義、方案輸出、過程管控及持續(xù)更新迭代,熟悉人工智能在智慧零售領(lǐng)域的應(yīng)用,對人工智能在零售領(lǐng)域的應(yīng)用具有豐富的實戰(zhàn)經(jīng)驗。
第 1章 ROS簡介 1
1.1 ROS概述 2
1.2 Ubuntu系統(tǒng) 3
1.2.1 Ubuntu系統(tǒng)的安裝 3
1.2.2 樹莓派安裝Ubuntu 10
1.3 ROS的安裝 11
1.4 常用的操作命令 13
1.4.1 Ubuntu系統(tǒng)的常用命令 13
1.4.2 常用的ROS操作命令 14
第 2章 ROS基礎(chǔ) 15
2.1 開發(fā)工具IDE 16
2.1.1 RoboWare Studio的安裝 16
2.1.2 卸載 17
2.1.3 使用 18
2.2 節(jié)點 22
2.2.1 發(fā)布端 23
2.2.2 接收端 24
2.2.3 CMakeLists.txt文件 24
2.2.4 測試 25
2.3 消息 26
2.3.1 自定義消息 26
2.3.2 編寫自定義消息發(fā)布端 27
2.3.3 編寫自定義消息接收端 28
2.3.4 CMakeLists.txt文件 29
2.3.5 測試 30
2.4 服務(wù) 31
2.4.1 服務(wù)通信 31
2.4.2 自定義srv 31
2.4.3 創(chuàng)建服務(wù)器 32
2.4.4 創(chuàng)建客戶端 33
2.4.5 CMakeLists.txt文件 34
2.4.6 測試 35
2.5 參數(shù) 36
2.5.1 編寫參數(shù)設(shè)置獲取節(jié)點 36
2.5.2 CMakeLists.txt文件 39
2.5.3 測試 39
2.6 動態(tài)參數(shù)設(shè)置 41
2.6.1 創(chuàng)建cfg文件 41
2.6.2 創(chuàng)建動態(tài)參數(shù)設(shè)置可執(zhí)行文件 42
2.6.3 CMakeLists.txt文件 43
2.6.4 測試 44
2.7 ROS類編程思想 45
2.7.1 創(chuàng)建類頭文件 45
2.7.2 創(chuàng)建類應(yīng)用可執(zhí)行文件 47
2.7.3 CMakeLists.txt文件 49
2.7.4 測試 50
第3章 調(diào)試及仿真工具 52
3.1 Rviz 53
3.2 Gazebo 56
3.2.1 安裝與更新 57
3.2.2 Gazebo環(huán)境 58
3.2.3 選項卡與工具條 59
3.2.4 模擬場景組成元素 62
3.2.5 搭建簡單機(jī)器人模型 64
3.3 rqt的調(diào)試 72
3.4 rosbag的使用 76
3.5 rosbridge的開發(fā) 78
3.5.1 rosbridge_suite的安裝 78
3.5.2 測試html通信 79
第4章 TF簡介及應(yīng)用 87
4.1 TF包概述 88
4.2 TF包的簡單使用 88
4.3 編寫TF發(fā)布與接收程序 93
第5章 SLAM簡介及應(yīng)用 100
5.1 SLAM概述 101
5.2 gmapping建圖功能應(yīng)用 102
5.3 ROS gmapping功能包解讀 103
5.4 openslam源碼解讀 108
5.5 ROS建圖實戰(zhàn) 119
5.5.1 ROS地圖發(fā)布 119
5.5.2 TF坐標(biāo)變換發(fā)布 124
5.5.3 模擬激光數(shù)據(jù) 126
5.5.4 建圖 129
5.5.5 建圖測試 138
第6章 ROS navigation及算法簡介 140
6.1 ROS navigation stack概述 141
6.2 move_base的配置 142
6.3 navigation源碼解讀 150
6.4 A-Star算法原理與實現(xiàn) 155
6.5 dwa算法 166
第7章 基于V-rep的ROS開發(fā) 176
7.1 V-rep機(jī)器人仿真軟件概述 177
7.1.1 V-rep與Gazebo的區(qū)別 178
7.1.2 V-rep與ROS通信機(jī)制 178
7.2 V-rep安裝與ROS配置 179
7.2.1 環(huán)境要求 179
7.2.2 V-rep的安裝 179
7.2.3 配置RosInterface 180
7.3 運(yùn)行V-rep自帶ROS控制場景 182
7.3.1 熟悉V-rep基本操作 182
7.3.2 運(yùn)行ROS控制場景 183
7.3.3 ROS發(fā)送數(shù)據(jù)到V-rep 185
7.4 V-rep環(huán)境搭建與ROS控制開發(fā) 190
7.4.1 V-rep環(huán)境搭建 190
7.4.2 激光雷達(dá)ROS參數(shù)配置 199
7.5 V-rep與ROS聯(lián)合仿真實驗 201
7.5.1 gmapping建圖測試 201
7.5.2 導(dǎo)航測試 204