ROS機(jī)器人項(xiàng)目開發(fā)11例(原書第2版)
定 價(jià):99 元
- 作者:[印]拉姆庫瑪·甘地那坦(Ramkumar Gandhina
- 出版時(shí)間:2021/1/1
- ISBN:9787111672449
- 出 版 社:機(jī)械工業(yè)出版社
- 中圖法分類:TP242
- 頁碼:308
- 紙張:
- 版次:
- 開本:16開
本書涵蓋新的ROS發(fā)行版中的項(xiàng)目——ROS Melodic Morenia with Ubuntu Bionic(18.04)。從基本原理開始,本書向你介紹了ROS-2,并幫助你了解它與ROS-1的不同之處。你將能夠在ROS中建模并構(gòu)建工業(yè)移動(dòng)機(jī)械手臂,并在Gazebo 9中進(jìn)行模擬。然后,你將了解如何使用狀態(tài)機(jī)處理復(fù)雜的機(jī)器人應(yīng)用程序,以及一次處理多個(gè)機(jī)器人。本書還向你介紹了新的、流行的硬件,如Nvidia的Jetson Nano、華碩修補(bǔ)板和Beaglebone Black,并允許你探索與ROS的接口。
譯者序
前言
作者簡(jiǎn)介
第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 支持的機(jī)器人及傳感器 4
1.2.4 為什么選擇ROS 5
1.3 ROS基礎(chǔ) 6
1.3.1 文件系統(tǒng)層級(jí) 7
1.3.2 計(jì)算圖層級(jí) 7
1.3.3 ROS社區(qū)層級(jí) 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簡(jiǎn)介 19
1.9.1 為什么選擇Docker 20
1.9.2 安裝Docker 20
1.10 設(shè)置ROS工作空間 23
1.11 ROS在工業(yè)界和學(xué)術(shù)界的機(jī)遇 25
1.12 本章小結(jié) 25
第2章 ROS-2及其特性簡(jiǎn)介 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 支持的機(jī)器人及傳感器 29
2.2.4 為什么選擇ROS-2 29
2.3 ROS-2基礎(chǔ) 30
2.3.1 什么是DDS 30
2.3.2 DDS的實(shí)現(xiàn) 30
2.3.3 計(jì)算圖 31
2.3.4 ROS-2社區(qū)層級(jí) 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 運(yùn)行測(cè)試節(jié)點(diǎn) 42
2.7 設(shè)置ROS-2工作空間 44
2.8 編寫ROS-2節(jié)點(diǎn) 45
2.8.1 ROS-1代碼示例 45
2.8.2 ROS-2代碼示例 46
2.8.3 ROS-1發(fā)布者節(jié)點(diǎn)與ROS-2發(fā)布者節(jié)點(diǎn)的區(qū)別 49
2.9 ROS-1和ROS-2的通信 50
2.10 本章小結(jié) 52
第3章 構(gòu)建工業(yè)級(jí)移動(dòng)機(jī)械臂 53
3.1 技術(shù)要求 54
3.2 常見的移動(dòng)機(jī)械臂 54
3.3 移動(dòng)機(jī)械臂應(yīng)用場(chǎng)景 55
3.4 移動(dòng)機(jī)械臂構(gòu)建入門 56
3.4.1 單位及坐標(biāo)系 57
3.4.2 Gazebo及ROS機(jī)器人模型格式設(shè)定 57
3.5 機(jī)器人底座構(gòu)建 58
3.5.1 機(jī)器人底座需求 58
3.5.2 軟件參數(shù) 60
3.5.3 機(jī)器人底座建模 60
3.5.4 機(jī)器人底座模擬 64
3.5.5 機(jī)器人底座測(cè)試 68
3.6 機(jī)械臂構(gòu)建 70
3.6.1 機(jī)械臂需求 71
3.6.2 軟件參數(shù) 72
3.6.3 機(jī)械臂建模 72
3.6.4 機(jī)械臂模擬 74
3.6.5 機(jī)械臂測(cè)試 77
3.7 系統(tǒng)集成 78
3.7.1 移動(dòng)機(jī)械臂建模 78
3.7.2 移動(dòng)機(jī)械臂模擬與測(cè)試 79
3.8 本章小結(jié) 80
第4章 基于狀態(tài)機(jī)的復(fù)雜機(jī)器人任務(wù)處理 81
4.1 技術(shù)要求 81
4.2 ROS動(dòng)作機(jī)制簡(jiǎn)介 82
4.2.1 服務(wù)器–客戶端結(jié)構(gòu)概述 82
4.2.2 actionlib示例:機(jī)械臂客戶端 83
4.2.3 基于actionlib的服務(wù)器–客戶端示例:電池模擬器 85
4.3 服務(wù)員機(jī)器人應(yīng)用示例 90
4.4 狀態(tài)機(jī)簡(jiǎn)介 92
4.5 SMACH簡(jiǎn)介 93
4.6 SMACH入門 96
4.6.1 SMACH-ROS的安裝與使用 96
4.6.2 簡(jiǎn)單示例 96
4.6.3 餐廳機(jī)器人應(yīng)用示例 98
4.7 本章小結(jié) 102
第5章 構(gòu)建工業(yè)級(jí)應(yīng)用程序 103
5.1 技術(shù)要求 103
5.2 應(yīng)用案例:機(jī)器人送貨上門 104
5.3 機(jī)器人底座智能化 106
5.3.1 添加激光掃描傳感器 106
5.3.2 配置導(dǎo)航棧 108
5.3.3 環(huán)境地圖構(gòu)建 110
5.3.4 機(jī)器人底座定位 111
5.4 機(jī)械臂智能化 111
5.4.1 Moveit簡(jiǎn)介 112
5.4.2 安裝與配置Moveit 113
5.4.3 通過Moveit控制機(jī)械臂 117
5.5 應(yīng)用程序模擬 120
5.5.1 環(huán)境地圖構(gòu)建與保存 120
5.5.2 選擇目標(biāo)點(diǎn) 120
5.5.3 添加目標(biāo)點(diǎn) 121
5.5.4 狀態(tài)機(jī)構(gòu)建 121
5.6 機(jī)器人改進(jìn) 121
5.7 本章小結(jié) 122
第6章 多機(jī)器人協(xié)同 123
6.1 技術(shù)要求 123
6.2 集群機(jī)器人基本概念 124
6.3 集群機(jī)器人分類 125
6.4 ROS中的多機(jī)器人通信 125
6.4.1 單個(gè)roscore和公共網(wǎng)絡(luò) 126
6.4.2 群組/名稱空間的使用 127
6.4.3 基于群組/名稱空間的多機(jī)器人系統(tǒng)構(gòu)建示例 128
6.5 多master概念簡(jiǎn)介 131
6.5.1 multimaster_fkie功能包簡(jiǎn)介 132
6.5.2 安裝multimaster_fkie功能包 133
6.5.3 設(shè)置multimaster_fkie功能包 133
6.6 多機(jī)器人應(yīng)用示例 136
6.7 本章小結(jié) 138
第7章 嵌入式平臺(tái)上的ROS應(yīng)用及其控制 139
7.1 技術(shù)要求 139
7.2 嵌入式板基礎(chǔ)知識(shí) 140
7.2.1 重要概念介紹 141
7.2.2 機(jī)器人領(lǐng)域微控制器和微處理器的區(qū)別 142
7.2.3 板卡選型步驟 142
7.3 微控制器板簡(jiǎn)介 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 對(duì)比表格 147
7.4 單板計(jì)算機(jī)簡(jiǎn)介 147
7.4.1 CPU板 148
7.4.2 GPU板 151
7.5 Debian與Ubuntu 152
7.6 在Tinkerboard S平臺(tái)上設(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平臺(tái)上設(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平臺(tái)上設(shè)置ROS 159
7.8.1 基礎(chǔ)需求 159
7.8.2 安裝Raspbian和ROS 159
7.8.3 安裝Ubuntu和ROS 160
7.9 在Jetson Nano平臺(tái)上設(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)測(cè)試 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章 強(qiáng)化學(xué)習(xí)與機(jī)器人學(xué) 174
8.1 技術(shù)要求 174
8.2 機(jī)器學(xué)習(xí)概述 175
8.2.1 監(jiān)督學(xué)習(xí) 175
8.2.2 無監(jiān)督學(xué)習(xí) 175
8.2.3 強(qiáng)化學(xué)習(xí) 176
8.3 理解強(qiáng)化學(xué)習(xí) 176
8.3.1 探索與開發(fā) 177
8.3.2 強(qiáng)化學(xué)習(xí)公式 177
8.3.3 強(qiáng)化學(xué)習(xí)平臺(tái) 178
8.3.4 機(jī)器人領(lǐng)域的強(qiáng)化學(xué)習(xí)應(yīng)用 179
8.4 馬爾可夫決策過程與貝爾曼方程 179
8.5 強(qiáng)化學(xué)習(xí)算法 181
8.5.1 出租車問題應(yīng)用示例 181
8.5.2 TD預(yù)測(cè) 182
8.5.3 TD控制 183
8.6 ROS中的強(qiáng)化學(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)用簡(jiǎn)介 198
9.3 機(jī)器人領(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的圖像識(shí)別 206
9.6.1 基礎(chǔ)需求 207
9.6.2 ROS圖像識(shí)別節(jié)點(diǎn) 207
9.7 scikit-learn簡(jiǎn)介 210
9.8 SVM及其在機(jī)器人領(lǐng)域的應(yīng)用簡(jiǎn)介 211
9.9 本章小結(jié) 214
第10章 ROS下的自動(dòng)駕駛汽車構(gòu)建 215
10.1 技術(shù)要求 215
10.2 自動(dòng)駕駛汽車入門 216
10.3 典型自動(dòng)駕駛汽車基本組件 218
10.3.1 GPS、IMU和車輪編碼器 218
10.3.2 攝像頭 219
10.3.3 超聲波傳感器 219
10.3.4 LIDAR與RADAR 219
10.3.5 自動(dòng)駕駛汽車的軟件模塊體系結(jié)構(gòu) 221
10.4 ROS下的自動(dòng)駕駛汽車模擬與交互 222
10.4.1 Velodyne LIDAR模擬 223
10.4.2 ROS下的Velodyne傳感器接口 224
10.4.3 激光掃描儀模擬 225
10.4.4 模擬代碼擴(kuò)展 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下帶傳感器的自動(dòng)駕駛汽車模擬 236
10.6 ROS下的DBW汽車接口 241
10.6.1 功能包安裝 241
10.6.2 自動(dòng)駕駛汽車及傳感器數(shù)據(jù)可視化 241
10.6.3 基于ROS與DBW通信 243
10.7 Udacity開源自動(dòng)駕駛汽車項(xiàng)目簡(jiǎn)介 243
10.7.1 Udacity的開源自動(dòng)駕駛汽車模擬器 244
10.7.2 MATLAB ADAS工具箱 246
10.8 本章小結(jié) 246
第11章 基于VR頭盔和Leap Motion的機(jī)器人遙操作 247
11.1 技術(shù)要求 248
11.2 VR頭盔和Leap Motion傳感器入門 248
11.3 項(xiàng)目設(shè)計(jì)和實(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ū)動(dòng)程序 253
11.5 RViz中Leap Motion數(shù)據(jù)的可視化 255
11.6 使用Leap Motion控制器創(chuàng)建遙操作節(jié)點(diǎn) 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)的人臉識(shí)別與跟蹤 266
12.1 技術(shù)要求 266
12.2 項(xiàng)目概述 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 啟動(dòng)文件 284
12.7.5 運(yùn)行人臉跟蹤器節(jié)點(diǎn) 285
12.7.6 face_tracker_control功能包 286
12.7.7 平移控制器配置文件 287
12.7.8 伺服系統(tǒng)參數(shù)配置文件 287
12.7.9 人臉跟蹤控制器節(jié)點(diǎn) 288
12.7.10 創(chuàng)建CMakeLists.txt 289
12.7.11 測(cè)試人臉跟蹤器控制功能包 290
12.7.12 節(jié)點(diǎn)集成 291
12.7.13 固定支架并設(shè)置電路 291
12.7.14 最終運(yùn)行 292
12.8 本章小結(jié) 292