定 價(jià):199 元
叢書名:機(jī)器人設(shè)計(jì)與制作系列
- 作者:[美]懷亞特·紐曼(Wyatt Newman)
- 出版時(shí)間:2019/5/1
- ISBN:9787111625766
- 出 版 社:機(jī)械工業(yè)出版社
- 中圖法分類:TP242
- 頁(yè)碼:
- 紙張:膠版紙
- 版次:
- 開(kāi)本:16開(kāi)
本書共分為六部分。*部分介紹了如何編寫ROS節(jié)點(diǎn)和ROS工具,也覆蓋了消息、類和服務(wù)器。第二部分是用ROS進(jìn)行模擬和可視化,其中包括坐標(biāo)轉(zhuǎn)換。第三部分討論了ROS的感知過(guò)程。第四部分介紹了ROS中的移動(dòng)機(jī)器人控制和導(dǎo)航。第五部分介紹了ROS機(jī)器人臂的相關(guān)知識(shí)。第六部分涉及系統(tǒng)集成和更高級(jí)別的控制,包括基于感知的移動(dòng)操作。
ROS(Robot Operating System,機(jī)器人操作系統(tǒng))正在成為現(xiàn)代機(jī)器人學(xué)的實(shí)際標(biāo)準(zhǔn)編程方法。ROS wiki(https://www.ros.org/history/)寫道:
ROS生態(tài)系統(tǒng)現(xiàn)在由全世界數(shù)以萬(wàn)計(jì)的用戶組成,覆蓋了從桌面愛(ài)好項(xiàng)目到大型工業(yè)自動(dòng)化系統(tǒng)。
為什么是ROS?在1956年,Joseph Engelberger創(chuàng)立了Unimation公司,世界上第一個(gè)機(jī)器人公司[7]。然而,在過(guò)去的半個(gè)世紀(jì)里,機(jī)器人技術(shù)的進(jìn)步令人失望。世界范圍內(nèi)的機(jī)器人學(xué)研究也僅限于實(shí)驗(yàn)室里的演示和探奇。這一領(lǐng)域的新生研究人員通常一無(wú)所有,從頭開(kāi)始構(gòu)建新型機(jī)器人,解決執(zhí)行器和傳感器接口的問(wèn)題,構(gòu)建底層的伺服控制,并且通常在實(shí)現(xiàn)更高級(jí)的機(jī)器人能力之前就已經(jīng)精疲力竭了,而這些自定義的機(jī)器人和軟件很少被復(fù)用于后續(xù)工作。
人們認(rèn)識(shí)到采用構(gòu)建巴比塔的模式是徒勞的,構(gòu)建更智能的機(jī)器人的任務(wù)需要持續(xù)的、協(xié)作的努力,并建立在能夠不斷達(dá)到更高層能力的基礎(chǔ)上。在1984年,Vincent Hayward和Richard Paul引入了機(jī)器人控制C庫(kù)(Robot Control C Library, RCCL)[15]作為解決這一長(zhǎng)期問(wèn)題的方法。不幸的是,RCCL沒(méi)有獲得機(jī)器人研究人員足夠的認(rèn)可。National Instruments[24]和Microsoft[39-40]均引入了試圖使機(jī)器人編程標(biāo)準(zhǔn)化的產(chǎn)品。然而,研究人員發(fā)現(xiàn)這些方法煩瑣而昂貴。
ROS于2007年由斯坦福人工智能實(shí)驗(yàn)室發(fā)起[26],它試圖統(tǒng)一零碎的谷歌所采用的機(jī)器人學(xué)方法,且于2008年至2013年得到Willow Garage的支持[12],隨后自2013年至今得到谷歌開(kāi)源機(jī)器人基金會(huì)(Open Source Robotics Foundation,OSRF)的支持[10]。ROS方法遵循了開(kāi)源軟件和分布式協(xié)作的現(xiàn)代方法。此外,它橋接和提升了其他并行的開(kāi)源工作,包括OpenCV[28]、PointCloudLibrary[21]、Open Dynamics Engine[8]、Gazebo[19]和Eigen[20]。對(duì)于研究人員而言,ROS在開(kāi)放性和易用性方面可能與RCCL相似,而谷歌持續(xù)七年的支持是ROS存活的關(guān)鍵。
ROS現(xiàn)在在學(xué)術(shù)界、工業(yè)界和研究機(jī)構(gòu)中得到了全世界的廣泛使用。開(kāi)發(fā)人員提供了數(shù)以千計(jì)的軟件包,包括來(lái)自一些世界領(lǐng)先的專家在相關(guān)領(lǐng)域的解決方案。新的機(jī)器人公司在它們的產(chǎn)品上提供了ROS接口,并且已建立的工業(yè)機(jī)器人公司也引入了ROS接口。隨著廣泛采用ROS作為機(jī)器人編程實(shí)際標(biāo)準(zhǔn)的做法,人們對(duì)提高機(jī)器人的能力有了新的希望。在最近的DARPA機(jī)器人挑戰(zhàn)賽中,大多數(shù)入圍的團(tuán)隊(duì)使用了ROS。新型自動(dòng)駕駛汽車的開(kāi)發(fā)商正在開(kāi)發(fā)ROS。新的機(jī)器人公司正在崛起,這部分是由ROS資源驅(qū)動(dòng)的。鑒于ROS的勢(shì)頭和功績(jī),顯而易見(jiàn),當(dāng)今的機(jī)器人工程師必須精通ROS編程。
什么是ROS?將其稱為機(jī)器人操作系統(tǒng)并不全面。簡(jiǎn)潔地定義ROS很困難,因?yàn)樗撕芏喾矫妫ǎ壕幊田L(fēng)格(特別是依賴于松散耦合的分布式節(jié)點(diǎn)),節(jié)點(diǎn)間通信的接口定義和范例,庫(kù)和包合并的接口定義,可視化、調(diào)試、數(shù)據(jù)記錄和系統(tǒng)診斷的工具集合,共享源代碼的存儲(chǔ)倉(cāng)庫(kù),橋接多個(gè)有用的、獨(dú)立的開(kāi)源庫(kù)的橋梁。因此,ROS是機(jī)器人程序員的一種生活方式,而不只是一種簡(jiǎn)單的操作系統(tǒng)。ROS的定義可以參考ROS wiki(https://wiki.ros.org/ROS/Introduction):
ROS是一個(gè)針對(duì)機(jī)器人的開(kāi)源、元級(jí)操作系統(tǒng)。它提供了用戶在操作系統(tǒng)上所期望的服務(wù),包括硬件抽象、低層設(shè)備控制、常用功能的實(shí)現(xiàn)、進(jìn)程之間的消息傳遞以及包管理。它還提供了在多臺(tái)計(jì)算機(jī)上獲取、生成、編寫以及運(yùn)行代碼的工具和庫(kù)。
ROS的主要目標(biāo)是支持機(jī)器人研究和開(kāi)發(fā)中的代碼復(fù)用。ROS是一個(gè)分布式的進(jìn)程(也稱節(jié)點(diǎn))框架,它能使可執(zhí)行的文件單獨(dú)設(shè)計(jì)以及在運(yùn)行時(shí)松散耦合。這些進(jìn)程可以打包成易于共享和分發(fā)的包。ROS還支持一個(gè)代碼庫(kù)的聯(lián)合系統(tǒng),能夠同時(shí)分發(fā)協(xié)作。從文件系統(tǒng)級(jí)到社區(qū)級(jí)的這個(gè)設(shè)計(jì)實(shí)現(xiàn)了開(kāi)發(fā)和部署的獨(dú)立決策,但所有這些都可以與ROS的基礎(chǔ)底層工具一起使用。
Brian Gerkey在網(wǎng)上的評(píng)論(https://answers.ros.org/question/12230/what-is-ros-exactly-middleware-framework-operating-system/)如下。
我是這樣解釋ROS的:
1.?管道:ROS提供了發(fā)布-訂閱消息傳遞基礎(chǔ)結(jié)構(gòu),旨在支持分布式計(jì)算系統(tǒng)的快速、輕松構(gòu)建。
2.?工具:ROS提供了一套廣泛用于配置、啟動(dòng)、反思、調(diào)試、可視化、記錄、測(cè)試和停止的分布式計(jì)算系統(tǒng)的工具。
3.?功能:聚焦于移動(dòng)性、操作性和感知性,ROS提供了實(shí)現(xiàn)機(jī)器人有用的功能的廣泛庫(kù)集。
4.?生態(tài)系統(tǒng):ROS擁有規(guī)模龐大的社區(qū)支持,并通過(guò)著力聚焦于集成和文檔而不斷改進(jìn)。ros.org是一個(gè)一站式的站點(diǎn),在這里可以查找和了解來(lái)自世界各地開(kāi)發(fā)者的成千上萬(wàn)個(gè)可用ROS包。
來(lái)自參考文獻(xiàn)[13]對(duì)ROS的解釋如下:
ROS(發(fā)音Ross[rs])的主要目標(biāo)是提供一個(gè)統(tǒng)一的開(kāi)源編程框架,用于在各種真實(shí)世界和仿真環(huán)境中控制機(jī)器人。
來(lái)自參考文獻(xiàn)[13]中的ROS管道:
ROS中的核心實(shí)體稱為節(jié)點(diǎn)。節(jié)點(diǎn)通常是用Python或C 編寫的小程序,用于執(zhí)行一些相對(duì)簡(jiǎn)單的任務(wù)或過(guò)程。節(jié)點(diǎn)可以相互獨(dú)立地啟動(dòng)和停止,并通過(guò)傳遞消息進(jìn)行通信。節(jié)點(diǎn)可以在某些主題上發(fā)布消息或向其他節(jié)點(diǎn)提供服務(wù)。
例如,發(fā)布器節(jié)點(diǎn)可能會(huì)報(bào)告從連接到機(jī)器人微控制器的傳感器傳來(lái)的數(shù)