3dwoo大學簡體電腦書店
ROS 2智能機器人開發實踐
( 簡體 字)
作者:胡春旭,李喬龍類別:1. -> 電子工程 -> 機器人
出版社:電子工業出版社ROS 2智能機器人開發實踐 3dWoo書號: 56497
詢問書籍請說出此書號!
有庫存
NT售價: 640
出版日:1/1/2025
頁數:492
光碟數:0
站長推薦:
印刷:黑白印刷語系: ( 簡體 字 )
ISBN:9787121491733 加入購物車加到我的最愛 (請先登入會員)
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證, 繁體書的下載亦請直接連絡出版社)
第1部分 ROS 2 基礎原理
1 ROS:智能機器人的靈魂 2
1.1 智能機器人時代 2
1.2 ROS 發展歷程 3
1.2.1 ROS 的起源 3
1.2.2 ROS 的發展 4
1.2.3 ROS 的特點 6
1.3 ROS 2 與 ROS 1 7
1.3.1 ROS 1 的局限性 7
1.3.2 全新的 ROS 2 8
1.3.3 ROS 2 與 ROS 1 的對比 10
1.4 ROS 2 安裝方法 13
1.4.1 Linux 是什么 14
1.4.2 Ubuntu 是什么 14
1.4.3 Ubuntu 操作系統安裝 15
1.4.4 ROS 2 系統安裝 18
1.5 ROS 2 命令行操作 20
1.5.1 Linux 中的命令行 21
1.5.2 海龜仿真實踐 25
1.5.3 ROS 2 中的命令行 26
1.6 本章小結 31

2 ROS 2 核心原理:構建機器人的基石 32
2.1 ROS 2 機器人開發流程 32
2.2 工作空間:機器人開發的大本營 34
2.2.1 工作空間是什么 34
2.2.2 創建工作空間 35
2.2.3 編譯工作空間 36
2.2.4 設置環境變量 37
2.3 功能包:機器人功能分類 37
2.3.1 功能包是什么 38
2.3.2 創建功能包 38
2.3.3 功能包的結構 39
2.3.4 編譯功能包 44
2.4 節點:機器人的工作細胞 45
2.4.1 節點是什么 46
2.4.2 節點編程方法(Python) 47
2.4.3 節點編程方法(C++) 49
2.4.4 節點的命令行操作 51
2.4.5 節點應用示例:目標檢測 52
2.5 話題:節點間傳遞數據的橋梁 54
2.5.1 話題是什么 55
2.5.2 話題通信模型 55
2.5.3 話題通信編程示例 57
2.5.4 話題發布者編程方法(Python) 58
2.5.5 話題訂閱者編程方法(Python) 59
2.5.6 話題發布者編程方法(C++) 60
2.5.7 話題訂閱者編程方法(C++) 62
2.5.8 話題的命令行操作 63
2.5.9 話題應用示例:目標檢測(周期式) 64
2.6 服務:節點間的你問我答 68
2.6.1 服務是什么 68
2.6.2 服務通信模型 69
2.6.3 服務通信編程示例 70
2.6.4 客戶端編程方法(Python) 71
2.6.5 服務端編程方法(Python) 72
2.6.6 客戶端編程方法(C++) 73
2.6.7 服務端編程方法(C++) 75
2.6.8 服務的命令行操作 76
2.6.9 服務應用示例:目標檢測(請求式) 77
2.7 通信接口:數據傳遞的標準結構 80
2.7.1 通信接口是什么 80
2.7.2 通信接口的定義方法 82
2.7.3 通信接口的命令行操作 85
2.7.4 服務接口應用示例:請求目標檢測的坐標 86
2.7.5 話題接口應用示例:周期性發布目標檢測的坐標 89
2.8 動作:完整行為的流程管理 93
2.8.1 動作是什么 93
2.8.2 動作通信模型 93
2.8.3 動作通信編程示例 95
2.8.4 動作接口的定義方法 96
2.8.5 服務端編程方法(Python) 97
2.8.6 客戶端編程方法(Python) 99
2.8.7 客戶端編程方法(C++) 101
2.8.8 服務端編程方法(C++) 104
2.8.9 動作的命令行操作 107
2.9 參數:機器人系統的全局字典 107
2.9.1 參數是什么 108
2.9.2 參數通信模型 108
2.9.3 參數的命令行操作 109
2.9.4 參數編程方法(Python) 111
2.9.5 參數編程方法(C++) 112
2.9.6 參數應用示例:設置目標檢測的閾值 113
2.10 數據分發服務(DDS):機器人的神經網絡 116
2.10.1 DDS 是什么 116
2.10.2 DDS 通信模型 118
2.10.3 質量服務策略 QoS 120
2.10.4 命令行中配置 DDS 的 QoS 123
2.10.5 DDS 編程示例 125
2.11 分布式通信 128
2.11.1 分布式通信是什么 128
2.11.2 SSH 遠程網絡連接 128
2.11.3 分布式數據傳輸 130
2.11.4 分布式網絡分組 132
2.11.5 海龜分布式通信示例 133
2.12 本章小結 133

