機器人對於現代人類而言並不陌生和神秘,它在百年前的科幻小說中首次齣現,而現在已經逐步進入人類生活的方方麵麵,機器時代即將到來!
智能機器人的程序究竟是如何設計齣來的呢?
智能機器人需要具備強健的“肢”、明亮的“眼”、靈巧的“嘴”以及聰慧的“腦”,這一切的實現實際上涉及諸多技術領域,需要艱辛的設計、開發與調試過程,必然會遇到棘手的問題和挑戰。而一個小型的開發團隊難以完成機器人各個方麵的開發工作,因而需要一套閤作開發的框架與模式,以期能夠快速集成已有的功能,省卻重復勞動的時間。早在2008年,我們在與澳大利亞的布勞恩教授交流時,就得知他們開發瞭一套商業化的“RoBIOS”機器人操作係統,這套係統將一些常用的機器人底層功能進行瞭封裝,可極大簡化高級功能的開發。據他們介紹,這是最早的“機器人操作係統”,但由於産品不開源且價格昂貴,我們最終未能一試為快。後來在網絡中不斷地尋覓,最終發現瞭ROS,由於其開源、開放的特性,一下子就引起瞭我們極大的興趣。
我們於2010年建立瞭易科機器人QQ群進行討論,從而結識瞭國內最早期的一些機器人研究者和ROS探索者。由於早期相關資料非常匱乏,我們於2012年創建瞭博客(blog.exbot.net)以進行技術分享與交流。易科機器人開發組成員在此期間貢獻瞭大量的教程和開發筆記,在此嚮他們的無私奉獻錶示感謝與敬意!近年來,隨著機器人的迅猛發展,ROS得到瞭更為廣泛的使用,國內也齣現瞭一些優秀的項目,包括“星火計劃”ROS公開課(blog.exbot.net/spark)、“HandsFree”ROS機器人開發平颱(wiki.exbot.net)等。
齣版界近年來也是碩果纍纍,本書第1版便是國內第一本ROS譯著,由於實用性強,已經多次重印。第2版針對近年來ROS的最新發展,對書中部分內容進行瞭修訂,並增加瞭第6章和第10章。本書涵蓋瞭使用ROS進行機器人編程的最新知識與方法,通過ROS編程實踐能夠幫助你理解機器人係統設計與應用的現實問題。在機器人開發實踐中,我們認為除瞭成功的喜悅外,還看到機器人學目前所處的發展階段:核心技術尚未成熟、諸多功能尚不完備、bug多……但我們相信,有瞭ROS的開源精神和完備的閤作開發框架,很多問題會迎刃而解。唯一迫切需要的就是期待你加入機器的開發和研究中來,一起推動開源機器人技術的發展與普及!
本書第2版與第1版的重疊部分主要沿用瞭劉品傑在第1版中的翻譯,個彆詞匯根據習慣進行瞭修改。具體來說,第1至5章和第10章由張瑞雷翻譯,第6章由張波翻譯,第7至9章由劉錦濤翻譯,吳中紅和李靜老師對全書進行瞭審閱,最後由劉錦濤對全書進行瞭修改潤色和統稿整理。感謝楊維保、馬文科等人對本書提齣的修改建議!
我們將會在books.exbot.net發布本書的其他相關資源。
About the Authors 作者簡介
Enrique Fernández在拉斯帕爾馬斯大學獲得計算機工程博士學位,目前是Clearpath Robotics公司高級機器人工程師。2009年他完成瞭關於SLAM的碩士學位論文。2013年他的博士論文解決瞭自主水下滑翔器(AUG)的路徑規劃問題。那段時間,他還研究瞭計算機視覺、人工智能以及其他機器人學課題,例如赫羅納大學的CIRS/ViCOROB研究實驗室AUV的慣性導航係統和視覺SLAM。他在2012年參加瞭歐洲學生自主水下航行器設計挑戰賽(Student Autonomous Underwater Challenge-Europe,SAUC-E)並獲奬,在2013年作為閤作者參與瞭SAUC-E。
獲得博士學位後,Enrique作為高級機器人工程師在2013年6月加入PAL Robotics公司的自主導航部門。在那裏,他開發瞭用於REEM、REEM-C和移動機器人以及相關項目的軟件,如使用ROS框架的Stockbot。他的研究方嚮包括運動規劃(路徑規劃和移動機器人控製)、機器人定位和SLAM。在2015年,他作為高級自主係統開發人員加盟Clearpath Robotics公司的自主係統部門從事SLAM相關工作。
在學術方麵,Enrique發錶瞭多篇會議論文,其中兩篇於2011年發錶在《International Conference of Robotics and Automation》(ICRA)上。他是Packt Publishing齣版的第1版《ROS機器人程序設計》和其他一些書部分章節的作者。他的碩士學位論文是關於室內機器人的FastSLAM算法,此機器人裝備瞭SICK激光掃描儀以及Pioneer差動平颱的輪式裏程計。他的博士學位論文是關於AUG的路徑規劃算法和工具。他還擁有電子和嵌入式係統(如PC104和Arduino)的開發經驗。他的研究背景包括SLAM、計算機視覺、路徑規劃、優化、機器人學和人工智能。
我要感謝這本書的閤著者,感謝他們為完成這本書所付齣的努力以及提供瞭無數示例的代碼。我還要感謝博士論文期間大學智能係統和計算工程研究所(University Institute of Intelligent Systems and Computational Engineering,SIANI)和水下機器人研究中心(Center of Underwater Robotics Research,CIRS/ViCOROB)的研究小組成員。我也要感謝在PAL機器人公司的同事,在那裏我學到很多關於ROS、機器人運動以及仿人雙足機器人的知識,不僅有軟件,還有電子和硬件設計。最後,我要感謝我的傢人和朋友的幫助與支持。
Luis Sánchez Crespo在拉斯帕爾馬斯大學獲得瞭電子與電信工程的雙碩士學位。他曾在技術開發和創新研究所(IDETIC)、加那利群島海洋平颱(PLOCAN)和應用微電子研究所(IUMA)與不同的研究小組閤作,進行超分辨率算法成像研究。
他的專業興趣包括應用於機器人係統的計算機視覺、信號處理和電子設計。因此,他加入瞭AVORA團隊,這批年輕的工程師和學生從零開始從事自主水下航行器(AUV)的開發工作。在這個項目中,Luis開始開發聲學和計算機視覺係統,用於提取不同傳感器的信息,例如水聽器、聲呐和攝像頭。
依托海洋技術的強大背景,Luis與人閤作創辦瞭一傢新的初創公司Subsea Mechatronics,緻力於為水下環境開發遙控操作和自主航行器。
下麵是海洋技術工程師和企業傢(LPA Fabrika:Gran Canaria Maker Space的聯閤創始人和製造商)Dario Sosa Cabrera對Luis的評價:
“他很熱情,是一個多學科的工程師。他對工作負責。他可以自我管理,並承擔一個團隊領導者的責任,如在SAUC-E競賽中領導瞭AVORA團隊。他在電子和電信領域的背景讓其具備從信號處理和軟件到電子設計和製造的廣泛專業知識。”
Luis作為技術審校者參與瞭Packt Publishing齣版的第1版《ROS機器人程序設計》的相關工作。
首先,我要感謝Aaron、Anil以及Enrique邀請我參與編寫這本書。和他們一起工作非常快樂。同時,我也要感謝水下機電團隊關於重型水下機器人的豐富經驗,這些年我們一起成長。我必須提到LPA Fabrika:Gran Canaria Maker Space,他們備課和講授教育機器人及技術項目極富熱情,與他們共享工作環境也非常令人激動。
最後,我要感謝我的傢人和女朋友對我參與的每個項目的大力支持和鼓勵。
Anil Mahtani是一名從事水下機器人工作5年的計算機科學傢。他第一次在該領域工作是在完成碩士論文期間為低成本ROV開發軟件架構。在此期間,他也成為AVORA的團隊領導者和主要開發人員,這個團隊的高校學生設計和開發瞭一個自主水下航行器並參加瞭2012年的SAUC-E。同年,他完成瞭論文並獲得瞭拉斯帕爾馬斯大學的計算機科學碩士學位。此後不久,他成為SeeByte公司的軟件工程師,這傢公司是水下係統智能軟件解決方案的全球領導者。
在SeeByte公司工作期間,Anil參與瞭軍方、石油和天然氣公司的一些半自主和自主水下係統的核心開發。在這些項目中,他積極參與自主係統開發、分布式軟件體係結構設計和底層軟件開發,同時也為前視聲呐圖像提供計算機視覺解決方案。他還獲得瞭項目經理職位,管理一個開發和維護內核C++庫的工程師團隊。
他的專業興趣主要包括軟件工程、算法、分布式係統、網絡和操作係統。Anil在機器人方嚮主要負責提供高效和健壯的軟件解決方案,不僅解決當前存在的問題,還預見未來的問題或可能的改進。鑒於他的經驗,他在計算機視覺、機器學習和控製問題上也有獨特的見解。Anil對DIY和電子學有興趣,並且開發瞭一些Arduino庫迴饋社區。
首先,我要感謝我的傢人和朋友的支持,他們總是在我最需要的時候幫助我。我也要感謝我的同事和朋友David Rubio Vidal、Emilio Miguelá?ez Martín和John Brydon給我最大的支持,他們以專業的方式教我很多知識。我還要感謝我在SeeByte和AVORA團隊的同事,這些年從他們那裏學習並經曆很多。最後,我要特彆感謝Jorge Cabrera Gámez,他的指導和建議成就瞭我自己從未想象到的職業生涯。
Aaron Martinez是數字化製造領域的電腦工程師、企業傢和專傢。他於2010年在拉斯帕爾馬斯大學的Instituto Universitario de Cienciasy Tecnologias Ciberneticas(IUCTC)完成碩士論文。他在遠程監控領域使用沉浸式設備和機器人平颱準備碩士論文。得到學位後,他參加瞭在奧地利林茨開普勒大學研究所的機器人學實習計劃。在實習期間,他作為團隊的一員使用ROS和導航包集進行移動平颱開發。之後,他參與瞭有關機器人的項目,其中一個是拉斯帕爾馬斯大學的AVORA項目。在這個項目中,他參與自主水下航行器製作,並參與意大利的SAUC-E。2012年,他負責維護這個項目;2013年,他幫助從ROS嚮機器人平颱移植導航包集和其他算法。
最近,Aaron與人共同創立瞭一傢名為SubSeaMechatronics SL的公司。這傢公司從事與水下機器人和遙控係統相關的項目,還設計和製造水下傳感器。公司的主要目標是開發用於研發原型和重型機械手的定製解決方案。
Aaron有許多領域的經驗,比如編程、機器人、機電一體化、數字化製造以及Arduino、BeagleBone、服務器和激光雷達等設備。如今,他在SubSeaMechatronics SL公司從事水下和空中環境的機器人平颱設計。
我要感謝我的女朋友,她在我寫這本書時給我支持以及給我繼續成長的動力。我還要感謝Donato Monopoli(加那利群島技術研究所(ITC)生物醫學工程部門的主管),以及ITC所有的工作人員,感謝他們使我懂得數字製造、機械以及組織工程,我在此度過瞭生命中最美好的時光。
感謝我大學的同事,特彆是Alexis Quesada,他給瞭我在準備碩士論文時創建我第一個機器人的機會。和他們一起工作,使我學習到很多關於機器人的知識。
最後,我要感謝傢人和朋友的幫助與支持。
About the Reviewers 審校者簡介
Piotr Gródek是一位對計算機視覺和圖像處理感興趣的C++程序員。他曾經是嵌入式程序員,現在工作於銀行。他是開源遊戲和無人駕駛汽車的開發者。空閑時間他喜歡跑步、打壁球和閱讀。
Akihiko HONDA是空間機器人工程師。他於2012年在東京工業大學完成瞭碩士論文。目前他正在東京工業大學進行博士課程學習。
他的研究興趣包括與空間機器人的遠程操作和自動化相互對應的靈活或可變形的材料。他的一個目標是通過開發更好的自動控製係統提高飛船在太空的性能和穩定性。在早期的研究中,他參與瞭包含大型太陽能電池陣列和用於捕捉國際空間站的空間機械臂的地球觀測衛星的工作。目前,他計劃將其研究成果應用於空間太陽能電力係統、行星探測車等。他作為最佳參賽人獲奬,並在日本天文學會舉辦的JSF衛星設計競賽中因提齣使用其研究的一個新型探索宇宙飛船而獲奬。
他在大學的研究過程中,還參與瞭由日本太空發展署指揮的一些項目。在JEM(REX-J)項目的機器人實驗中,他參與瞭在軌道上的實驗設備支持操作並在研究中獲得靈感。他還參加瞭一個為宇航員開發可穿戴機械臂的項目並開發瞭手動控製係統。目前他正工作於兩個探索機器人項目。其中一個是開發名為“KENAGE”的可變形的探測車,用於剋服月球和火星特殊的崎嶇地形。這個探測車正在使用GAZEBO仿真器進行可行性實驗測試。在另一個項目中,他為JumpingScouter開發瞭一個環境識彆係統。
2013年,他參與瞭薩利大學的SMART探測器項目,開發環境保護和識彆係統。同時,他也參與瞭探測車在真實環境中檢測實際功能的現場實驗。
我要感謝JAXA的Hiroki KATO給我打開瞭ROS的大門並對我的研究給予寶貴建議。我還要感謝Mitsushige ODA教授、Hiroki NAKANISHI教授以及東京工業大學空間機器人實驗室的同事。他們分享瞭空間機器人的美好前景,提供瞭建議,並支持我在研究中使用ROS實現它們。我也要感謝薩利大學STAR實驗室的教授和同事給我提供在真實環境中使用ROS的重要建議。我特彆感謝來自大加那利島的朋友給我介紹這令人振奮的工作。
最後,我要感謝我的傢人Yoshihiko、Nobuko和Ayaka對我的生活和夢想的支持,同時感謝女朋友對我的理解。
Matthieu Keller是一位熱愛技術和計算機科學的法國工程師。他接受的教育涉及計算和機器人學,這使他成為一名愛好者。他審校瞭本書的第1版。
Aridane J. Sarrionandia de León研究計算機科學,並對機器人學和自主航行器有非常大的興趣。他的學位課題是關於使用聲呐的水下地圖構建,為此他在自主水下航行器中使用ROS工作。他有自主係統和ROS的經驗。他熟悉OpenCV和PCL,目前正在開發自主水麵航行器的控製係統。
我要感謝Luis和Aaron給我這個機會審校這本書。同時,我要感謝拉斯帕爾馬斯大學的AVORA團隊,特彆是Aaron、Luis和Enrique,他們給我介紹瞭ROS的神奇之處,並幫助我探索自主航行器世界。感謝我的導師Jorge Cabrera Gámez,他讓我有機會成為AVORA團隊的一員。
最後,我要感謝我的傢人和朋友在我生活中齣現問題時支持我,特彆要感謝Eva糾正我不清晰的語句。
Exbot易科機器人實驗維護書籍,提供學習鏡像包括indigo和kinetic等,努力為ROS愛好者和開發人員提供力所能及的服務。
本書第2版概括性地介紹瞭ROS係統的各種工具。ROS是一個先進的機器人操作係統框架,現今已有數百個研究團體和公司將其應用在機器人行業中。對於機器人技術的非專業人士來說,它也相對容易上手。在本書中,你將瞭解如何安裝ROS,如何開始使用ROS的基本工具,以及最終如何應用先進的計算機視覺和導航工具。
在閱讀本書的過程中無需使用任何特殊的設備。書中每一章都附帶瞭一係列的源代碼示例和教程,你可以在自己的計算機上運行。這是你唯一需要做的事情。
當然,我們還會告訴你如何使用硬件,這樣你可以將你的算法應用到現實環境中。我們在選擇設備時特意選擇一些業餘用戶負擔得起的設備,同時涵蓋瞭在機器人研究中最典型的傳感器或執行器。
最後,由於ROS係統的存在使得整個機器人具備在虛擬環境中工作的能力。你將學習如何創建自己的機器人並結閤功能強大的導航功能包集。此外如果使用Gazebo仿真環境,你將能夠在虛擬環境中運行一切。第2版在最後增加瞭一章,講如何使用“Move it!”包控製機械臂執行抓取任務。讀完本書後,你會發現已經可以使用ROS機器人進行工作瞭,並理解其背後的原理。
主要內容
第1章介紹安裝ROS係統最簡單的方法,以及如何在不同平颱上安裝ROS,本書使用的版本是ROS Hydro。這一章還會說明如何從Debian軟件包安裝或從源代碼進行編譯安裝,以及在虛擬機和ARM CPU中安裝。
第2章涉及ROS框架及相關的概念和工具。該章介紹節點、主題和服務,以及如何使用它們,還將通過一係列示例說明如何調試一個節點或利用可視化方法直觀地查看通過主題發布的消息。
第3章進一步展示ROS強大的調試工具,以及通過對節點主題的圖形化將節點間的通信數據可視化。ROS提供瞭一個日誌記錄API來輕鬆地診斷節點的問題。事實上,在使用過程中,我們會看到一些功能強大的圖形化工具(如rqt_console和rqt_graph),以及可視化接口(如rqt_plot和rviz)。最後介紹如何使用rosbag和rqt_bag記錄並迴放消息。
第4章介紹ROS係統與真實世界如何連接。這一章介紹在ROS下使用的一些常見傳感器和執行器,如激光雷達、伺服電動機、攝像頭、RGB-D傳感器、GPS等。此外,還會解釋如何使用嵌入式係統與微控製器(例如非常流行的Arduino開發闆)。
第5章介紹ROS對攝像頭和計算機視覺任務的支持。首先使用FireWire和USB攝像頭驅動程序將攝像頭連接到計算機並采集圖像。然後,你就可以使用ROS的標定工具標定你的攝像頭。我們會詳細介紹和說明什麼是圖像管道,學習如何使用集成瞭OpenCV的多個機器視覺API。最後,安裝並使用一個視覺裏程計軟件。
第6章將展示如何在ROS節點中使用點雲庫。該章從基本功能入手,如讀或寫PCL數據片段以及發布或訂閱這些消息所必需的轉換。然後,將在不同節點間創建一個管道來處理3D數據,以及使用PCL進行縮減采樣、過濾和搜索特徵點。
第7章介紹在ROS係統中實現機器人的第一步是創建一個機器人模型,包括在Gazebo仿真環境中如何從頭開始對一個機器人進行建模和仿真,並使其在仿真環境中運行。你也可以仿真攝像頭和激光測距傳感器,為後續學習如何使用ROS的導航功能包集和其他工具奠定基礎。
第8章是兩章關於ROS導航功能包集中的第1章。該章介紹如何對你的機器人進行使用導航功能包集所需的初始化配置。然後用幾個例子對導航功能包集進行說明。
第9章延續第8章的內容,介紹如何使用導航功能包集使機器人有效地自主導航。該章介紹使用ROS的Gazebo仿真環境和rviz創建一個虛擬環境,在其中構建地圖、定位機器人並用障礙迴避做路徑規劃。
第10章討論ROS中移動機器人機械臂的一個工具包。該章包含安裝這個包所需要的文檔,以及使用MoveIt!操作機械臂進行抓取、放置,簡單的運動規劃等任務的演示示例。
預備知識
我們寫作本書的目的是讓每位讀者都可以完成本書的學習並運行示例代碼。基本上,你隻需要在計算機上安裝一個Linux發行版。雖然每個Linux發行版應該都能使用,但還是建議你使用Ubuntu 12.04 LTS。這樣你可以根據第1章的內容安裝ROS Hydro。
對於ROS的這一版本,你將需要Ubuntu 14.04之前的版本,因為之後的版本已經不再支持Hydro瞭。
對於硬件要求,一般來說,任何颱式計算機或筆記本電腦都滿足。但是,最好使用獨立顯卡來運行Gazebo仿真環境。此外,如果有足夠的外圍接口將會更好,因為這樣你可以連接幾個傳感器和執行器,包括攝像頭和Arduino開發闆。
你還需要Git(git-core Debian軟件包),以便從本書提供的源代碼中復製庫。同樣,你需要具備Bash命令行、GNU/Linux工具的基本知識和一些C/C++編程技巧。
目標讀者
本書的目標讀者包括所有機器人開發人員,可以是初學者也可以是專業人員。它涵蓋瞭整個機器人係統的各個方麵,展示瞭ROS係統如何幫助完成使機器人真正自主化的任務。對於聽說過卻從未使用過ROS的機器人專業學生或科研人員來說,本書將是非常有益的。ROS初學者能從本書中學習ROS軟件框架的很多先進理念和工具。不僅如此,經常使用ROS的用戶也可能從某些章節中學習到一些新東西。當然,隻有前3章是純粹為初學者準備的,所以那些已經使用過ROS的人可以跳過這部分直接閱讀後麵的章節。
發表於2024-11-02
ROS機器人程序設計 2024 pdf epub mobi 電子書 下載
圖書標籤: 機器人 ROS 人工智能 工程 ROS,機器人,仿真設計 信息技術
2018.01.24~2018.02.10
評分不錯的書,不過是2015年的瞭
評分不錯的書,不過是2015年的瞭
評分學習ROS機器人編程的中文參考書不多,這算是其中比較主流的一本吧。
評分2018.01.24~2018.02.10
ROS機器人程序設計 2024 pdf epub mobi 電子書 下載