ROS(Robot Operating System)是一個機器人軟件平臺,是用于實現(xiàn)機器人編程和開發(fā)復雜機器人應(yīng)用的開源軟件框架,它能為異質(zhì)計算機集群提供類似操作系統(tǒng)的功能。ROS的前身是斯坦福人工智能實驗室為了支持斯坦福智能機器人STAIR而建立的交換庭(switchyard)項目。
本書包含10章內(nèi)容,循序漸進地介紹了ROS相關(guān)的知識,包括ROS入門、結(jié)構(gòu)與概念、可視化和調(diào)試工具、傳感器和執(zhí)行器、建模與仿真、移動機器人、機械臂、微型飛行器、ROS工業(yè)軟件包等。
本書適合機器人領(lǐng)域的工程師及研究人員閱讀,書中涉及許多實用的案例和解決方案,同時涵蓋了未來機器人應(yīng)用開發(fā)中可預(yù)見的研究問題。
70多個案例幫助你深入了解ROS高級概念及實踐應(yīng)用
本書從ROS的基礎(chǔ)知識講起,通過豐富的案例和圖示引導讀者掌握ROS編程技巧。本書涉及移動機器人、機械臂、微型飛行器等應(yīng)用,同時包含nodelet、actionlib、Gazebo、SLAM、MoveIt等重要知識點。
庫馬爾·比平(Kumar Bipin)擁有在意法半導體和摩托羅拉等全球知名消費電子公司15年以上的研發(fā)經(jīng)驗。他曾參加超級計算教育研究中心(SERC)和印度科技學院(簡稱IISc,位于班加羅爾)的研究獎學金項目,并在信息技術(shù)國際學院(位于海德拉巴)獲得機器人學和計算機視覺的碩士學位。他一直致力于為消費類電子產(chǎn)品提供系統(tǒng)級的解決方案。這些解決方案包括系統(tǒng)軟件、自動駕駛汽車的感知規(guī)劃和控制。目前,他在Tata Elxsi領(lǐng)導自主汽車產(chǎn)品(Autonomai)的開發(fā)。
第 1章 ROS入門 1
1.1 簡介 1
1.2 在桌面系統(tǒng)中安裝ROS 2
1.2.1 ROS 發(fā)行版 2
1.2.2 支持的操作系統(tǒng) 3
1.2.3 如何完成 4
1.3 在虛擬機中安裝ROS 8
1.4 在Linux容器中運行ROS 10
1.4.1 準備工作 10
1.4.2 如何完成 10
1.4.3 參考資料 13
1.5 在基于ARM的開發(fā)板上安裝ROS 13
1.5.1 準備工作 13
1.5.2 如何完成 15
1.5.3 設(shè)置系統(tǒng)位置 16
1.5.4 設(shè)置sources.list(源列表) 17
1.5.5 設(shè)置秘鑰 17
1.6 安裝ROS包 17
1.6.1 添加單個軟件包 17
1.6.2 初始化rosdep 18
1.6.3 環(huán)境配置 18
1.6.4 獲取rosinstall 18
第 2章 ROS的體系結(jié)構(gòu)與概念Ⅰ 20
2.1 簡介 20
2.2 對ROS文件系統(tǒng)的深入解析 21
2.2.1 準備工作 21
2.2.2 如何完成 22
2.2.3 擴展學習 25
2.3 ROS計算圖分析 30
2.3.1 準備工作 30
2.3.2 如何完成 32
2.4 加入ROS社區(qū) 37
2.5 學習ROS的使用 38
2.5.1 準備工作 38
2.5.2 如何完成 38
2.5.3 工作原理 47
2.6 理解ROS啟動(launch)文件 59
第3章 ROS的體系結(jié)構(gòu)與概念Ⅱ 61
3.1 簡介 61
3.2 掌握參數(shù)服務(wù)器和動態(tài)參數(shù) 62
3.2.1 準備工作 62
3.2.2 如何完成 62
3.3 掌握ROS actionlib 68
3.3.1 準備工作 68
3.3.2 如何完成 69
3.4 掌握ROS pluginlib 78
3.4.1 準備工作 78
3.4.2 如何完成 78
3.5 掌握ROS nodelet 83
3.5.1 準備工作 83
3.5.2 如何完成 83
3.5.3 擴展學習 86
3.6 掌握Gazebo框架與插件 88
3.6.1 準備工作 88
3.6.2 如何完成 89
3.7 掌握ROS的TF(坐標變換) 91
3.7.1 準備工作 92
3.7.2 如何完成 95
3.8 掌握ROS 可視化工具(RViz)及其插件 99
3.8.1 準備工作 99
3.8.2 如何完成 101
第4章 ROS可視化與調(diào)試工具 104
4.1 簡介 104
4.2 對ROS節(jié)點的調(diào)試和分析 105
4.2.1 準備工作 105
4.2.2 如何完成 105
4.3 ROS消息的記錄與可視化 108
4.3.1 準備工作 108
4.3.2 如何完成 110
4.3.3 更多內(nèi)容 112
4.4 ROS系統(tǒng)的檢測與診斷 114
4.4.1 準備工作 114
4.4.2 如何完成 114
4.5 標量數(shù)據(jù)的可視化和繪圖 118
4.5.1 準備工作 118
4.5.2 如何完成 119
4.5.3 更多內(nèi)容 120
4.6 非標量數(shù)據(jù)的可視化—— 2D/3D圖像 121
4.6.1 準備工作 122
4.6.2 如何完成 122
4.7 ROS話題的錄制與回放 126
4.7.1 準備工作 126
4.7.2 如何完成 126
4.7.3 更多內(nèi)容 129
第5章 在ROS中使用傳感器和執(zhí)行器 131
5.1 簡介 131
5.2 理解Arduino-ROS接口 132
5.2.1 準備工作 132
5.2.2 如何完成 133
5.2.3 工作原理 134
5.3 使用9 DoF(自由度,Degree of Freedom)慣性測量模塊 137
5.3.1 準備工作 138
5.3.2 如何完成 138
5.3.3 工作原理 139
5.4 使用GPS系統(tǒng)——Ublox 141
5.4.1 準備工作 142
5.4.2 如何完成 142
5.4.3 工作原理 143
5.5 使用伺服電動機——Dynamixel 144
5.5.1 如何完成 144
5.5.2 工作原理 144
5.6 用激光測距儀——Hokuyo 146
5.6.1 準備工作 146
5.6.2 如何完成 146
5.6.3 工作原理 146
5.7 使用Kinect傳感器查看3D環(huán)境中的對象 148
5.7.1 準備工作 149
5.7.2 如何完成 149
5.7.3 工作原理 149
5.8 用游戲桿或游戲手柄 151
5.8.1 如何完成 151
5.8.2 工作原理 151
第6章 ROS建模與仿真 153
6.1 簡介 153
6.2 理解使用URDF實現(xiàn)機器人建模 154
6.2.1 準備工作 154
6.2.2 工作原理 154
6.3 理解使用Xacro實現(xiàn)機器人建模 163
6.3.1 準備工作 164
6.3.2 工作原理 164
6.4 理解關(guān)節(jié)狀態(tài)發(fā)布器和機器人狀態(tài)發(fā)布器 165
6.4.1 準備動作 165
6.4.2 工作原理 168
6.4.3 更多內(nèi)容 172
6.5 理解Gazebo系統(tǒng)結(jié)構(gòu)以及與ROS的接口 174
6.5.1 準備工作 174
6.5.2 如何完成 174
第7章 ROS中的移動機器人 184
7.1 簡介 184
7.2 ROS導航功能包集 185
7.2.1 準備工作 185
7.2.2 工作原理 185
7.3 移動機器人與導航系統(tǒng)的交互 196
7.3.1 準備工作 196
7.3.2 如何完成 197
7.3.3 工作原理 198
7.4 為導航功能包集創(chuàng)建launch文件 201
7.4.1 準備工作 201
7.4.2 工作原理 202
7.5 為導航功能包集設(shè)置Rviz可視化 203
7.5.1 準備工作 203
7.5.2 工作原理 203
7.5.3 更多內(nèi)容 210
7.6 機器人定位——自適應(yīng)蒙特卡羅定位(AMCL) 211
7.6.1 準備工作 211
7.6.2 工作原理 211
7.7 使用rqt_reconfigure配置導航功能包集參數(shù) 212
7.8 移動機器人的自主導航——避開障礙物 213
7.8.1 準備工作 213
7.8.2 工作原理 213
7.9 發(fā)送目標 214
7.9.1 準備工作 214
7.9.2 工作原理 214
第8章 ROS中的機械臂 217
8.1 簡介 217
8.1.1 危險工作場所 218
8.1.2 重復或令人厭煩的工作 218
8.1.3 人類難以操作的工作環(huán)境 218
8.2 MoveIt的基本概念 220
8.2.1 MoveIt 220
8.2.2 運動規(guī)劃 220
8.2.3 感知 221
8.2.4 抓取 221
8.2.5 準備工作 221
8.3 使用圖形化界面完成運動規(guī)劃 223
8.3.1 準備工作 223
8.3.2 如何完成 232
8.3.3 工作原理 234
8.3.4 更多內(nèi)容 235
8.4 使用控制程序執(zhí)行運動規(guī)劃 238
8.4.1 準備工作 238
8.4.2 如何完成 240
8.4.3 執(zhí)行軌跡 245
8.5 在運動規(guī)劃中增加感知 246
8.5.1 準備工作 247
8.5.2 如何完成 249
8.5.3 工作原理 251
8.5.4 更多內(nèi)容 251
8.5.5 參考資料 252
8.6 使用機械臂或者機械手來完成抓取操作 253
8.6.1 準備工作 253
8.6.2 如何完成 256
8.6.3 工作原理 268
8.6.4 參考資料 273
第9章 基于ROS的微型飛行器 276
9.1 簡介 276
9.2 MAV系統(tǒng)設(shè)計概述 277
9.3 MAV/無人機的通用數(shù)學模型 279
9.4 使用RotorS/Gazebo來模擬MAV/無人機 283
9.4.1 準備工作 283
9.4.2 如何完成 285
9.4.3 工作原理 292
9.4.4 更多內(nèi)容 293
9.4.5 參考資料 296
9.5 MAV/無人機的自主導航框架 297
9.5.1 準備工作 297
9.5.2 如何完成 299
9.5.3 工作原理 314
9.6 操作真正的MAV/drone—— Parrot和Bebop 318
9.6.1 準備工作 319
9.6.2 如何完成 319
9.6.3 工作原理 321
第 10章 ROS-Industrial(ROS-I) 323
10.1 簡介 323
10.2 了解ROS-I功能包 324
10.3 工業(yè)機器人與MoveIt的3D建模與仿真 326
10.3.1 準備工作 326
10.3.2 如何完成 327
10.4 使用ROS-I軟件包——優(yōu)傲機器人、ABB機器人 336
10.5 ROS-I機器人支持包 342
10.6 ROS-I機器人客戶端功能包 345
10.7 ROS-I機器人驅(qū)動程序規(guī)范 346
10.8 開發(fā)自定義的MoveIt IKFast插件 348
10.8.1 準備工作 348
10.8.2 如何完成 351
10.9 了解ROS-I-MTConnect 353
10.9.1 準備工作 354
10.9.2 如何完成 355
10.10 ROS-I的未來——硬件支持、功能和應(yīng)用 356