3 ROS 2 常用工具:讓機器人開發更便捷 134
3.1 Launch:多節點啟動與配置腳本 134
3.1.1 多節點啟動方法 136
3.1.2 命令行參數配置 137
3.1.3 資源重映射 139
3.1.4 ROS 參數設置 141
3.1.5 Launch 啟動文件嵌套包含 143
3.2 tf:機器人坐標系管理系統 144
3.2.1 機器人中的坐標系 145
3.2.2 tf 命令行操作 146
3.2.3 靜態 tf 廣播(Python) 149
3.2.4 靜態 tf 廣播(C++) 151
3.2.5 動態 tf 廣播(Python) 153
3.2.6 動態 tf 廣播(C++) 155
3.2.7 tf 監聽(Python) 157
3.2.8 tf 監聽(C++) 160
3.2.9 tf 綜合應用示例:海龜跟隨(Python) 163
3.2.10 tf 綜合應用示例:海龜跟隨(C++) 168
3.3 Gazebo:機器人三維物理仿真平臺 172
3.3.1 Gazebo 介紹 172
3.3.2 機器人仿真示例 175
3.3.3 傳感器仿真示例 177
3.4 RViz:數據可視化平臺 178
3.4.1 RViz 介紹 178
3.4.2 數據可視化操作流程 181
3.4.3 應用示例一:tf 數據可視化 182
3.4.4 應用示例二:圖像數據可視化 184
3.4.5 Gazebo 與 RViz 的關系 186
3.5 rosbag:數據記錄與回放 186
3.5.1 記錄數據 187
3.5.2 回放數據 188
3.6 rqt:模塊化可視化工具箱 189
3.6.1 rqt 介紹 189
3.6.2 日志顯示 190
3.6.3 圖像顯示 191
3.6.4 發布話題/服務數據 192
3.6.5 繪制數據曲線 193
3.6.6 數據包管理 193
3.6.7 節點可視化 194
3.7 ROS 2 開發環境配置 195
3.7.1 版本管理軟件 git 195
3.7.2 集成開發環境 VSCode 196
3.8 本章小結 198

第 2 部分 ROS 2 機器人設計
4 ROS 2 機器人仿真:零成本玩轉機器人 200
4.1 機器人的定義與組成 200
4.2 URDF 機器人建模 203
4.2.1 連桿的描述 204
4.2.2 關節的描述 206
4.2.3 完整機器人模型 208
4.3 創建機器人URDF模型 209
4.3.1 機器人模型功能包 209
4.3.2 機器人模型可視化 209
4.3.3 機器人模型解析 213
4.4 XACRO機器人模型優化 217
4.4.1 XACRO文件常見語法 218
4.4.2 機器人模型優化 219
4.4.3 機器人模型可視化 223
4.5 完善機器人仿真模型 223
4.5.1 完善物理參數 224
4.5.2 添加控制器插件 225
4.6 Gazebo 機器人仿真 226
4.6.1 在Gazebo中加載機器人模型 226
4.6.2 機器人運動控制仿真 230
4.6.3 RGB相機仿真與可視化 232
4.6.4 RGBD相機仿真與可視化 236
4.6.5 激光雷達仿真與可視化 241
4.7 本章小結 244

