ROS 與 ROS2 開發指南

張銳

  • 出版商: 電子工業
  • 出版日期: 2023-07-01
  • 售價: $528
  • 貴賓價: 9.5$502
  • 語言: 簡體中文
  • 頁數: 308
  • ISBN: 7121458128
  • ISBN-13: 9787121458125
  • 相關分類: Python程式語言
  • 立即出貨

買這商品的人也買了...

商品描述

本書是學習ROS的實用化書籍。從對機器人的介紹開始,由淺入深依次講解ROS依賴的Linux系統、常用的高級編程語言Python、ROS環境和機器人編程開發實訓等內容。在學習ROS開發過程中,本書在實戰篇加入了SLAM建圖、視覺跟隨和物聯網控制等前沿知識的介紹,使讀者在學習編程技能的同時,能夠更加深入地理解最新的機器人控制理論。為了發揮ROS與ROS2各自的優勢,本書提出了ROS與ROS2混合編程方法,並給出了翔實的實踐案例。 本書可供從事無人駕駛和移動機器人研究的科研工作者、高校教師及相關專業學生使用。

目錄大綱

目 錄
預 備 篇
第1章 緒論 1
1.1 機器人的概念及特點 1
1.1.1 機器人的由來 1
1.1.2 機器人的定義 2
1.1.3 機器人的主要特點 3
1.2 機器人的組成與分類 3
1.2.1 機器人的組成 3
1.2.2 機器人的分類 4
1.3 智能機器人 10
1.3.1 智能機器人的定義 10
1.3.2 腦科學與智能機器人 11
1.3.3 人工智能在機器人中的應用 11
第2章 Linux基礎 14
2.1 Linux簡介 14
2.1.1 Linux的發行版 14
2.1.2 Linux應用領域 15
2.2 Linux系統目錄結構 15
2.3 Linux用戶及用戶組管理 18
2.4 Linux文件屬性管理 20
2.4.1 查看文件屬性 20
2.4.2 文件屬性修改 21
2.4.3 文件權限修改 22
2.5 Linux目錄管理 24
2.5.1 常用命令 24
2.5.2 文件內容查看指令 27
2.5.3 重定向與追加 28
2.6 Linux包操作 29
第3章 Python基礎 31
3.1 Python簡介 31
3.1.1 Python發行版 31
3.1.2 Python特點 32
3.2 Python基礎介紹 32
3.2.1 基礎導引 32
3.2.2 變量 33
3.2.3 數據類型 34
3.2.4 條件語句 35
3.2.5 循環語句 36
3.2.6 切片操作 37
3.3 數據常用操作方法 38
3.3.1 字符串常見操作 38
3.3.2 列表常見操作 43
3.3.3 字典常見操作 46
3.3.4 集合常見操作 51
3.3.5 元組常見操作 52
3.3.6 邏輯運算 54
3.4 函數 54
3.4.1 函數簡介 54
3.4.2 參數(argument-list) 55
3.4.3 局部變量與全局變量 57
3.4.4 返回值 58
3.4.5 遞歸函數 59
3.4.6 匿名函數 59
3.4.7 列表推導式 59
3.4.8 字典推導式 60
3.4.9 常用內置函數 61
3.5 面向對象 64
3.5.1 面向過程與面向對象 64
3.5.2 類與實例 65
3.5.3 類屬性與實例屬性 65
3.5.4 類方法與靜態方法 68
3.5.5 魔法方法 69
3.5.6 面向對象的三大特性 71
3.6 常用術語介紹 74
基 礎 篇
第4章 ROS概述 76
4.1 初識ROS 76
4.2 PC安裝ROS 79
4.3 Raspberry 系統下安裝ROS的腳本 83
第5章 ROS基礎 84
5.1 文件系統級 84
5.2 計算圖級 86
5.3 開源社區級 87
5.4 文件系統工具 87
5.4.1 使用rospack 87
5.4.2 使用roscd 88
5.4.3 使用rosls 89
5.4.4 使用rosed 89
5.4.5 使用roscp 89
5.5 創建工作空間 89
5.5.1 創建工作空間簡介 90
5.5.2 工作空間目錄解析 90
5.6 功能包的創建與編譯 91
5.6.1 catkin功能包的組成 91
5.6.2 創建功能包 92
5.6.3 功能包依賴關系 92
5.6.4 功能包命名規範 93
5.6.5 刪除功能包 94
5.6.6 編譯功能包 94
5.7 ROS節點 96
5.7.1 啟動ROS 97
5.7.2 使用rosnode 97
5.8 ROS主題與節點交互 98
5.8.1 控制turtle移動 98
5.8.2 查看節點信息 99
5.8.3 查看主題信息 100
5.8.4 使用 rqt_graph 102
5.9 ROS服務和參數 103
5.10 創建ROS消息和ROS服務 106
5.10.1 消息(msg)和服務(srv)介紹 107
5.10.2 使用 msg 107
5.10.3 使用 srv 109
5.11 編寫發布器與訂閱器 110
5.11.1 定義msg消息 110
5.11.2 編寫發布器 112
5.11.3 編寫訂閱器 114
5.11.4 啟動rqt查看節點信息 115
5.12 編寫服務端和客戶端 116
5.12.1 定義srv服務 116
5.12.2 編寫服務端 118
5.12.3 編寫客戶端 120
5.13 編寫launch文件 122
5.13.1 roslaunch使用方法 122
5.13.2 編寫launch文件介紹 125
實 戰 篇
第6章 ARTROBOT機器人移動平臺搭建 127
6.1 三軸全向移動機器人介紹 127
6.1.1 全向輪結構 127
6.1.2 底盤結構設計 127
6.1.3 直流電機的選擇 129
6.1.4 電機驅動板 129
6.1.5 ROS的主控板 130
6.2 運動學建模和分析 130
6.2.1 機器人坐標繫系統分析 130
6.2.2 運動學模型分析 132
6.2.3 逆運動學模型方程推導 133
6.2.4 正運動學模型方程推導 135
6.2.5 航跡推算 136
6.3 ros_arduino_bridge功能包集 136
6.3.1 ros_arduino_bridge功能包集簡介 137
6.3.2 安裝ros_arduino_bridge功能包集 139
6.3.3 安裝python-serial功能包 139
6.3.4 串口的操作權限 139
6.4 下位機Arduino代碼詳解 140
6.4.1 ros_arduino_bridge功能簡介 140
6.4.2 創建ros_arduino_bridge項目 141
6.4.3 mobileBaseArduinoCode.ino 141
6.4.4 commands.h 147
6.4.5 encoder_driver.h 147
6.4.6 encoder_driver.ino 148
6.4.7 motor_driver.h 151
6.4.8 motor_driver.ino 151
6.4.9 omniWheel_controller.h 154
6.4.10 sensors.h 157
6.5 上位機ros_arduino_python代碼 158
6.5.1 ros_arduino_python功能簡介 158
6.5.2 arduino.launch 159
6.5.3 my_arduino_params.yaml 159
6.5.4 arduino_node.py 160
6.5.5 base_controller.py 161
第7章 機器人傳感器配置與使用 167
7.1 慣性測量單元校準和調試 167
7.1.1 慣性測量單元相關介紹 167
7.1.2 IMU功能包簡介 167
7.1.3 在ROS環境下復制並編譯IMU源碼 168
7.1.4 IMU初始標定 168
7.1.5 啟動IMU測試 168
7.1.6 單獨運行IMU 169
7.2 雷達調試 170
7.2.1 雷達選型 170
7.2.2 下載編譯ROS下驅動源碼 171
7.2.3 生成掛載點 172
7.2.4 啟動雷達測試 174
7.2.5 讀取雷達數據 174
7.3 udev串口配置 177
7.3.1 udev簡介 177
7.3.2 udev規則 177
7.3.3 udev內容 179
7.3.4 udev生效 183
7.4 ROS中TF變換 184
7.4.1 TF功能包 185
7.4.2 TF廣播與監聽 187
7.4.3 TF常用工具 193
第8章 SLAM及導航 198
8.1 SLAM簡介 198
8.2 常見激光SLAM算法簡介 199
8.3 應用gmapping構建機器人約束條件 200
8.4 slam_gmapping功能包 201
8.5 應用gmapping構建二維地圖 201
8.6 SLAM構建地圖過程分析 205
8.6.1 地圖分析 205
8.6.2 SLAM執行過程 206
8.6.3 gmapping參數設定 207
8.7 ROS機器人導航簡介 209
8.8 機器人路徑規劃算法簡介 212
8.9 應用導航功能包實現自主路徑規劃 214
8.9.1 路徑規劃執行過程 214
8.9.2 導航功能包參數設定 215
第9章 機器人功能擴展實例 218
9.1 機器人視覺跟隨功能 218
9.1.1 ROS下攝像頭的標定 218
9.1.2 ROS跟隨功能實現 226
9.1.3 launch啟動及效果演示 236
9.2 機器人+物聯網功能 239
9.2.1 物聯網模塊介紹 240
9.2.2 物聯網模塊硬件接線 240
9.2.3 物聯網模塊協議 244
9.2.4 機器人+物聯網功能實現 244
9.2.5 launch啟動及效果演示 246
第10章 ROS2簡介 249
10.1 從ROS1到ROS2 249
10.1.1 ROS1的局限性 250
10.1.2 ROS2對ROS1的改進 250
10.2 ROS2系統架構 251
10.3 ROS2安裝 252
10.3.1 ROS2在Ubuntu上安裝 252
10.3.2 Ubuntu ROS2測試 253
10.4 ROS2通信 253
10.4.1 節點 254
10.4.2 主題 254
10.4.3 服務 256
10.4.4 參數 259
10.4.5 基本操作 261
10.5 ROS2編程 262
10.5.1 工作空間 262
10.5.2 ROS2功能包 263
10.5.3 發布者和訂閱者 264
10.5.4 編寫簡單的服務和客戶端節點 270
10.5.5 創建ROS2消息和服務類型 275
10.6 ROS1和ROS2之間的橋接通信 283
10.6.1 ros1_bridge功能包 283
10.6.2 ros1_bridge之主題通信 283
10.6.3 ros1_bridge之服務通信 285
第11章 交叉編譯器 286
11.1 GNU toolchain介紹 286
11.1.1 gcc和g++ 286
11.1.2 as、ld和ar 287
11.2 從源碼製作gcc編譯器 288
11.3 交叉編譯器的製作 289