本書涵蓋新的ROS發(fā)行版中的項目——ROS Melodic Morenia with Ubuntu Bionic(18.04)。從基本原理開始,本書向你介紹了ROS-2,并幫助你了解它與ROS-1的不同之處。你將能夠在ROS中建模并構(gòu)建工業(yè)移動機械手臂,并在Gazebo 9中進行模擬。然后,你將了解如何使用狀態(tài)機處理復(fù)雜的機器人應(yīng)用程序,以及一次處理多個機器人。本書還向你介紹了新的、流行的硬件,如Nvidia的Jetson Nano、華碩修補板和Beaglebone Black,并允許你探索與ROS的接口。
譯者序
前言
作者簡介
第1章 ROS入門 1
1.1 技術(shù)要求 2
1.2 ROS概述 2
1.2.1 ROS發(fā)行版 3
1.2.2 支持的操作系統(tǒng) 3
1.2.3 支持的機器人及傳感器 4
1.2.4 為什么選擇ROS 5
1.3 ROS基礎(chǔ) 6
1.3.1 文件系統(tǒng)層級 7
1.3.2 計算圖層級 7
1.3.3 ROS社區(qū)層級 9
1.3.4 ROS中的通信 9
1.4 ROS客戶端庫 10
1.5 ROS工具 11
1.5.1 ROS的可視化工具RViz 11
1.5.2 rqt_plot 11
1.5.3 rqt_graph 12
1.6 ROS模擬器 13
1.7 在Ubuntu 18.04 LTS上安裝ROS Melodic 13
1.8 在VirtualBox上設(shè)置ROS 18
1.9 Docker簡介 19
1.9.1 為什么選擇Docker 20
1.9.2 安裝Docker 20
1.10 設(shè)置ROS工作空間 23
1.11 ROS在工業(yè)界和學(xué)術(shù)界的機遇 25
1.12 本章小結(jié) 25
第2章 ROS-2及其特性簡介 26
2.1 技術(shù)要求 27
2.2 ROS-2概述 27
2.2.1 ROS-2發(fā)行版 28
2.2.2 支持的操作系統(tǒng) 28
2.2.3 支持的機器人及傳感器 29
2.2.4 為什么選擇ROS-2 29
2.3 ROS-2基礎(chǔ) 30
2.3.1 什么是DDS 30
2.3.2 DDS的實現(xiàn) 30
2.3.3 計算圖 31
2.3.4 ROS-2社區(qū)層級 32
2.3.5 ROS-2中的通信 32
2.3.6 ROS-2的變化 33
2.4 ROS-2客戶端庫 33
2.5 ROS-2工具 34
2.5.1 RViz2 34
2.5.2 Rqt 36
2.6 安裝ROS-2 36
2.6.1 開始安裝 37
2.6.2 獲取ROS-2源碼 38
2.6.3 ROS-1、ROS-2以及共存環(huán)境設(shè)置 41
2.6.4 運行測試節(jié)點 42
2.7 設(shè)置ROS-2工作空間 44
2.8 編寫ROS-2節(jié)點 45
2.8.1 ROS-1代碼示例 45
2.8.2 ROS-2代碼示例 46
2.8.3 ROS-1發(fā)布者節(jié)點與ROS-2發(fā)布者節(jié)點的區(qū)別 49
2.9 ROS-1和ROS-2的通信 50
2.10 本章小結(jié) 52
第3章 構(gòu)建工業(yè)級移動機械臂 53
3.1 技術(shù)要求 54
3.2 常見的移動機械臂 54
3.3 移動機械臂應(yīng)用場景 55
3.4 移動機械臂構(gòu)建入門 56
3.4.1 單位及坐標(biāo)系 57
3.4.2 Gazebo及ROS機器人模型格式設(shè)定 57
3.5 機器人底座構(gòu)建 58
3.5.1 機器人底座需求 58
3.5.2 軟件參數(shù) 60
3.5.3 機器人底座建模 60
3.5.4 機器人底座模擬 64
3.5.5 機器人底座測試 68
3.6 機械臂構(gòu)建 70
3.6.1 機械臂需求 71
3.6.2 軟件參數(shù) 72
3.6.3 機械臂建模 72
3.6.4 機械臂模擬 74
3.6.5 機械臂測試 77
3.7 系統(tǒng)集成 78
3.7.1 移動機械臂建模 78
3.7.2 移動機械臂模擬與測試 79
3.8 本章小結(jié) 80
第4章 基于狀態(tài)機的復(fù)雜機器人任務(wù)處理 81
4.1 技術(shù)要求 81
4.2 ROS動作機制簡介 82
4.2.1 服務(wù)器–客戶端結(jié)構(gòu)概述 82
4.2.2 actionlib示例:機械臂客戶端 83
4.2.3 基于actionlib的服務(wù)器–客戶端示例:電池模擬器 85
4.3 服務(wù)員機器人應(yīng)用示例 90
4.4 狀態(tài)機簡介 92
4.5 SMACH簡介 93
4.6 SMACH入門 96
4.6.1 SMACH-ROS的安裝與使用 96
4.6.2 簡單示例 96
4.6.3 餐廳機器人應(yīng)用示例 98
4.7 本章小結(jié) 102
第5章 構(gòu)建工業(yè)級應(yīng)用程序 103
5.1 技術(shù)要求 103
5.2 應(yīng)用案例:機器人送貨上門 104
5.3 機器人底座智能化 106
5.3.1 添加激光掃描傳感器 106
5.3.2 配置導(dǎo)航棧 108
5.3.3 環(huán)境地圖構(gòu)建 110
5.3.4 機器人底座定位 111
5.4 機械臂智能化 111
5.4.1 Moveit簡介 112
5.4.2 安裝與配置Moveit 113
5.4.3 通過Moveit控制機械臂 117
5.5 應(yīng)用程序模擬 120
5.5.1 環(huán)境地圖構(gòu)建與保存 120
5.5.2 選擇目標(biāo)點 120
5.5.3 添加目標(biāo)點 121
5.5.4 狀態(tài)機構(gòu)建 121
5.6 機器人改進 121
5.7 本章小結(jié) 122
第6章 多機器人協(xié)同 123
6.1 技術(shù)要求 123
6.2 集群機器人基本概念 124
6.3 集群機器人分類 125
6.4 ROS中的多機器人通信 125
6.4.1 單個roscore和公共網(wǎng)絡(luò) 126
6.4.2 群組/名稱空間的使用 127
6.4.3 基于群組/名稱空間的多機器人系統(tǒng)構(gòu)建示例 128
6.5 多master概念簡介 131
6.5.1 multimaster_fkie功能包簡介 132
6.5.2 安裝multimaster_fkie功能包 133
6.5.3 設(shè)置multimaster_fkie功能包 133
6.6 多機器人應(yīng)用示例 136
6.7 本章小結(jié) 138
第7章 嵌入式平臺上的ROS應(yīng)用及其控制 139
7.1 技術(shù)要求 139
7.2 嵌入式板基礎(chǔ)知識 140
7.2.1 重要概念介紹 141
7.2.2 機器人領(lǐng)域微控制器和微處理器的區(qū)別 142
7.2.3 板卡選型步驟 142
7.3 微控制器板簡介 143
7.3.1 Arduino Mega 143
7.3.2 STM32 144
7.3.3 ESP8266 145
7.3.4 ROS支持的嵌入式板 146
7.3.5 對比表格 147
7.4 單板計算機簡介 147
7.4.1 CPU板 148
7.4.2 GPU板 151
7.5 Debian與Ubuntu 152
7.6 在Tinkerboard S平臺上設(shè)置操作系統(tǒng) 153
7.6.1 基礎(chǔ)需求 153
7.6.2 安裝Tinkerboard Debian操作系統(tǒng) 153
7.6.3 安裝Armbian和ROS 154
7.6.4 使用可用的ROS鏡像安裝 156
7.7 在BeagleBone Black平臺上設(shè)置ROS 156
7.7.1 基礎(chǔ)需求 156
7.7.2 安裝Debian 操作系統(tǒng) 157
7.7.3 安裝Ubuntu和ROS 158
7.8 在Raspberry Pi 3/4平臺上設(shè)置ROS 159
7.8.1 基礎(chǔ)需求 159
7.8.2 安裝Raspbian和ROS 159
7.8.3 安裝Ubuntu和ROS 160
7.9 在Jetson Nano平臺上設(shè)置ROS 161
7.10 通過ROS控制GPIO 161
7.10.1 Tinkerboard S 162
7.10.2 BeagleBone Black 163
7.10.3 Raspberry Pi 3/4 164
7.10.4 Jetson Nano 165
7.11 嵌入式板基準(zhǔn)測試 166
7.12 Alexa入門及連接ROS 168
7.12.1 Alexa 技能構(gòu)建前提條件 168
7.12.2 創(chuàng)建Alexa技能 169
7.13 本章小結(jié) 173
第8章 強化學(xué)習(xí)與機器人學(xué) 174
8.1 技術(shù)要求 174
8.2 機器學(xué)習(xí)概述 175
8.2.1 監(jiān)督學(xué)習(xí) 175
8.2.2 無監(jiān)督學(xué)習(xí) 175
8.2.3 強化學(xué)習(xí) 176
8.3 理解強化學(xué)習(xí) 176
8.3.1 探索與開發(fā) 177
8.3.2 強化學(xué)習(xí)公式 177
8.3.3 強化學(xué)習(xí)平臺 178
8.3.4 機器人領(lǐng)域的強化學(xué)習(xí)應(yīng)用 179
8.4 馬爾可夫決策過程與貝爾曼方程 179
8.5 強化學(xué)習(xí)算法 181
8.5.1 出租車問題應(yīng)用示例 181
8.5.2 TD預(yù)測 182
8.5.3 TD控制 183
8.6 ROS中的強化學(xué)習(xí)功能包 189
8.6.1 gym-gazebo 189
8.6.2 gym-gazebo2 194
8.7 本章小結(jié) 196
第9章 ROS下基于TensorFlow的深度學(xué)習(xí) 197
9.1 技術(shù)要求 197
9.2 深度學(xué)習(xí)及其應(yīng)用簡介 198
9.3 機器人領(lǐng)域的深度學(xué)習(xí) 198
9.4 深度學(xué)習(xí)庫 199
9.5 TensorFlow入門 200
9.5.1 在Ubuntu 18.04 LTS上安裝TensorFlow 200
9.5.2 TensorFlow概念 202
9.5.3 在TensorFlow下編寫第一行代碼 204
9.6 ROS下基于TensorFlow的圖像識別 206
9.6.1 基礎(chǔ)需求 207
9.6.2 ROS圖像識別節(jié)點 207
9.7 scikit-learn簡介 210
9.8 SVM及其在機器人領(lǐng)域的應(yīng)用簡介 211
9.9 本章小結(jié) 214
第10章 ROS下的自動駕駛汽車構(gòu)建 215
10.1 技術(shù)要求 215
10.2 自動駕駛汽車入門 216
10.3 典型自動駕駛汽車基本組件 218
10.3.1 GPS、IMU和車輪編碼器 218
10.3.2 攝像頭 219
10.3.3 超聲波傳感器 219
10.3.4 LIDAR與RADAR 219
10.3.5 自動駕駛汽車的軟件模塊體系結(jié)構(gòu) 221
10.4 ROS下的自動駕駛汽車模擬與交互 222
10.4.1 Velodyne LIDAR模擬 223
10.4.2 ROS下的Velodyne傳感器接口 224
10.4.3 激光掃描儀模擬 225
10.4.4 模擬代碼擴展 226
10.4.5 ROS下的激光掃描儀接口 227
10.4.6 Gazebo下的立體與單目攝像頭模擬 228
10.4.7 ROS下的攝像頭接口 229
10.4.8 Gazebo下的GPS模擬 230
10.4.9 ROS下的GPS接口 231
10.4.10 Gazebo下的IMU模擬 231
10.4.11 ROS下的IMU接口 233
10.4.12 Gazebo下的超聲波傳感器模擬 233
10.4.13 低成本LIDAR傳感器 235
10.5 Gazebo下帶傳感器的自動駕駛汽車模擬 236
10.6 ROS下的DBW汽車接口 241
10.6.1 功能包安裝 241
10.6.2 自動駕駛汽車及傳感器數(shù)據(jù)可視化 241
10.6.3 基于ROS與DBW通信 243
10.7 Udacity開源自動駕駛汽車項目簡介 243
10.7.1 Udacity的開源自動駕駛汽車模擬器 244
10.7.2 MATLAB ADAS工具箱 246
10.8 本章小結(jié) 246
第11章 基于VR頭盔和Leap Motion的機器人遙操作 247
11.1 技術(shù)要求 248
11.2 VR頭盔和Leap Motion傳感器入門 248
11.3 項目設(shè)計和實施 250
11.4 在Ubuntu 14.04.5上安裝Leap Motion SDK 251
11.4.1 可視化Leap Motion控制器數(shù)據(jù) 252
11.4.2 使用Leap Motion可視化工具 252
11.4.3 安裝用于Leap Motion控制器的ROS驅(qū)動程序 253
11.5 RViz中Leap Motion數(shù)據(jù)的可視化 255
11.6 使用Leap Motion控制器創(chuàng)建遙操作節(jié)點 256
11.7 構(gòu)建ROS-VR Android應(yīng)用程序 258
11.8 ROS-VR應(yīng)用程序的使用及與Gazebo的交互 260
11.9 VR下的TurtleBot模擬 262
11.9.1 安裝TurtleBot模擬器 262
11.9.2 在VR中控制TurtleBot 262
11.10 ROS-VR應(yīng)用程序故障排除 263
11.11 ROS-VR應(yīng)用與Leap Motion遙操作功能集成 264
11.12 本章小結(jié) 265
第12章 基于ROS、Open CV和Dynamixel伺服系統(tǒng)的人臉識別與跟蹤 266
12.1 技術(shù)要求 266
12.2 項目概述 267
12.3 硬件和軟件基礎(chǔ)需求 267
12.4 使用RoboPlus配置Dynamixel伺服系統(tǒng) 271
12.5 Dynamixel與ROS連接 275
12.6 創(chuàng)建人臉跟蹤器ROS功能包 276
12.7 使用人臉跟蹤ROS功能包 278
12.7.1 理解人臉跟蹤器代碼 279
12.7.2 理解CMakeLists.txt 283
12.7.3 track.yaml文件 284
12.7.4 啟動文件 284
12.7.5 運行人臉跟蹤器節(jié)點 285
12.7.6 face_tracker_control功能包 286
12.7.7 平移控制器配置文件 287
12.7.8 伺服系統(tǒng)參數(shù)配置文件 287
12.7.9 人臉跟蹤控制器節(jié)點 288
12.7.10 創(chuàng)建CMakeLists.txt 289
12.7.11 測試人臉跟蹤器控制功能包 290
12.7.12 節(jié)點集成 291
12.7.13 固定支架并設(shè)置電路 291
12.7.14 最終運行 292
12.8 本章小結(jié) 292