5 ROS 2 機器人構建:從仿真到實物 245
5.1 機器人從仿真到實物 245
5.1.1 案例剖析 245
5.1.2 機器人設計 247
5.1.3 軟件架構設計 248
5.1.4 計算機端開發環境配置 249
5.1.5 機器人仿真測試 251
5.2 驅動系統設計:讓機器人動得了 251
5.2.1 電機驅動原理:從PWM到H橋 251
5.2.2 電機正反轉控制編程 255
5.3 底盤運動控制:讓機器人動得穩 261
5.3.1 電機編碼器測速原理 261
5.3.2 編碼器測速編程 262
5.3.3 電機閉環控制方法 266
5.3.4 電機閉環控制編程 272
5.4 運動學正逆解:讓機器人動得準 275
5.4.1 機常見器人運動學模型 275
5.4.2 差速運動學原理 281
5.4.3 差速運動學逆解:計算兩個輪子的轉速 283
5.4.4 差速運動學正解:計算機器人整體的速度 284
5.5 運動控制器中還有什么 284
5.5.1 電源管理:一個輸入多種輸出 285
5.5.2 IMU:測量機器人的姿態變化 287
5.5.3 人機交互:底層狀態清晰明了 291
5.6 機器人控制系統:從“肌肉”到“大腦” 292
5.6.1 控制系統的計算平臺 293
5.6.2 控制系統的燒寫與配置 293
5.7 本章小結 300

6 ROS 2 控制與感知:讓機器人動得了、看得見 301
6.1 機器人通信協議開發 301
6.1.1 通信協議設計 302
6.1.2 通信協議示例解析 303
6.1.3 運動控制器端協議開發(下位機) 306
6.1.4 應用處理器端協議開發(上位機) 314
6.2 機器人 ROS 2 底盤驅動開發 318
6.2.1 機器人 ROS 2 底盤驅動 318
6.2.2 速度控制話題的訂閱 321
6.2.3 里程計話題與 tf 的維護 324
6.2.4 機器人狀態的動態監控 333
6.3 機器人運動編程與可視化 336
6.3.1 ROS 2 速度控制消息定義 337
6.3.2 運動編程與可視化 338
6.4 相機驅動與圖像數據 339
6.4.1 常用相機類型 340
6.4.2 相機驅動與可視化 341
6.4.3 ROS 2 圖像消息定義 343
6.4.4 三維相機驅動與可視化 346
6.4.5 ROS 2 點云消息定義 347
6.5 激光雷達驅動與可視化 348
6.5.1 常見激光雷達類型 348
6.5.2 ROS 2 雷達消息定義 349
6.5.3 激光雷達驅動與數據可視化 351
6.6 IMU 驅動與數據可視化 354
6.6.1 ROS 2 IMU 消息定義 354
6.6.2 IMU 驅動與可視化 354
6.7 本章小結 356

第 3 部分 ROS 2 機器人應用
7 ROS 2 視覺應用:讓機器人看懂世界 358
7.1 機器視覺原理簡介 358
7.2 ROS 2 相機標定 361
7.2.1 安裝相機標定功能包 361
7.2.2 運行相機標定節點 362
7.2.3 相機標定流程 362
7.2.4 相機標定文件的使用 366
7.2.5 雙目相機標定 370
7.3 OpenCV 圖像處理 371
7.3.1 安裝 OpenCV 371
7.3.2 在 ROS 2 中使用 OpenCV 371
7.4 視覺應用一:視覺巡線 374
7.4.1 基本原理與實現框架 374
7.4.2 機器人視覺巡線仿真 376
7.4.3 真實機器人視覺巡線 381
7.5 視覺應用二:二維碼識別 382
7.5.1 二維碼掃描庫——Zbar 382
7.5.2 相機識別二維碼 383
7.5.3 真實機器人相機識別二維碼 387
7.5.4 真實機器人二維碼跟隨 388
7.6 機器學習應用一:深度學習視覺巡線 389
7.6.1 基本原理與實現框架 390
7.6.2 深度學習視覺巡線應用 390
7.6.3 數據采集與模型訓練 392
7.6.4 模型效果評估測試 395
7.6.5 在機器人中部署模型 396
7.7 機器學習應用二:YOLO 目標檢測 399
7.7.1 基本原理與實現框架 399
7.7.2 YOLO 目標檢測部署 401
7.7.3 數據采集與模型訓練 403
7.7.4 機器人目標檢測與跟隨 406
7.8 本章小結 407

8 ROS 2 地圖構建:讓機器人理解環境 408
8.1 SLAM 地圖構建原理 408
8.1.1 SLAM 是什么 408
8.1.2 SLAM 基本原理 411
8.1.3 SLAM 后端優化 412
8.2 SLAM Toolbox 地圖構建 414
8.2.1 算法原理介紹 415
8.2.2 安裝與配置方法 415
8.2.3 仿真環境中的 SLAM Toolbox 地圖構建 416
8.2.4 真實機器人 SLAM Toolbox 地圖構建 418
8.3 Cartographer:二維地圖構建 420
8.3.1 算法原理介紹 421
8.3.2 安裝與配置方法 . 422
8.3.3 仿真環境中的 Cartographer 地圖構建 423
8.3.4 真實機器人 Cartographer 地圖構建 427
8.4 ORB:視覺地圖構建 430
8.4.1 算法原理介紹 430
8.4.2 安裝與配置方法 . 432
8.4.3 真實機器人 ORB 地圖構建 434
8.5 RTAB:三維地圖構建 435
8.5.1 算法原理介紹 436
8.5.2 安裝與配置方法 436
8.5.3 仿真環境中的RTAB地圖構建 438
8.5.4 真實機器人RTAB地圖構建 441
8.6 本章小結 443

