3dwoo大學簡體電腦書店
ROS 2機器人開發/從入門到實踐
( 簡體 字)
作者:桑欣|類別:1. -> 電子工程 -> 機器人
出版社:機械工業ROS 2機器人開發/從入門到實踐 3dWoo書號: 56452
詢問書籍請說出此書號!
缺書
NT售價: 495
出版日:7/1/2024
頁數:390
光碟數:0
站長推薦:
印刷:黑白印刷語系: ( 簡體 字 )
ISBN:9787111758068不接受訂購
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證, 繁體書的下載亦請直接連絡出版社)
第1章 啟程——讓你的第一個
機器人動起來 1
1.1 ROS部落的自我介紹 1
1.1.1 機器人與ROS 2
1.1.2 ROS 2系統架構 3
1.1.3 ROS 2的已發佈版本 4
1.1.4 ROS 2機器人開發特色 4
1.2 開發環境搭建 5
1.2.1 準備所需軟體 6
1.2.2 安裝虛擬機器VirtualBox 6
1.2.3 在虛擬機器中安裝
Ubuntu 22.04 7
1.2.4 安裝ROS 2 11
1.3 運行你的第一個機器人 14
1.3.1 啟動海龜模擬器 14
1.3.2 使用鍵盤控制海龜 15
1.3.3 海龜例子的簡單分析 16
1.4 ROS 2基礎之Linux 17
1.4.1 Linux終端基礎操作 17
1.4.2 在Linux中安裝軟體 20
1.4.3 在Linux中編寫Python
程式 23
1.4.4 在Linux中編寫C++程式 26
1.4.5 Linux基礎之環境變數 28
1.5 小結與點評 29
第2章 ROS 2基礎入門——
從第一個節點開始 30
2.1 編寫你的第一個節點 30
2.1.1 Python示例 30
2.1.2 C++示例 33
2.2 使用功能包組織Python節點 37
2.2.1 在功能包中編寫Python
節點 37
2.2.2 功能包結構分析 40
2.3 使用功能包組織C++節點 41
2.3.1 在功能包中編寫C++節點 41
2.3.2 功能包結構分析 44
2.4 多功能包的最佳實踐Workspace 44
2.5 ROS 2基礎之程式設計 46
2.5.1 物件導向程式設計 46
2.5.2 用得到的C++新特性 53
2.5.3 多執行緒與回呼函數 58
2.6 小結與點評 62
第3章 訂閱和發佈—話題通信
探索 63
3.1 話題通信介紹 63
3.2 Python話題訂閱與發佈 66
3.2.1 通過話題發佈小說 66
3.2.2 訂閱小說並合成語音 69
3.3 C++話題訂閱與發佈 71
3.3.1 發佈速度控制海龜畫圓 71
3.3.2 訂閱Pose實現閉環控制 74
3.4 話題通信最佳實踐 77
3.4.1 完成工程架構設計 77
3.4.2 自訂通信介面 78
3.4.3 系統資訊獲取與發佈 81
3.4.4 在功能包中使用Qt 83
3.4.5 訂閱資料並用Qt顯示 84
3.5 ROS 2基礎之Git入門 87
3.5.1 新建代碼倉庫 87
3.5.2 學會提交代碼 88
3.5.3 學會使用Git忽略檔 90
3.6 小結與點評 90
第4章 服務和參數——深入
ROS 2通信 92
4.1 服務與參數通信介紹 92
4.1.1 服務通信介紹 92
4.1.2 基於服務的參數通信 95
4.2 用Python服務通信實現人臉檢測 97
4.2.1 自訂服務介面 98
4.2.2 人臉檢測 100
4.2.3 人臉檢測服務實現 102
4.2.4 人臉檢測用戶端的實現 104
4.3 用C++服務通信做一個巡邏
海龜 106
4.3.1 自訂服務介面 107
4.3.2 服務端代碼實現 107
4.3.3 用戶端代碼實現 109
4.4 在Python節點中使用參數 111
4.4.1 參數聲明與設置 112
4.4.2 訂閱參數更新 113
4.4.3 修改其他節點的參數 114
4.5 在C++節點中使用參數 116
4.5.1 參數聲明與設置 117
4.5.2 接收參數事件 117
4.5.3 修改其他節點的參數 119
4.6 使用launch啟動腳本 121
4.6.1 使用launch啟動多個節點 121
4.6.2 使用launch傳遞參數 123
4.6.3 launch使用進階 124
4.7 小結與點評 126
第5章 ROS 2常用開發工具 127
5.1 座標變換工具介紹 127
5.1.1 通過命令行使用TF 128
5.1.2 對TF 原理的簡單探究 131
5.2 Python中的手眼座標變換 133
5.2.1 通過Python發佈靜態TF 133
5.2.2 通過Python發佈動態TF 136
5.2.3 通過Python查詢TF關係 137
5.3 C++中的地圖坐標系變換 139
5.3.1 通過C++發佈靜態TF 139
5.3.2 通過C++發佈動態TF 141
5.3.3 通過C++查詢TF關係 143
5.4 常用視覺化工具rqt與RViz 145
5.4.1 GUI框架rqt 145
5.4.2 資料視覺化工具RViz 147
5.5 資料記錄工具ros2 bag 149
5.6 ROS 2基礎之Git進階 153
5.6.1 查看修改內容 153
5.6.2 學會撤銷代碼 154
5.6.3 進階掌握Git分支 156
5.7 小結與點評 158
第6章 建模與模擬——創建
自己的機器人 160
6.1 機器人建模與模擬概述 160
6.1.1 移動機器人的結構介紹 160
6.1.2 常用機器人模擬平臺 161
6.2 使用URDF創建機器人 162
6.2.1 幫機器人創建一個身體 162
6.2.2 在RViz中顯示機器人 165
6.2.3 使用Xacro簡化URDF 170
6.2.4 創建機器人及感測器部件 173
6.2.5 完善機器人執行器部件 177
6.2.6 貼合地面,添加虛擬部件 179
6.3 添加物理屬性讓機器人更真實 180
6.3.1 為機器人部件添加碰撞
屬性 180
6.3.2 為機器人部件添加品質
與慣性 181
6.4 在Gazebo中完成機器人模擬 183
6.4.1 安裝與使用Gazebo構建
世界 184
6.4.2 在Gazebo中載入機器人
模型 189
6.4.3 使用Gazebo標籤擴展
URDF 191
6.4.4 使用兩輪差速外掛程式控制
機器人 193
6.4.5 雷射雷達感測器模擬 197
6.4.6 慣性測量感測器模擬 200
6.4.7 深度相機感測器模擬 203
6.5 使用ros2_control驅動機器人 205
6.5.1 ros2_control介紹與安裝 205
6.5.2 使用Gazebo接入
ros2_control 209
6.5.3 使用關節狀態發佈控制器 213
6.5.4 使用力控制器控制輪子 216
6.5.5 使用兩輪差速控制器控制
機器人 218
6.6 小結與點評 221
第7章 自主導航——讓機器人
自己動起來 222
7.1 機器人導航介紹 222
7.1.1 同步定位與地圖構建 222
7.1.2 機器人導航 224
7.2 使用slam_toolbox完成建圖 225
7.2.1 構建第一張導航地圖 225
7.2.2 將地圖保存為檔 227
7.3 機器人導航框架Navigation 2 229
7.3.1 Navigation 2介紹與安裝 229
7.3.2 配置Navigation 2參數 231
7.3.3 編寫launch並啟動導航 232
7.3.4 進行單點與路點導航 234
7.3.5 導航過程中進行動態避障 236
7.3.6 優化導航速度和膨脹半徑 237
7.3.7 優化機器人到點精度 239
7.4 導航應用開發指南 240
7.4.1 使用話題初始化機器人
位姿 240
7.4.2 使用TF獲取機器人即時
位置 243
7.4.3 調用介面進行單點導航 244
7.4.4 使用介面完成路點導航 250
7.5 導航最佳實踐之做一個自動巡檢
機器人 253
7.5.1 完成機器人系統架構設計 253
7.5.2 編寫巡檢控制節點 253
7.5.3 添加語音播報功能 258
7.5.4 訂閱圖像並記錄 261
7.6 ROS 2基礎之Git倉庫託管 262
7.6.1 添加自描述檔 262
7.6.2 將代碼託管在Gitee 265
7.6.3 將代碼託管在GitHub 266
7.7 小結與點評 270
第8章 使用自己的規劃器和
控制器導航 271
8.1 掌握ROS 2外掛程式機制 271
8.1.1 pluginlib介紹與安裝 271
8.1.2 定義外掛程式抽象類別 272
8.1.3 編寫並生成第一個外掛程式 272
8.1.4 編寫外掛程式測試程式 275
8.2 自訂導航規劃器 276
8.2.1 自訂規劃器介紹 276
8.2.2 搭建規劃器外掛程式框架 279
8.2.3 實現自訂規劃演算法 283
8.2.4 配置導航參數並測試 284
8.3 自訂導航控制器 286
8.3.1 自訂控制器介紹 286
8.3.2 搭建控制器外掛程式框架 287
8.3.3 實現自訂控制演算法 292
8.3.4 配置導航參數並測試 294
8.4 小結與點評 295
第9章 搭建一個實體移動
機器人 296
9.1 移動機器人系統設計 296
9.1.1 機器人感測器 296
9.1.2 機器人執行器 297
9.1.3 機器人決策系統 298
9.2 單片機開發基礎 298
9.2.1 開發平臺介紹與安裝 298
9.2.2 第一個HelloWorld工程 301
9.2.3 使用代碼點亮LED燈 303
9.2.4 使用超聲波測量距離 304
9.2.5 使用開源庫驅動IMU 305
9.3 機器人控制系統的實現 306
9.3.1 使用開源庫驅動多路
電動機 307
9.3.2 電動機速度測量與轉換 308
9.3.3 使用PID控制輪子轉速 311
9.3.4 運動學正逆解的實現 315
9.3.5 機器人里程計計算 320
9.4 使用micro-ROS接入ROS 2 322
9.4.1 第一個節點 323
9.4.2 訂閱話題控制機器人 327
9.4.3 發佈機器人里程計話題 329
9.5 移動機器人建圖與導航實現 333
9.5.1 驅動並顯示雷達點雲 334
9.5.2 移動機器人的坐標系框架
介紹 337
9.5.3 準備機器人URDF 338
9.5.4 發佈里程計TF 341
9.5.5 完成機器人建圖並保存
地圖 343
9.5.6 完成機器人導航 347
9.6 小結與點評 348
第10章 ROS 2使用進階 349
10.1 消息服務品質之QoS 349
10.1.1 QoS策略介紹 349
10.1.2 QoS的相容性 352
10.1.3 Python QoS相容性測試 353
10.1.4 C++ QoS相容性測試 354
10.2 執行器與回檔組 356
10.2.1 執行器與回檔組介紹 356
10.2.2 在Python中使用回
調組 358
10.2.3 在C++中使用回檔組 361
10.3 生命週期節點 364
10.3.1 生命週期節點介紹 364
10.3.2 在Python中編寫生命
週期節點 367
10.3.3 在C++中編寫生命週期
節點 369
10.4 同一進程組織多個節點 371
10.4.1 使用執行器組織多個
節點 371
10.4.2 使用元件運行組合
節點 375
10.4.3 編寫自己的元件 378
10.5 使用消息篩檢程式同步資料 380
10.5.1 消息篩檢程式介紹 380
10.5.2 在Python中同步感測器
數據 380
10.5.3 在C++中同步感測器
數據 381
10.6 DDS中介軟體進階 384
10.6.1 使用不同的DDS進行
通信 384
10.6.2 配置局域網通信 386
10.6.3 調整DDS配置 386
10.6.4 使用DDS共用記憶體 388
10.7 小結與點評 390
機器人開發是一項複雜的系統工程,ROS 2為智慧型機器人開發提供了強有力的支援,極大地提高了機器人軟體發展效率。本書首先對ROS 2的基礎概念、通信機制、常用庫和工具進行介紹,帶領讀者入門ROS 2機器人開發;接著引導讀者完成移動機器人的建模和模擬、建圖和導航、自訂控制器和規劃器等一系列實踐;然後在真機實戰環節,通過製作一個基於ROS 2的真實機器人,幫助讀者打通模擬與真機之間的壁壘;最後,本書深入講解了ROS 2進階使用的相關知識,為讀者進一步在實戰中使用ROS 2進行機器人開發打下夯實基礎。考慮讀者基礎,書中示例均以C++和Python兩種語言實現,同時加入了關於C++新特性、Git工具、多執行緒和回呼函數等基礎知識的講解。
pagetop