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é)合國內(nèi)外最新方法和技術(shù),總結(jié)自己多年機(jī)器人開發(fā)經(jīng)驗(yàn)以及教學(xué)科研成果的基礎(chǔ)上完成的。本書第1~4 章簡單概述了機(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)容。
本書可作為普通高校自動化、機(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ū)動系統(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)動學(xué) 008
1.4.1 關(guān)節(jié)空間和笛卡兒空間 008
1.4.2 正運(yùn)動學(xué) 009
1.4.3 逆運(yùn)動學(xué) 009
1.5 推薦閱讀 009
本章小結(jié) 009
習(xí)題1 010
第2章 認(rèn)識ROS
2.1 什么是ROS 011
2.2 ROS 的安裝與測試 011
2.2.1 操作系統(tǒng)和ROS 版本選擇 011
2.2.2 安裝ROS Melodic Morenia 版本 012
2.2.3 測試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é)代碼包簡要說明 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 動作 028
2.5.6 話題、服務(wù)和動作對比 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 話題通信測試 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ù)通信測試 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 動作通信和編程實(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 通信測試 085
4.2 ROS 常用組件和工具 089
4.2.1 XML 語法規(guī)范 089
4.2.2 launch 啟動文件 090
4.2.3 RViz 可視化平臺 096
4.2.4 rqt 工具箱 101
4.2.5 rosbag 數(shù)據(jù)記錄與回放 101
4.3 動態(tài)參數(shù)配置 101
4.3.1 編寫.cfg 文件 102
4.3.2 設(shè)置動態(tài)參數(shù)節(jié)點(diǎn)(Python) 103
4.3.3 設(shè)置動態(tài)參數(shù)節(jié)點(diǎn)(C++) 107
4.3.4 測試動態(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 測試和常用工具 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 語言簡化URDF 模型 142
5.3.1 xacro 模型文件常用語法 143
5.3.2 使用xacro 簡化機(jī)械臂URDF 模型 145
5.3.3 為機(jī)械臂添加移動底盤 148
5.4 sw2urdf 插件 149
5.4.1 sw2urdf 插件簡介 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 原理簡介 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)動學(xué)求解器 166
6.1.3 運(yùn)動規(guī)劃器 166
6.1.4 規(guī)劃場景 168
6.1.5 碰撞檢測 168
6.2 MoveIt!可視化配置 168
6.2.1 安裝MoveIt!并啟動配置助手 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 添加被動關(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 自動生成配置文件 182
6.3 使用RViz 快速上手MoveIt! 183
6.3.1 啟動Demo 并配置RViz 插件 184
6.3.2 使用MotionPlanning 交互 187
6.3.3 設(shè)置規(guī)劃場景測試碰撞檢測 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 啟動文件 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!啟動文件 204
6.5.3 真實(shí)機(jī)械臂測試 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 演示模式下測試 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 演示模式下測試 224
7.2.2 直線運(yùn)動示例(Python) 226
7.2.3 直線運(yùn)動示例(C++) 230
7.2.4 圓弧運(yùn)動示例(Python) 232
7.2.5 圓弧運(yùn)動示例(C++) 235
7.3 避障規(guī)劃 237
7.3.1 演示模式下測試 237
7.3.2 避障規(guī)劃示例(Python) 240
7.3.3 避障規(guī)劃示例(C++) 245
7.4 物品抓取與放置 247
7.4.1 演示模式下測試 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ū)動 261
8.2.1 使用usb_cam 功能包測試USB攝像頭 262
8.2.2 Image 和CompressedImage圖像消息 264
8.2.3 RealSense 相機(jī)的驅(qū)動安裝和測試 265
8.2.4 PointCloud2 點(diǎn)云消息 269
8.3 相機(jī)的標(biāo)定 270
8.3.1 camera_calibration 簡介和安裝 270
8.3.2 camera_calibration 的相機(jī)標(biāo)定 270
8.4 cv_bridge 功能包 275
8.4.1 cv_bridge 安裝和測試 275
8.4.2 cv_bridge 的使用示例(Python) 277
8.4.3 cv_bridge 的使用示例(C++) 279
8.5 顏色檢測 282
8.5.1 HSV 顏色檢測和測試 282
8.5.2 編程實(shí)現(xiàn)HSV 顏色檢測(Python) 285
8.5.3 編程實(shí)現(xiàn)HSV 顏色檢測(C++) 288
8.6 ROS 中的物體檢測 289
8.6.1 物體檢測簡述 289
8.6.2 find_object_2d 節(jié)點(diǎn)的測試 291
8.6.3 find_object_3d 節(jié)點(diǎn)的測試 293
8.6.4 darknet_ros 的安裝和測試 295
本章小結(jié) 297
習(xí)題8 297
第9章 機(jī)械臂的視覺抓取
9.1 視覺抓取關(guān)鍵技術(shù)分析 298
9.2 AR 標(biāo)簽檢測與定位 302
9.2.1 ar_track_alvar 的簡介與安裝 302
9.2.2 創(chuàng)建AR 標(biāo)簽 303
9.2.3 檢測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)簽識別的自動抓取 319
9.4.1 應(yīng)用系統(tǒng)原理 319
9.4.2 應(yīng)用測試 322
9.4.3 編程實(shí)現(xiàn)自動抓取(Python) 324
9.4.4 編程實(shí)現(xiàn)自動抓取(C++) 327
本章小結(jié) 330
習(xí)題9 330
參考文獻(xiàn)