內容簡介
ROS(Robot Operating System)是一個機器人軟體平台,是用於實現機器人編程和開發複雜機器人套用的開源軟體框架,它能為異質計算機集群提供類似作業系統的功能。ROS的前身是斯坦福人工智慧實驗室為了支持斯坦福智慧型機器人STAIR而建立的交換庭(switchyard)項目。
本書包含10章內容,循序漸進地介紹了ROS相關的知識,包括ROS入門、結構與概念、可視化和調試工具、感測器和執行器、建模與仿真、
移動機器人、機械臂、
微型飛行器、ROS工業軟體包等。
本書適合機器人領域的工程師及研究人員閱讀,書中涉及許多實用的案例和解決方案,同時涵蓋了未來機器人套用開發中可預見的研究問題。
圖書目錄
第 1章 ROS入門 1
1.1 簡介 1
1.2 在桌面系統中安裝ROS 2
1.2.1 ROS 發行版 2
1.2.2 支持的作業系統 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的開發板上安裝ROS 13
1.5.1 準備工作 13
1.5.2 如何完成 15
1.5.3 設定系統位置 16
1.5.4 設定sources.list(源列表) 17
1.5.5 設定秘鑰 17
1.6 安裝ROS包 17
1.6.1 添加單個軟體包 17
1.6.2 初始化rosdep 18
1.6.3 環境配置 18
1.6.4 獲取rosinstall 18
第 2章 ROS的體系結構與概念Ⅰ 20
2.1 簡介 20
2.2 對ROS檔案系統的深入解析 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社區 37
2.5 學習ROS的使用 38
2.5.1 準備工作 38
2.5.2 如何完成 38
2.5.3 工作原理 47
2.6 理解ROS啟動(launch)檔案 59
第3章 ROS的體系結構與概念Ⅱ 61
3.1 簡介 61
3.2 掌握參數伺服器和動態參數 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可視化與調試工具 104
4.1 簡介 104
4.2 對ROS節點的調試和分析 105
4.2.1 準備工作 105
4.2.2 如何完成 105
4.3 ROS訊息的記錄與可視化 108
4.3.1 準備工作 108
4.3.2 如何完成 110
4.3.3 更多內容 112
4.4 ROS系統的檢測與診斷 114
4.4.1 準備工作 114
4.4.2 如何完成 114
4.5 標量數據的可視化和繪圖 118
4.5.1 準備工作 118
4.5.2 如何完成 119
4.5.3 更多內容 120
4.6 非標量數據的可視化—— 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 更多內容 129
第5章 在ROS中使用感測器和執行器 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系統——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.1 準備工作 146
5.6.2 如何完成 146
5.6.3 工作原理 146
5.7 使用Kinect感測器查看3D環境中的對象 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實現機器人建模 154
6.2.1 準備工作 154
6.2.2 工作原理 154
6.3 理解使用Xacro實現機器人建模 163
6.3.1 準備工作 164
6.3.2 工作原理 164
6.4 理解關節狀態發布器和機器人狀態發布器 165
6.4.1 準備動作 165
6.4.2 工作原理 168
6.4.3 更多內容 172
6.5 理解Gazebo系統結構以及與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 移動機器人與導航系統的互動 196
7.3.1 準備工作 196
7.3.2 如何完成 197
7.3.3 工作原理 198
7.4 為導航功能包集創建launch檔案 201
7.4.1 準備工作 201
7.4.2 工作原理 202
7.5 為導航功能包集設定Rviz可視化 203
7.5.1 準備工作 203
7.5.2 工作原理 203
7.5.3 更多內容 210
7.6 機器人定位——自適應
蒙特卡羅定位(AMCL) 211
7.6.1 準備工作 211
7.6.2 工作原理 211
7.7 使用rqt_reconfigure配置導航功能包集參數 212
7.8 移動機器人的自主導航——避開障礙物 213
7.8.1 準備工作 213
7.8.2 工作原理 213
7.9 傳送目標 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 人類難以操作的工作環境 218
8.2 MoveIt的基本概念 220
8.2.1 MoveIt 220
8.2.2 運動規劃 220
8.2.3 感知 221
8.2.4 抓取 221
8.2.5 準備工作 221
8.3 使用圖形化界面完成運動規劃 223
8.3.1 準備工作 223
8.3.2 如何完成 232
8.3.3 工作原理 234
8.3.4 更多內容 235
8.4 使用控制程式執行運動規劃 238
8.4.1 準備工作 238
8.4.2 如何完成 240
8.4.3 執行軌跡 245
8.5 在運動規劃中增加感知 246
8.5.1 準備工作 247
8.5.2 如何完成 249
8.5.3 工作原理 251
8.5.4 更多內容 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.1 簡介 276
9.2 MAV系統設計概述 277
9.3 MAV/無人機的通用數學模型 279
9.4 使用RotorS/Gazebo來模擬MAV/無人機 283
9.4.1 準備工作 283
9.4.2 如何完成 285
9.4.3 工作原理 292
9.4.4 更多內容 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 工業機器人與MoveIt的3D建模與仿真 326
10.3.1 準備工作 326
10.3.2 如何完成 327
10.4 使用ROS-I軟體包——優傲機器人、ABB機器人 336
10.5 ROS-I機器人支持包 342
10.6 ROS-I機器人客戶端功能包 345
10.7 ROS-I機器人驅動程式規範 346
10.8 開發自定義的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的未來——硬體支持、功能和套用 356