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