9 ROS 2 自主導航:讓機器人運動自由 444
9.1 機器人自主導航原理 444
9.2 Nav2 自主導航框架 445
9.2.1 系統框架 445
9.2.2 全局導航 447
9.2.3 局部導航 448
9.2.4 定位功能 450
9.3 Nav2安裝與體驗 452
9.3.1 Nav2安裝方法 452
9.3.2 Nav2案例體驗 452
9.4 機器人自主導航仿真 455
9.4.1 Nav2參數配置 455
9.4.2 Launch啟動文件配置 456
9.4.3 機器人自主導航仿真 458
9.5 機器人自主導航實踐 461
9.5.1 導航地圖配置 461
9.5.2 Nav2 參數與Launch啟動文件配置 462
9.5.3 機器人自主導航實踐 464
9.6 機器人自主導航編程 467
9.6.1 功能運行 467
9.6.2 編程方法(C++) 468
9.6.3 編程方法(Python) 469
9.7 機器人自主探索應用 470
9.7.1 Nav2+SLAM Toolbox 自主探索應用 470
9.7.2 Nav2+Cartographer 自主探索應用 473
9.8 本章小結 476
本書以ROS 2核心原理為主線,以機器人開發實踐為重心,在詳細講解ROS 2核心概念、組件工具的基礎上,介紹ROS 2構建仿真/實物機器人系統的方法,剖析ROS 2用于視覺識別、地圖構建、自主導航等應用的方法,配有大量圖表、源碼等,幫助讀者在實現ROS 2基礎功能的同時,深入理解基于ROS 2的機器人開發方法,從而將書中的內容用于實踐。 本書采用最新穩定版本ROS 2系統和全新一代Gazebo機器人仿真平臺,讀者只需準備一臺計算機,就可以快速上手學習。同時,本書介紹了實物機器人的搭建方法及相應功能的實現,書中源碼都加入了中文注釋,并針對核心內容提供C++和Python兩個版本。為方便讀者閱讀和學習本書,筆者團隊還專門創建了一個網頁,供讀者下載配套源碼、查看操作指令、學習配套視頻教程。
本書特色和內容
本書匯聚了我過去十幾年的機器人開發經驗,雖然將 ROS 作為貫穿全書的主線,但更重要的是告訴所有讀者:ROS 既是開發機器人的軟件平臺,也是軟件工具,在開發機器人時,不僅要會用這個工具,還要懂機器人開發的諸多原理。所以,本書不僅會詳細講解 ROS 2 的基本概念,更會介紹如何將這些概念應用在機器人開發中,同時指導讀者從零構建一個完整的機器人系統。

本書共有 9 章,分為三部分。
第一部分(1~3 章)介紹 ROS 2 基礎原理:主要講解 ROS 2 的發展歷程、核心原理和組件工具,提供大量的編程和使用示例,為讀者全面展示 ROS 2 的基礎原理和功能。
第二部分(4~6 章)介紹 ROS 2 機器人設計:主要講解如何使用 ROS 2 設計一個仿真機器人和實物機器人,有條件的讀者甚至可以根據書中內容自己做一個機器人。
第三部分(7~9 章)介紹 ROS 2 機器人應用:主要講解使用 ROS 2 開發機器人視覺識別、地圖構建和自主導航等眾多應用的方法,讓機器人不僅動得了,還能看懂和理解周圍的環境,并且產生進一步的交互運動。本書特色和內容
本書匯聚了我過去十幾年的機器人開發經驗,雖然將 ROS 作為貫穿全書的主線,但更重要的是告訴所有讀者:ROS 既是開發機器人的軟件平臺,也是軟件工具,在開發機器人時,不僅要會用這個工具,還要懂機器人開發的諸多原理。所以,本書不僅會詳細講解 ROS 2 的基本概念,更會介紹如何將這些概念應用在機器人開發中,同時指導讀者從零構建一個完整的機器人系統。
pagetop