ROS機(jī)械臂開發(fā)與實(shí)踐(王曉云)
定 價(jià):78 元
- 作者:王曉云、武延軍、常先明、蔣暢江 編著
- 出版時(shí)間:2023/6/1
- ISBN:9787122425928
- 出 版 社:化學(xué)工業(yè)出版社
- 中圖法分類:TP241
- 頁碼:331
- 紙張:
- 版次:01
- 開本:16開
本書包含ROS 基礎(chǔ)以及ROS 機(jī)械臂全過程開發(fā)和實(shí)踐等內(nèi)容,是編著者在結(jié)合國(guó)內(nèi)外最新方法和技術(shù),總結(jié)自己多年機(jī)器人開發(fā)經(jīng)驗(yàn)以及教學(xué)科研成果的基礎(chǔ)上完成的。本書第1~4 章簡(jiǎn)單概述了機(jī)械臂基礎(chǔ)和ROS 基礎(chǔ),結(jié)合具體實(shí)踐詳細(xì)講解了ROS 通信機(jī)制、常用組件、TF2 等進(jìn)階功能;第5~7 章基于機(jī)械臂控制系統(tǒng)開發(fā)的工程實(shí)踐,詳細(xì)講解了ROS 機(jī)械臂建模、MoveIt!基礎(chǔ)、MoveIt!的編程;第8、第9 章介紹了機(jī)械臂的視覺系統(tǒng)和視覺抓取。
本書理論與實(shí)踐相結(jié)合,仿真與實(shí)物相結(jié)合,配有開源教學(xué)軟件包和課后習(xí)題答疑解析,所有教學(xué)示例均提供C++和Python 兩種編程實(shí)現(xiàn),方便讀者更好地理解和實(shí)踐書中內(nèi)容。
本書可作為普通高校自動(dòng)化、機(jī)器人工程、人工智能等相關(guān)專業(yè)的教材,也可作為機(jī)器人開發(fā)者和工程師的技術(shù)參考書。
第1章 機(jī)械臂基礎(chǔ)
1.1 機(jī)械臂系統(tǒng)組成 001
1.1.1 機(jī)械系統(tǒng) 001
1.1.2 驅(qū)動(dòng)系統(tǒng) 001
1.1.3 感知系統(tǒng) 002
1.1.4 控制系統(tǒng) 002
1.2 機(jī)械臂主要技術(shù)參數(shù) 002
1.2.1 自由度 002
1.2.2 定位精度 003
1.2.3 工作空間 003
1.2.4 速度和加速度 004
1.2.5 承載能力 004
1.3 空間描述和變換 004
1.3.1 位置描述 005
1.3.2 姿態(tài)描述 005
1.3.3 機(jī)器人位姿 007
1.3.4 坐標(biāo)變換 007
1.4 機(jī)械臂正、逆運(yùn)動(dòng)學(xué) 008
1.4.1 關(guān)節(jié)空間和笛卡兒空間 008
1.4.2 正運(yùn)動(dòng)學(xué) 009
1.4.3 逆運(yùn)動(dòng)學(xué) 009
1.5 推薦閱讀 009
本章小結(jié) 009
習(xí)題1 010
第2章 認(rèn)識(shí)ROS
2.1 什么是ROS 011
2.2 ROS 的安裝與測(cè)試 011
2.2.1 操作系統(tǒng)和ROS 版本選擇 011
2.2.2 安裝ROS Melodic Morenia 版本 012
2.2.3 測(cè)試ROS 015
2.3 ROS 文件系統(tǒng) 015
2.3.1 catkin 工作空間和ROS 功能包 015
2.3.2 創(chuàng)建工作空間 017
2.4 教學(xué)代碼包 018
2.4.1 下載安裝教學(xué)代碼包 018
2.4.2 Qt Creator 開發(fā)環(huán)境 019
2.4.3 教學(xué)代碼包簡(jiǎn)要說明 025
2.5 ROS 的通信架構(gòu) 026
2.5.1 節(jié)點(diǎn)與ROS Master 027
2.5.2 消息 027
2.5.3 話題 027
2.5.4 服務(wù) 028
2.5.5 動(dòng)作 028
2.5.6 話題、服務(wù)和動(dòng)作對(duì)比 028
2.5.7 參數(shù)服務(wù)器 028
2.6 ROS 計(jì)算圖和命名空間 029
本章小結(jié) 029
習(xí)題2 030
第3章 ROS 基礎(chǔ)實(shí)踐
3.1 消息的定義和使用 031
3.1.1 消息的描述和類型 031
3.1.2 自定義消息類型 033
3.1.3 消息的使用 035
3.2 rospy 和roscpp 客戶端 035
3.3 話題通信和編程實(shí)現(xiàn) 036
3.3.1 話題的發(fā)布節(jié)點(diǎn)(Python) 036
3.3.2 話題的訂閱節(jié)點(diǎn)(Python) 040
3.3.3 話題的發(fā)布節(jié)點(diǎn)(C++) 042
3.3.4 話題的訂閱節(jié)點(diǎn)(C++) 046
3.3.5 話題通信測(cè)試 049
3.4 服務(wù)通信和編程實(shí)現(xiàn) 052
3.4.1 服務(wù)的定義 052
3.4.2 自定義服務(wù)類型 053
3.4.3 服務(wù)的服務(wù)端節(jié)點(diǎn)(Python) 055
3.4.4 服務(wù)的客戶端節(jié)點(diǎn)(Python) 057
3.4.5 服務(wù)的服務(wù)端節(jié)點(diǎn)(C++) 059
3.4.6 服務(wù)的客戶端節(jié)點(diǎn)(C++) 061
3.4.7 服務(wù)通信測(cè)試 062
3.5 ROS 中的參數(shù) 064
3.5.1 rosparam 命令行工具 064
3.5.2 參數(shù)服務(wù)器(Python) 066
3.5.3 參數(shù)服務(wù)器(C++) 068
本章小結(jié) 071
習(xí)題3 071
第4章 ROS 進(jìn)階實(shí)踐
4.1 動(dòng)作通信和編程實(shí)現(xiàn) 073
4.1.1 Action 的定義 073
4.1.2 Action 的服務(wù)端節(jié)點(diǎn)(Python) 076
4.1.3 Action 的客戶端節(jié)點(diǎn)(Python) 079
4.1.4 Action 的服務(wù)端節(jié)點(diǎn)(C++) 081
4.1.5 Action 的客戶端節(jié)點(diǎn)(C++) 084
4.1.6 Action 通信測(cè)試 085
4.2 ROS 常用組件和工具 089
4.2.1 XML 語法規(guī)范 089
4.2.2 launch 啟動(dòng)文件 090
4.2.3 RViz 可視化平臺(tái) 096
4.2.4 rqt 工具箱 101
4.2.5 rosbag 數(shù)據(jù)記錄與回放 101
4.3 動(dòng)態(tài)參數(shù)配置 101
4.3.1 編寫.cfg 文件 102
4.3.2 設(shè)置動(dòng)態(tài)參數(shù)節(jié)點(diǎn)(Python) 103
4.3.3 設(shè)置動(dòng)態(tài)參數(shù)節(jié)點(diǎn)(C++) 107
4.3.4 測(cè)試動(dòng)態(tài)參數(shù)配置 108
4.4 ROS 中的坐標(biāo)系和TF2 110
4.4.1 ROS 中的TF 110
4.4.2 編寫TF2 廣播節(jié)點(diǎn)(Python) 113
4.4.3 編寫TF2 監(jiān)聽節(jié)點(diǎn)(Python) 117
4.4.4 編寫TF2 廣播節(jié)點(diǎn)(C++) 119
4.4.5 編寫TF2 監(jiān)聽節(jié)點(diǎn)(C++) 121
4.4.6 TF 測(cè)試和常用工具 123
4.5 擴(kuò)展閱讀 126
本章小結(jié) 127
習(xí)題4 127
第5章 ROS 機(jī)械臂建模
5.1 URDF 建模原理和語法規(guī)范 128
5.1.1 什么是URDF 128
5.1.2 urdf 功能包 128
5.1.3 URDF 語法規(guī)范 129
5.2 機(jī)械臂URDF 建模 133
5.2.1 創(chuàng)建機(jī)械臂描述功能包 134
5.2.2 創(chuàng)建機(jī)械臂URDF 模型 134
5.2.3 添加機(jī)械臂夾爪模型 136
5.2.4 URDF 調(diào)試工具 139
5.2.5 在RViz 中可視化模型 140
5.3 xacro 語言簡(jiǎn)化URDF 模型 142
5.3.1 xacro 模型文件常用語法 143
5.3.2 使用xacro 簡(jiǎn)化機(jī)械臂URDF 模型 145
5.3.3 為機(jī)械臂添加移動(dòng)底盤 148
5.4 sw2urdf 插件 149
5.4.1 sw2urdf 插件簡(jiǎn)介 150
5.4.2 sw2urdf 插件導(dǎo)出的功能包 150
5.4.3 XBot-Arm 機(jī)械臂的URDF 模型 153
5.5 robot_state_publisher 發(fā)布TF 157
5.5.1 robot_state_publisher 原理簡(jiǎn)介 157
5.5.2 編寫/joint_states 話題發(fā)布節(jié)點(diǎn) 160
本章小結(jié) 163
習(xí)題5 163
第6章 MoveIt!基礎(chǔ)
6.1 MoveIt!軟件架構(gòu) 164
6.1.1 move_group 節(jié)點(diǎn) 165
6.1.2 運(yùn)動(dòng)學(xué)求解器 166
6.1.3 運(yùn)動(dòng)規(guī)劃器 166
6.1.4 規(guī)劃場(chǎng)景 168
6.1.5 碰撞檢測(cè) 168
6.2 MoveIt!可視化配置 168
6.2.1 安裝MoveIt!并啟動(dòng)配置助手 169
6.2.2 生成自碰撞矩陣 170
6.2.3 添加虛擬關(guān)節(jié) 171
6.2.4 添加規(guī)劃組 173
6.2.5 添加機(jī)器人位姿 176
6.2.6 添加末端執(zhí)行器 179
6.2.7 添加被動(dòng)關(guān)節(jié) 180
6.2.8 ROS 控制 181
6.2.9 Simulation 仿真 182
6.2.10 設(shè)置3D 傳感器 182
6.2.11 添加作者信息 182
6.2.12 自動(dòng)生成配置文件 182
6.3 使用RViz 快速上手MoveIt! 183
6.3.1 啟動(dòng)Demo 并配置RViz 插件 184
6.3.2 使用MotionPlanning 交互 187
6.3.3 設(shè)置規(guī)劃場(chǎng)景測(cè)試碰撞檢測(cè) 189
6.4 MoveIt!配置功能包解析 193
6.4.1 SRDF 文件 193
6.4.2 kinematics.yaml 文件 195
6.4.3 joint_limits.yaml 文件 195
6.4.4 ompl_planning.yaml 文件 196
6.4.5 fake_controllers.yaml 文件 196
6.4.6 demo.launch 啟動(dòng)文件 196
6.4.7 move_group.launch 文件 198
6.4.8 setup_assistant.launch 文件 200
6.5 MoveIt!控制真實(shí)機(jī)械臂 201
6.5.1 通信機(jī)制和系統(tǒng)架構(gòu) 201
6.5.2 添加MoveIt!啟動(dòng)文件 204
6.5.3 真實(shí)機(jī)械臂測(cè)試 205
6.6 使用MoveIt!的命令行工具 206
本章小結(jié) 210
習(xí)題6 210
第7章 MoveIt!的編程
7.1 關(guān)節(jié)目標(biāo)和位姿目標(biāo)規(guī)劃 211
7.1.1 演示模式下測(cè)試 212
7.1.2 關(guān)節(jié)目標(biāo)規(guī)劃示例(Python) 213
7.1.3 關(guān)節(jié)目標(biāo)規(guī)劃示例(C++) 216
7.1.4 位姿目標(biāo)規(guī)劃示例(Python) 218
7.1.5 位姿目標(biāo)規(guī)劃示例(C++) 222
7.2 笛卡兒路徑規(guī)劃 223
7.2.1 演示模式下測(cè)試 224
7.2.2 直線運(yùn)動(dòng)示例(Python) 226
7.2.3 直線運(yùn)動(dòng)示例(C++) 230
7.2.4 圓弧運(yùn)動(dòng)示例(Python) 232
7.2.5 圓弧運(yùn)動(dòng)示例(C++) 235
7.3 避障規(guī)劃 237
7.3.1 演示模式下測(cè)試 237
7.3.2 避障規(guī)劃示例(Python) 240
7.3.3 避障規(guī)劃示例(C++) 245
7.4 物品抓取與放置 247
7.4.1 演示模式下測(cè)試 247
7.4.2 pick 和place 編程接口 250
7.4.3 編程實(shí)現(xiàn)物品抓取與放置(Python) 252
7.4.4 編程實(shí)現(xiàn)物品抓取與放置(C++) 257
本章小結(jié) 260
習(xí)題7 260
第8章 機(jī)械臂的視覺系統(tǒng)
8.1 視覺系統(tǒng)概述 261
8.2 ROS 圖像接口和相機(jī)驅(qū)動(dòng) 261
8.2.1 使用usb_cam 功能包測(cè)試USB攝像頭 262
8.2.2 Image 和CompressedImage圖像消息 264
8.2.3 RealSense 相機(jī)的驅(qū)動(dòng)安裝和測(cè)試 265
8.2.4 PointCloud2 點(diǎn)云消息 269
8.3 相機(jī)的標(biāo)定 270
8.3.1 camera_calibration 簡(jiǎn)介和安裝 270
8.3.2 camera_calibration 的相機(jī)標(biāo)定 270
8.4 cv_bridge 功能包 275
8.4.1 cv_bridge 安裝和測(cè)試 275
8.4.2 cv_bridge 的使用示例(Python) 277
8.4.3 cv_bridge 的使用示例(C++) 279
8.5 顏色檢測(cè) 282
8.5.1 HSV 顏色檢測(cè)和測(cè)試 282
8.5.2 編程實(shí)現(xiàn)HSV 顏色檢測(cè)(Python) 285
8.5.3 編程實(shí)現(xiàn)HSV 顏色檢測(cè)(C++) 288
8.6 ROS 中的物體檢測(cè) 289
8.6.1 物體檢測(cè)簡(jiǎn)述 289
8.6.2 find_object_2d 節(jié)點(diǎn)的測(cè)試 291
8.6.3 find_object_3d 節(jié)點(diǎn)的測(cè)試 293
8.6.4 darknet_ros 的安裝和測(cè)試 295
本章小結(jié) 297
習(xí)題8 297
第9章 機(jī)械臂的視覺抓取
9.1 視覺抓取關(guān)鍵技術(shù)分析 298
9.2 AR 標(biāo)簽檢測(cè)與定位 302
9.2.1 ar_track_alvar 的簡(jiǎn)介與安裝 302
9.2.2 創(chuàng)建AR 標(biāo)簽 303
9.2.3 檢測(cè)AR 標(biāo)簽 304
9.3 機(jī)械臂手眼標(biāo)定 306
9.3.1 手眼標(biāo)定的基本原理 306
9.3.2 easy_handeye 的安裝和準(zhǔn)備工作 308
9.3.3 眼在手外的手眼標(biāo)定 312
9.3.4 手眼標(biāo)定結(jié)果的發(fā)布和使用 318
9.4 基于AR 標(biāo)簽識(shí)別的自動(dòng)抓取 319
9.4.1 應(yīng)用系統(tǒng)原理 319
9.4.2 應(yīng)用測(cè)試 322
9.4.3 編程實(shí)現(xiàn)自動(dòng)抓取(Python) 324
9.4.4 編程實(shí)現(xiàn)自動(dòng)抓。–++) 327
本章小結(jié) 330
習(xí)題9 330
參考文獻(xiàn)