機(jī)器人操作系統(tǒng)ROS應(yīng)用實(shí)踐
定 價(jià):79.9 元
- 作者:彭剛 等
- 出版時(shí)間:2023/7/1
- ISBN:9787121386022
- 出 版 社:電子工業(yè)出版社
- 中圖法分類:TP242
- 頁碼:352
- 紙張:
- 版次:01
- 開本:16開
越來越多的機(jī)器人正走向人們的生活及生產(chǎn)環(huán)境,機(jī)器人操作系統(tǒng)(Robot Operating System,ROS)作為一種重要的軟件開發(fā)框架,提高了機(jī)器人系統(tǒng)的開發(fā)與部署效率,在分工協(xié)作、軟件維護(hù)和系統(tǒng)擴(kuò)展中具有重要意義。本書以任務(wù)為驅(qū)動,按照工作導(dǎo)向的思路展開教學(xué)與實(shí)踐學(xué)習(xí),通過“學(xué)中做、做中學(xué)”的方式,循序漸進(jìn)地介紹機(jī)器人操作系統(tǒng)應(yīng)用開發(fā)方法,通過構(gòu)思、設(shè)計(jì)、實(shí)施和運(yùn)行多個(gè)環(huán)節(jié),構(gòu)建基于傳感器的智能機(jī)器人系統(tǒng)。本書內(nèi)容全面,包括機(jī)器人系統(tǒng)組成、將機(jī)器人連接到ROS、建立機(jī)器人系統(tǒng)模型、移動機(jī)器人激光SLAM、移動機(jī)器人自主導(dǎo)航、基于多傳感器的SLAM、機(jī)械臂運(yùn)動控制、計(jì)算機(jī)視覺、基于視覺的機(jī)械臂抓取、移動機(jī)器人視覺SLAM、ROS 2.0介紹與編程基礎(chǔ)等內(nèi)容,有利于讀者掌握ROS原理與應(yīng)用實(shí)踐開發(fā)方法,培養(yǎng)軟件全棧開發(fā)能力。 本書通俗易懂、內(nèi)容豐富,是作者團(tuán)隊(duì)多年機(jī)器人科研項(xiàng)目和產(chǎn)品開發(fā)的積累,書中提供了大量的實(shí)例代碼供讀者學(xué)習(xí)研究。 本書可作為高等院校自動化、機(jī)器人工程、人工智能、機(jī)電一體化等相關(guān)專業(yè)的“機(jī)器人系統(tǒng)原理”“機(jī)器人操作系統(tǒng)”“機(jī)器人系統(tǒng)應(yīng)用開發(fā)”課程的教材和教學(xué)參考書,也可以作為工程實(shí)訓(xùn)與學(xué)科競賽的實(shí)踐教材和實(shí)驗(yàn)配套教材,同時(shí)還可供廣大希望從事機(jī)器人系統(tǒng)開發(fā)和設(shè)計(jì)的工程技術(shù)人員、教師或者個(gè)人參考。
彭剛,博士,研究方向?yàn)橹悄軝C(jī)器人與智能制造系統(tǒng)、基于傳感器融合的智能感知與控制等,長期從事機(jī)器人智能控制、多傳感器集成與信息融合、智能駕駛及人機(jī)協(xié)作共融機(jī)器人系統(tǒng)的教學(xué)、科研和開發(fā)工作。主編3部中文著作和1部英文著作,在IEEE Transactions等機(jī)器人和自動化領(lǐng)域的國際期刊發(fā)表多篇論文,獲授權(quán)發(fā)明專利40余項(xiàng),主持完成了多項(xiàng)科技成果產(chǎn)品轉(zhuǎn)化。
目 錄
第1章 機(jī)器人系統(tǒng)組成 1
1.1 移動底盤和機(jī)械臂 1
1.1.1 移動底盤 1
1.1.2 機(jī)械臂 4
1.2 機(jī)器人系統(tǒng)的硬件組成 6
1.2.1 控制系統(tǒng) 6
1.2.2 驅(qū)動系統(tǒng) 7
1.2.3 執(zhí)行機(jī)構(gòu) 7
1.2.4 傳感系統(tǒng) 8
1.3 傳感器說明與功能介紹 8
1.3.1 編碼器 8
1.3.2 慣性測量單元 9
1.3.3 激光雷達(dá) 10
1.3.4 相機(jī) 13
1.3.5 紅外傳感器 14
1.3.6 超聲波傳感器 14
1.3.7 毫米波雷達(dá) 15
1.3.8 碰撞傳感器 16
1.3.9 多傳感器融合 16
1.4 機(jī)器人系統(tǒng)的軟件組成 17
1.4.1 操作系統(tǒng) 17
1.4.2 應(yīng)用軟件 17
任務(wù) 遠(yuǎn)程桌面連接:使用Spark機(jī)器人平臺 17
1.5 本章小結(jié) 20
擴(kuò)展閱讀 20
練習(xí)題 20
第2章 將機(jī)器人連接到ROS 22
2.1 初識ROS 22
2.1.1 ROS起源 22
2.1.2 ROS架構(gòu) 22
2.1.3 ROS特點(diǎn) 24
2.2 如何安裝ROS 24
2.2.1 操作系統(tǒng)和ROS版本 24
2.2.2 Linux基礎(chǔ)簡介 25
2.2.3 ROS安裝 29
2.2.4 設(shè)置環(huán)境變量 30
2.2.5 驗(yàn)證安裝 31
2.3 ROS文件系統(tǒng)與通信機(jī)制 31
2.3.1 文件系統(tǒng) 31
2.3.2 ROS通信及其工作機(jī)制 33
2.4 編寫第一個(gè)ROS程序 38
2.4.1 ROS功能包依賴管理 38
2.4.2 ROS工作空間 39
2.4.3 功能包創(chuàng)建與編譯 42
任務(wù)1 運(yùn)行一個(gè)簡單ROS程序 48
2.4.4 ROS 節(jié)點(diǎn)的編寫規(guī)則 50
2.4.5 運(yùn)行節(jié)點(diǎn)的兩種途徑 52
2.4.6 launch文件 53
2.4.7 坐標(biāo)變換基礎(chǔ) 54
任務(wù)2 讓小海龜跑起來 58
2.5 ROS常用組件 59
2.5.1 可視化工具 60
2.5.2 rosbag數(shù)據(jù)記錄與回放 62
2.5.3 ROS調(diào)試工具箱 64
2.6 Spark底盤控制 66
任務(wù)3 讓Spark機(jī)器人運(yùn)動起來 67
2.7 ROS外接設(shè)備介紹 69
2.7.1 遙控手柄 69
2.7.2 激光雷達(dá) 72
2.7.3 視覺傳感器 74
2.7.4 慣性測量單元與定位模塊 76
2.7.5 伺服電機(jī) 78
2.7.6 嵌入式控制器 79
2.8 本章小結(jié) 80
擴(kuò)展閱讀 80
練習(xí)題 80
第3章 建立機(jī)器人系統(tǒng)模型 81
3.1 移動底盤運(yùn)動模型與控制 81
3.1.1 移動機(jī)器人運(yùn)動模型與位置表示 81
3.1.2 URDF建模 85
3.1.3 機(jī)器人狀態(tài)發(fā)布 97
3.1.4 移動底盤運(yùn)動控制 99
任務(wù)1 控制ROS仿真機(jī)器人與真實(shí)機(jī)器人同步運(yùn)動 103
3.2 基于激光雷達(dá)的環(huán)境感知 105
3.2.1 rplidar功能包 105
3.2.2 hector_mapping介紹 107
3.2.3 hector_mapping的使用 108
任務(wù)2 小車運(yùn)動時(shí)的點(diǎn)云數(shù)據(jù) 110
3.3 本章小結(jié) 111
參考文獻(xiàn) 111
擴(kuò)展閱讀 111
練習(xí)題 112
第4章 移動機(jī)器人激光SLAM 113
4.1 SLAM基本原理 113
4.1.1 SLAM概述 113
4.1.2 移動機(jī)器人坐標(biāo)系 114
任務(wù)1 機(jī)器人坐標(biāo)變換 115
4.1.3 ROS導(dǎo)航與定位過程 119
4.1.4 環(huán)境建圖與位姿估計(jì) 120
4.2 Gmapping算法 121
4.2.1 原理分析 122
4.2.2 實(shí)施流程 122
任務(wù)2 基于Gmapping算法的激光2D建圖 123
4.3 Hector SLAM算法 125
4.3.1 原理分析 125
任務(wù)3 基于Hector SLAM算法的激光2D建圖 127
4.3.2 建圖結(jié)果 128
4.4 本章小結(jié) 129
參考文獻(xiàn) 129
擴(kuò)展閱讀 130
練習(xí)題 130
第5章 移動機(jī)器人自主導(dǎo)航 131
5.1 基于地圖的定位 131
5.1.1 蒙特卡羅定位 131
5.1.2 自適應(yīng)蒙特卡羅定位 133
任務(wù)1 移動機(jī)器人定位 137
5.2 基于地圖的自主導(dǎo)航 139
5.2.1 導(dǎo)航框架 139
5.2.2 全局路徑規(guī)劃 140
5.2.3 局部路徑規(guī)劃 145
5.2.4 導(dǎo)航功能包 151
任務(wù)2 移動機(jī)器人導(dǎo)航 157
5.3 本章小結(jié) 159
參考文獻(xiàn) 159
擴(kuò)展閱讀 160
練習(xí)題 160
第6章 基于多傳感器的SLAM 161
6.1 慣性測量單元模型與標(biāo)定 161
6.1.1 慣性測量單元測量模型 162
6.1.2 系統(tǒng)誤差的預(yù)標(biāo)定 162
6.1.3 隨機(jī)誤差的預(yù)標(biāo)定 164
6.2 激光雷達(dá)與IMU的外參標(biāo)定 165
6.3 差速輪式移動機(jī)器人的運(yùn)動里程計(jì)模型 167
6.4 基于卡爾曼濾波的多傳感器融合 169
任務(wù)1 基于濾波器的SLAM算法 170
6.5 Cartographer算法 172
6.5.1 原理分析 173
任務(wù)2 基于圖優(yōu)化的SLAM 174
6.5.2 建圖結(jié)果 178
6.6 本章小結(jié) 179
參考文獻(xiàn) 179
擴(kuò)展閱讀 180
練習(xí)題 180
第7章 機(jī)械臂運(yùn)動控制 181
7.1 機(jī)械臂建模 181
7.1.1 ROS中常用的機(jī)械臂 181
7.1.2 機(jī)械臂URDF模型 182
7.1.3 機(jī)械臂URDF建模 184
7.2 機(jī)械臂控制——MoveIt 188
7.2.1 MoveIt簡介 188
7.2.2 Setup Assistant配置機(jī)械臂 188
7.2.3 MoveIt可視化控制 193
7.2.4 機(jī)械臂運(yùn)動學(xué) 194
任務(wù)1 讓機(jī)械臂動起來——MoveIt與Gazebo仿真 198
7.3 MoveIt編程——機(jī)械臂運(yùn)動規(guī)劃 202
7.3.1 關(guān)節(jié)空間運(yùn)動規(guī)劃 202
7.3.2 工作空間運(yùn)動規(guī)劃 204
7.3.3 笛卡爾空間運(yùn)動規(guī)劃 207
7.3.4 機(jī)械臂碰撞檢測 211
任務(wù)2 數(shù)字孿生——真實(shí)機(jī)械臂與仿真機(jī)械臂同步運(yùn)動 214
7.4 本章小結(jié) 216
參考文獻(xiàn) 216
擴(kuò)展閱讀 217
練習(xí)題 217
第8章 計(jì)算機(jī)視覺 218
8.1 認(rèn)識OpenCV 218
8.1.1 安裝OpenCV 218
8.1.2 使用OpenCV 218
8.2 單目視覺傳感器的使用 220
任務(wù)1 圖像采集 220
8.3 相機(jī)標(biāo)定 221
8.3.1 針孔相機(jī)模型 222
8.3.2 畸變模型 224
8.3.3 相機(jī)標(biāo)定的原理和過程 225
8.3.4 相機(jī)標(biāo)定功能包 227
8.4 圖像變換與處理 230
8.4.1 透視變換 230
8.4.2 圖像匹配 233
8.4.3 圖像拼接 234
8.5 常見的圖像特征點(diǎn)檢測算法 235
8.5.1 SIFT算法 235
8.5.2 SURF算法 239
8.5.3 FAST算法 243
8.5.4 ORB算法 245
8.6 目標(biāo)識別 247
任務(wù)2 基于單目相機(jī)的物體識別 247
8.7 本章小結(jié) 252
參考文獻(xiàn) 252
擴(kuò)展閱讀 253
練習(xí)題 253
第9章 基于視覺的機(jī)械臂抓取 254
9.1 深度相機(jī) 254
9.1.1 雙目相機(jī)和RGB-D深度相機(jī) 254
9.1.2 雙目相機(jī)模型和RGB-D深度相機(jī)模型 257
任務(wù)1 深度相機(jī)驅(qū)動安裝 259
9.2 基于深度學(xué)習(xí)的物體識別 260
9.2.1 基于卷積神經(jīng)網(wǎng)絡(luò)的物體識別 260
9.2.2 常見深度學(xué)習(xí)框架 265
任務(wù)2 基于卷積神經(jīng)網(wǎng)絡(luò)的物體識別實(shí)現(xiàn) 266
9.3 手眼標(biāo)定原理和過程 267
任務(wù)3 機(jī)器人手眼視覺外參標(biāo)定 270
9.4 基于視覺的機(jī)械臂抓取實(shí)現(xiàn) 273
9.4.1 目標(biāo)物體定位 274
9.4.2 姿態(tài)估計(jì) 277
9.4.3 抓取姿態(tài)檢測 280
9.4.4 運(yùn)動規(guī)劃 282
任務(wù)4 完成基于視覺的機(jī)械臂抓取 284
任務(wù)5 控制機(jī)械臂指向物體 286
9.5 本章小結(jié) 289
參考文獻(xiàn) 289
擴(kuò)展閱讀 290
練習(xí)題 290
第10章 移動機(jī)器人視覺SLAM 291
10.1 視覺SLAM框架 291
10.1.1 視覺里程計(jì) 291
10.1.2 非線性優(yōu)化 292
10.1.3 回環(huán)檢測 293
10.1.4 建圖 293
10.2 ORB-SLAM算法 295
任務(wù)1 在單目數(shù)據(jù)集上運(yùn)行ORB-SLAM2 298
10.3 稠密建圖 301
10.3.1 空間地圖的表示方式 303
10.3.2 雙目相機(jī)幾何模型與標(biāo)定 307
10.3.3 稠密建圖 311
任務(wù)2 基于深度相機(jī)的場景建圖 313
10.4 其他視覺SLAM算法或框架 314
10.4.1 LSD-SLAM 316
10.4.2 SVO 318
10.4.3 OpenVSLAM 318
10.4.4 VINS-Fusion 320
10.5 本章小結(jié) 322
參考文獻(xiàn) 322
擴(kuò)展閱讀 323
練習(xí)題 324
第11章 ROS 2.0介紹與編程基礎(chǔ) 325
11.1 ROS 2.0設(shè)計(jì)思想 325
11.1.1 ROS 1.0問題總結(jié) 325
11.1.2 ROS 2.0發(fā)展現(xiàn)狀 326
11.1.3 ROS 2.0通信模型 326
11.2 ROS 2.0安裝與使用 328
11.2.1 ROS 2.0安裝 328
11.2.2 運(yùn)行小海龜案例 329
11.2.3 ROS 2.0命令行 331
11.3 ROS 2.0編程基礎(chǔ) 332
11.3.1 ROS 2.0編程方法 332
11.3.2 ROS 2.0與ROS 1.0編程區(qū)別 338
11.4 本章小結(jié) 339
擴(kuò)展閱讀 339
練習(xí)題 339