本書是目前機器人開發(fā)領域比較全面、系統(tǒng)的入門書籍,緊緊圍繞工程實踐進行內容和章節(jié)安排,不要求多好的數(shù)學基礎,也沒有過多的抽象理論,示例豐富、貼近實戰(zhàn),特別易于理解和上手實踐。
全書共9章,分三個部分。*部分為基礎部分(第1~2章),介紹了ROS的歷史、開發(fā)環(huán)境搭建和基本概念;第二部分為實戰(zhàn)部分(第3~7章),介紹了如何利用ROS去開發(fā)、調試相關的功能;第三部分為仿真部分(第8~9章),介紹了如何進行ROS的建模和仿真。另外在附錄中介紹了常用的Linux、ROS基本命令。
隨著關鍵器件的研究突破,服務機器人這幾年發(fā)展得如火如荼,無論是擔當物品運輸?shù)奈锪鳈C器人還是進行室內清潔的掃地機器人,是執(zhí)行空中偵察的無人機還是承載人類自動駕駛夢想的無人駕駛汽車,機器人總能為我們帶來無限的遐想。隨著技術的不斷成熟和商業(yè)推廣的不斷開展,一個曾被認為是科幻中的世界也許某一天就會展現(xiàn)在我們面前。
作為機器人主流操作系統(tǒng)之一,ROS目前已經成為事實上的行業(yè)標準,同Android在智能手機領域的地位一樣。但作為承載人類能聽、會說以及會運動等特性的設備助理大腦,ROS在涉及較多跨學科知識的同時,其系統(tǒng)化的文檔卻較少,因此學習門檻相對較高。
本書注重ROS的基本概念和核心內容,努力為讀者提供系統(tǒng)化的視角,同時從開發(fā)實踐出發(fā),希望能讓讀者快速上手,迅速掌握開發(fā)一款能聽會說的機器人的技能。由于機器人導航相關的導航算法等內容已經逐漸由專業(yè)的底盤廠商提供,同時導航涉及較多的專業(yè)算法和跨學科知識,考慮到本書的篇幅、專業(yè)性以及閱讀對象,導航相關的內容在本書中不做過多介紹,有興趣的讀者可以查閱相關的資料和書籍進行學習。
與市面上ROS相關書籍(主要介紹較舊的ROS Indigo、ROS Kinetic)不同,本書中的相關代碼和環(huán)境搭建依托于當前最新的Ubuntu 18.04和ROS Melodic而進行,力圖為讀者提供最新的專業(yè)知識和行業(yè)解讀。
讀者對象
本書主要適合于有一定C 基礎、對機器人開發(fā)感興趣但尚無過多接觸的軟件工程師和理工科學生。
如何閱讀本書
本書共包含9章和1個附錄,具體如下。
第1章介紹了機器人的發(fā)展歷史以及ROS的發(fā)展歷程,并介紹了如何搭建ROS環(huán)境。
第2章從一個簡單的實例開始介紹了ROS的基本概念,如節(jié)點、話題、消息、服務、動作等。
第3章從一個基本的程序開始介紹了如何開發(fā)ROS程序包,以及如何編譯、調試ROS程序包。
第4章介紹了如何進行ROS的核心技能(消息、服務、動作、啟動等)開發(fā),以及如何進行參數(shù)配置和分布式計算。
第5章介紹了ROS和運動控制相關的坐標系、控制器等,為讀者學習定位、導航等打下基礎。
第6章介紹了ROS如何實現(xiàn)與語音交互相關的語音識別、語義合成、聲源定位等,這些內容有助于讀者開發(fā)會說的機器人。
第7章介紹了ROS如何與OpenCV結合進行圖像、視覺處理,如何傳輸、處理圖片,如何進行視頻流處理等,這些內容有助于讀者開發(fā)會看的機器人。
第8章介紹了如何進行ROS機器人建模,從最基礎的URDF概念到如何利用Solid-works快速建模。
第9章介紹了如何在Gazebo中進行機器人仿真,以及如何搭建仿真環(huán)境。
最后的附錄介紹了與Linux、ROS相關的基本命令行工具,使缺乏基礎的讀者也能快速上手。
勘誤和支持
由于筆者的水平有限,再加上編寫時間倉促,書中難免會出現(xiàn)一些表達不盡人意甚至錯誤的地方,懇請讀者批評指正(可以通過mzl626@163.com與筆者進行交流)。期待能夠得到大家的真摯反饋,在技術的道路上我們一起共勉。
致謝
感謝機械工業(yè)出版社華章公司的楊繡國編輯,在大半年的時間里她始終支持我的寫作,并能允許我根據自己的時間安排寫作計劃。
感謝我的家人和孩子,他們一直尊重我的寫作愛好,允許我把大量的業(yè)余時間(一部分本是用來陪伴他們的)花到寫作上。
無為齋主
智能硬件和人工智能領域的資深專家,已出版技術著作3部,擁有15項授權發(fā)明專利,曾受邀在多家高校、論壇做技術講座或授課,在智能硬件、移動互聯(lián)網、企業(yè)服務、服務機器人、人工智能等領域擁有十余年的實踐經驗,目前在一個行業(yè)知名企業(yè)從事智能硬件和人工智能領域的技術開發(fā)與管理工作。
前言
第1章 機器人基礎1
1.1 機器人發(fā)展歷史 1
1.2 ROS發(fā)展歷程 5
1.3 安裝ROS環(huán)境 6
第2章 理解ROS 11
2.1 啟動小海龜 11
2.2 系統(tǒng)架構 12
2.3 理解節(jié)點管理器 16
2.4 理解節(jié)點 19
2.5 理解話題 21
2.6 理解消息 23
2.7 理解服務 28
2.8 理解動作 30
2.9 理解參數(shù) 32
第3章 開發(fā)ROS 35
3.1 你好ROS 35
3.2 編譯ROS 42
3.3 編譯配置 49
3.4 調試ROS 62
第4章 資源與配置 67
4.1 消息通信 67
4.2 訂閱服務 73
4.3 執(zhí)行動作 77
4.4 啟動管理 81
4.5 配置參數(shù) 89
4.6 分布式計算 97
第5章 運動控制 99
5.1 坐標系 99
5.1.1 理解坐標系 99
5.1.2 坐標變換 101
5.1.3 消息過濾 108
5.1.4 添加坐標系 111
5.2 控制器 113
5.2.1 控制器架構 114
5.2.2 雙輪差速控制 121
第6章 語音處理 125
6.1 語音基礎 127
6.2 語音識別 129
6.3 語音合成 137
6.4 聲源定位 142
第7章 視覺處理 144
7.1 相機標定 144
7.2 圖像處理 147
7.3 視頻處理 152
第8章 機器人建模 157
8.1 URDF模型基礎 157
8.2 實現(xiàn)URDF模型 169
8.3 使用Xacro建模 178
8.4 使用Solidworks建模 186
第9章 機器人仿真 193
9.1 Gazebo場景 194
9.1.1 場景基礎 194
9.1.2 創(chuàng)建場景 198
9.2 Gazebo模型 199
9.3 啟動仿真 207
附錄A 常見Linux、ROS命令 210
參考文獻 217