![](img/frame_left_1.gif) |
-- 會員 / 註冊 --
|
|
|
|
ROS與ROS2開發指南 ( 簡體 字) |
作者:張銳 | 類別:1. -> 電子工程 -> 機器人 |
譯者: |
出版社:電子工業出版社 | 3dWoo書號: 56333 詢問書籍請說出此書號!【有庫存】 NT售價: 440 元 |
出版日:7/1/2023 |
頁數:308 |
光碟數:0 |
|
站長推薦: ![](img/star_1.gif) |
印刷:黑白印刷 | 語系: ( 簡體 版 ) |
|
加入購物車 │加到我的最愛 (請先登入會員) |
ISBN:9787121458125 |
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 序 |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證) |
作者序: |
譯者序: |
前言:序
從微軟在2014年對Windows XP停止服務,到2020年對Windows 7停止服務,這就不僅需要我國加快推動國產操作系統的建設,也需要加強我國在開源軟件生態中的話語權,提高國產軟件的核心研發能力。
現在,我們正處于進入輔助駕駛的重要階段,這一階段是實現無人駕駛的過渡期。也許三五年后,在路況較好的情況下,人們就可以坐在車內欣賞窗外的風景,只需要在擁堵等特殊情況下握住方向盤。相較于歐美國家,我國在無人駕駛技術研發方面稍有差距,但后勁卻十足,這是因為無人駕駛需要基于大數據技術的高精度導航。
包括操作系統在內的核心關鍵技術,我國是必須掌握的。關鍵核心技術要立足于自主創新、要自主可控,得到了國家層面的大力支持。希望在IT一線的科技工作者,要始終堅持關鍵核心技術不能受制于人的原則,加強產業鏈上下游的組織與協作,提升關鍵軟硬件供給能力。北京鋼鐵俠科技有限公司(“鋼鐵俠科技”)在這方面做得比較成功。
“鋼鐵俠科技”在理論積累和實踐創新的基礎上,編著了“智能駕駛理論與實踐系列叢書”。該叢書涵蓋無人駕駛感知智能、深度學習與機器人、ROS與ROS2開發指南等。叢書蘊含著“鋼鐵俠科技”多年的研發實踐和成果積累,對從業者學習機器人編程基礎、深度學習理論知識和無人駕駛實現方法有所裨益。
《ROS與ROS2開發指南》是該叢書之一,系統講解了ROS、ROS2的開發環境及方法,介紹了跨平臺交叉編譯器的設計,為讀者掌握智能終端操作系統,尤其是機器人操作系統,提供了寶貴的財富。在“鋼鐵俠科技”成立8周年之際,迎來了該書的出版。若讀者能從本書中受到啟發,產生兩三點新思想,實現與時俱進,則更是我期待看到的。
倪光南
中國工程院院士
前 言
北京鋼鐵俠科技有限公司(簡稱鋼鐵俠科技)于2015年成立時,研發的第一款產品是雙足大仿人機器人。研發過程中團隊做了大量調研,專門分析采用什么樣的操作系統更加適合這種高難度的機器人,最后綜合比較發現,ROS最有優勢。一直到現在,鋼鐵俠科技研發的各類機器人產品普遍采用ROS系統。ROS也成為鋼鐵俠科技積累時間最長的一項技術。
在長期的開發過程中,編者發現采用ROS的實時性不夠強,缺少機器人開發調試工具,對多機協作支持不佳,于是做了大量的改良開發工作,并與國產化的Linux廠家合作,開發了國產改良的ROS系統。后來發現,這些也成為ROS2在慢慢改進的地方。考慮到大部分讀者可能是初學人員,本書還是選用了ROS原版系統作為講解對象,但部分章節介紹了如何改良的具體方法。
在過去的8年里,全國有超過500所大學與北京鋼鐵俠科技有限公司進行過產學研項目合作。清華大學、北京理工大學、北京航空航天大學、山東大學、吉林大學等都是鋼鐵俠科技非常深入的合作伙伴。很多學校希望鋼鐵俠科技通過新興的產業技術,為學校提供最新的教學平臺,助力學校的科研教學和人才培養。
本書基于鋼鐵俠科技打造的一款適合學習ROS的機器人硬件平臺,提供了配套的開發指南。與其他機器人平臺相比,本平臺加入了環境信息感知和物聯網控制兩個特色功能,同時對視覺跟隨、導航建圖做了加強,使ROS與機器人需要實現的具體功能緊密結合,更具有實戰化的特點。書中的具體技術都介紹了開發思路,均可用于其他機器人研發過程。
最后兩章是本書的特色章節。在第10章,講解了ROS2的安裝與使用,詳細介紹了ROS與ROS2的橋接通信,為在ROS2環境下實現具體開發提供了指導。在第11章,重點介紹了交叉編譯器的設計與開發,使不同的硬件平臺和Linux操作系統版本都能安裝同一套ROS環境。第11章是鋼鐵俠科技多年開發實戰經驗所得,難度較大,可以作為選讀章節。但如果在日后科研工作中,比如原本在x86架構下編寫的ROS程序計劃移植到ARM架構下,本書則提供了難得一見的法寶。
本書全部代碼由鋼鐵俠科技的研發團隊反復驗證多年,兼具學習和實用的功能。本次公開出版,是對鋼鐵俠科技歷年來在ROS方面的積累做了系統化的總結。本書希望能夠幫助學生、從業者和感興趣的讀者朋友快速理解ROS相關原理及實踐方法,推進我國智能機器人事業的快速發展。由于編者能力有限,書中難免有不妥之處,煩請讀者批評指正。
值此付梓之際,感謝公司北京和青島兩地研發團隊的辛勤付出,感謝電子工業出版社編輯的悉心指導,感謝北京市科學技術委員會、中關村科技園區管理委員會給予“高算力低功耗機器人步態控制器研制”和“高抗擾性目標檢測技術及應用”兩項科技重大專項支持,感謝以各種形式幫助我們的朋友們。鋼鐵俠科技向各位致以深深的謝意。
北京鋼鐵俠科技有限公司
2023年7月 |
內容簡介:本書是學習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 |
序: |
|