機械人作業系統
呢篇文或者呢段要 翻譯(或者由 ja, en加料)。 |
機械人作業系統(粵拼:gei1 haai6 jan4 zok3 jip6 hai6 tung2;縮寫:ROS)係機械人嘅軟件平台。即管ROS個名入便包含「作業系統」,但佢唔係類似Microsoft Windows或iOS之類嘅電腦作業系統(OS),係一種中介軟件同埋軟件框架,可以喺現有嘅OS上運行,亦都被解釋為「元作業系統」(meta-operating system)。
最新發布 | Melodic Morenia / 2018年5月23號 |
---|---|
作業系統 | |
話 | |
軟件類別 | 機械人軟件平臺 |
網站 | www |
庫 |
ROS旨在喺全球範圍內促進機械人軟件嘅聯合開發。ROS源於史丹福大學嘅學生開發嘅「Switchyard」項目,之後由美國嘅Willow Garage公司接手並喺2007年開始全面開發,第一版發行版喺2010年發佈。之後,非營利組織「開源機械人基金會」(而家嘅「Open Robotics」)成立唨並接任領導ROS開發嘅角色。ROS係作為開源軟件開發同埋發行嘅,嚟自世界各地嘅好多人都有參與開發。
運行ROS嘅作業系統主要係Linux,譬如Ubuntu同埋Linux Mint,而macOS、Windows同埋Android亦都支持埋某啲功能。ROS提供唨硬件抽象、底層設備控制、通用功能實現、進程間消息通信、包管理與及用於軟件開發同執行嘅工具同埋庫。ROS係作爲分佈式計算系統而設計,可以透過多個進程並行執行機械人所需嘅各種計算。每個過程都可以喺單個電腦上運行得,亦都可以喺多部電腦上運行得,仲可以作為一個大型軟件系統嚟運行,相互之間發送同埋接收處理結果。ROS軟件分為「核心實用程序」同「軟件包」,用戶可以透過選擇、安裝要使用嘅功能嘅軟件包嚟使用機械人所需嘅各種功能,亦可以創建自己嘅包。而且ROS支持好多編程語言,包括C ++同埋Python與及Lisp同埋Java。
配備ROS嘅機械人包括機械人手臂同埋移動機械人,與及人形機械人、自動駕駛汽車、無人駕駛飛機(無人機)同埋無人駕駛潛水器。ROS主要係為學術研究而開發嘅,但使用範圍經已逐漸噉擴展到工業應用,配備ROS嘅機械人經已商業化、投放市場。為唨實現新嘅應用領域所需嘅功能,ROS嘅下一代版本「ROS2」嘅開發同埋發佈亦都開始唨。
概念
編輯ROS嘅目標係喺全球範圍內促進機械人軟件開發當中嘅協作[1] [2]。特別係,佢嘅開發旨在儘可能噉提高機械人研發入便使用開嘅啲源代碼嘅可重用性[1] [3]。
ROS提供硬件抽象、底層設備控制、通用功能實現、進程之間嘅消息通信、程序包管理等、與及跨多台電腦嘅程序獲取/開發/執行、並為提供工具同埋庫[4][5]。
ROS係機械人作業系統(Robot Operating System)嘅縮寫。但要指出嘅係,從呢個詞好難準確噉把握ROS嘅實際情況[6]。喺ROS信息發佈嘅中心站點ROS Wiki[7] ,稱ROS為「元作業系統」[8] [4]。喺ROS項目嘅中心人物Brian Gerkey畀問到ROS係乜嘢嗰陣佢答返:「ROS =plumbing(通信)+tools(工具)+capabilities(功能)+ecosystem(生態)。」解釋如下[9] [10] [6]。
歷史
編輯開關廠項目
編輯ROS嘅起源係由美國史丹福大學嘅學生Morgan Quigley開發嘅「Switchyard」系統,呢個學生曾參與人工智能研究所嘅Stanford AI機械人(STAIR)項目[13] [14] [13] [14]。Switchyard係用於開發機械人軟件嘅框架,並假設並行計算,以便可以喺機械人內部同埋外部分發諸如識別,計劃同埋控制之類嘅智能信息處理,而且每個計算過程都係對等網絡。設計用於異步通信[15]。佢具有模塊化嘅功能,可供多個研究人員使用,旨在將考慮到其喺新硬件入便嘅應用清楚噉分離出依賴於機械人硬件嘅部分同埋唔依賴於機械人硬件嘅部分[15]。另外,喺Switchyard入便亦都強調唨源代碼嘅美感,並引入唨後嚟嘅想法,譬如引入唨部署系統[15]。
ROS嘅誕生
編輯2007年11月,美國跟機械人相關嘅一家私有公司Willow Garage 公司接管唨Switchyard嘅開發[4] [15]。呢個公司致力於培養個人機械人同埋服務機械人產業,並喺圖像處理領域為開源軟件「OpenCV」嘅開發提供唨支持[4] [15]。另外,後嚟對ROS嘅網絡程序有重大影響嘅Player/Stage プロジェクト開發者Brian Moth-key亦都加入唨[4]。佢哋將Switchyard項目組織為ROS,呢個係ROS作為機械人框架吸引眾多用戶嘅第一個轉折點[15]。
Willow Garage建立唨一個開源社區,以建立一個框架嚟促進軟件共享,協作同埋重用[5]。呢個公司仲積極支持並參加唨針對工程師同埋開發人員嘅學術社團同埋活動[16]。此外,對於首次使用ROS嘅工程師,仲促進唨唔係軟件工程師嘅人機交互(HRI)專家嘅文書編製工作,譬如手冊[16]。
Willow Garage喺2010年1月22號,宣布唨「ROS 1.0」[4]。2010年3月,ROS嘅第一個正式版本「ROS Box Turtle」發佈唨[4]喺此之後,佢被多次更新同埋發佈嘅發行版類似Linux[4]嘅同年8月發行唨「C Turtle」,2011年3月發行唨「Diamondback」。[4]
PR2 Beta計劃
編輯ROS 喺1.0發行版嘅同時,Willow Garage開發並宣布唨機械人「PR2」,呢個機械人以ROS控制為前提[17] PR2係配備有兩個機械臂嘅自主移動研究機械人[18] [5]。隨後,Willow Garage為PR2 beta程序徵集唨公開發售,呢個係使用PR2嘅應用程序開發競賽[17] [19]喺78個申請入便,選擇唨10個大學機構同埋1個私人公司(主要喺美國,歐洲同埋日本),而且為特別優秀嘅提案免費提供PR2 [17] [16] [20]。2010年9月,PR2嘅售價為40萬美元,為開源社區嘅貢獻者提供唨12萬美元嘅折扣優惠喺PR2 beta計劃嘅兩年中,ROS可重複使用嘅工具同埋應用程序陸續開發,總共發佈唨2,000多個ROS軟件包[17]建立唨一個良性循環,其中一啲小組出現使用PR2同埋ROS可視化研究結果並將其發佈到YouTube等上,並受到唨媒體嘅關注,並對ROS感興趣嘅研究人員從那裡出現唨[16]透過呢啲措施,ROS研究跟其他機械人研究之間嘅合作不斷發展,據說ROS嘅名稱經已大大增加[17]。
2010年11月,開發唨機械人套件「TurtleBot」以降低初學者嘅門檻並推廣ROS [4] TurtleBot係使用iRobot嘅Create嘅輪式移動機械人,次年由Willow Garage發佈,設計數據作為開源硬件發佈[4]
發展戥批評
編輯ROS主要吸引唨歐洲同埋美國嘅學術領域嘅關注,而且同其他機械人框架相比,用戶數量迅速增加[21] [4]。ROS經已開始為服務型機械人開發,但亦都有一啲將其用於工業機械人嘅運動。啟動唨ROS-Industrial項目,並於2012年1月開放唨ROS-Industorial嘅公共存儲庫。
另一方面,iRobot公司CEO科林-安吉(Colin Angle)指出,ROS開放機械人關鍵軟件嘅做法,會令其他國家利用經已建立起來嘅重要知識產權[22]。佢批評ROS對機械人產業有危險,唔利於商業化,並認為ROS應該立即關閉[5]。大約喺同一時間,華盛頓大學嘅一個研究小組開發出Raven-II,一個軟件入便使唨ROS嘅手術機械人研究平台,其他大學嘅研究人員亦都開始使用佢[5][23]。對此,有人針對Intuitive Surgical公司開發嘅手術機械人系統「da Vinci」專利嘅法律問題進行指摘[24][5]。
Willow Garage方面認為,機械人技術領域亦都需要類似LAMP嘅Web開發基礎,即ROS [5] 此外,呢個公司仲表示正喺考慮建立一個非營利組織,譬如Apache Software Foundation [5] 呢個非營利組織旨在收集捐款,組織開發人員社區與及獨立管理同埋維護ROS [25]
自OSRF成立以嚟
編輯2012年4月,Willow Garage拆分唨ROS項目,並成立唨非營利性開源機械人基金會(OSRF) [26] OSRF嘅核心任務係「支持開發,分發同埋引入用於機械人研究,教育同埋產品開發嘅開源軟件。」[26] 2013年2月,Willow Garage宣布佢將接管OSRF開源程序入便嘅機械人研發工作[26]
同年9月,OSRF接管唨ROS嘅開發同埋管理,並發行唨第一個發行版「Hydro Medusa」[4]以前,呢個發行版本每年發行兩次,但係自Hydro Medusa以嚟,佢經已成為每年一次正式發行,其中包含唨唔希望頻繁更新嘅用戶嘅意見[27]。同時,為唨促進ROS社區內部嘅交流同埋信息共享,於2012年5月喺美國明尼蘇達州聖保羅舉行唨首個開發人員會議「ROSCon」,此後每年都喺改變場地嘅情況下舉行。
ROS嘅使用範圍經已從學術領域擴展到製造,農業同埋商業領域,配備ROS嘅機械人經已商業化並投放市場[28][28] [4]由於ROS最初主要係為學術領域嘅研究開發而開發嘅,因此唔滿足呢啲新嘅應用領域要求嘅部件變得引人注目[28] [4]。另外,喺ROS於2007年發佈之後,適合ROS要求嘅新技術同埋軟件庫嘅開發同埋傳播亦都取得唨進展[28] ROS開發人員經已考慮唨滿足新要求並結合新技術以進一步開發ROS嘅方法[28] [4]因此,下一代版本係戥現有ROS分開開發嘅,目的係喺開發ROS嘅同時抑制對使用現有ROS嘅用戶嘅影響,而唔會出現問題[4]。下一代版本係「ROS 」名為「2」嘅Alpha版本於2015年8月開始發佈,而Beta版本則於2016年開始分階段發佈。[29][29]而喺2017年12月8號,ROS 2「Ardent Apalone」嘅第一個正式版本經已發佈,更新嘅版本「Bouncy Bolson」於2018年7月2日發佈。[29]
2017年5月,OSRF改名為「Open Robotics」。[4]
使開ROS嘅機械人
編輯ROS廣泛用於大學同埋研究機構等學術領域、工業領域同埋業餘愛好領域[30]。ROS嘅用途擴展緊到移動機械人同埋機械人手臂、與及類人機械人、自動駕駛汽車、無人機與及自動無人潛水器[31]。喺ROS官方網站上介紹唨宣布搭載唨ROS嘅機械人[† 1] [4]。此外,公司、研究機構、大學、個人等都開發緊好多私下使用ROS嘅機械人[4]。
喺2015年舉行嘅DARPA機械人挑戰賽度,參加比賽嘅23個團隊入便有18個使用唨ROS [32]。筑波挑戰賽,一個比賽考驗移動機械人可以喺室外譬如喺公園同埋長廊入便一公里內自主行走嘅[33],個2017年屆錦標賽入便嘅三分之二以上嘅團隊使用唨ROS [34]。此外,RoboCup嘅一部分「RoboCup @ Home」,之競爭喺家庭環境入便會遇到嘅挑戰嘅[35],個2016年屆錦標賽24支參賽隊入便,有23支使用唨ROS [34]。除唨呢啲例子,美國太空總署(NASA)開發畀國際太空站嘅機械人Robonaut 2上高亦都經已採用唨ROS[36]。
由啲支持ROS嘅機械人製造商開發嘅機械人,通常都有允許ROS跟製造商嘅控制器通信嘅接口[37]。截至2018年,由機械人製造商提供嘅控制器,譬如伺服機構嘅控制,好多時用於啲處理跟機械人嘅安全性同埋可靠性直接相關嘅零件[37]。
TurtleBot
編輯TurtleBot係針對ROS初學者嘅標準機械人平台[4]。TurtleBot源自烏龜形機械人,呢個機械人係作為教育編程語言LOGO嘅使用而創建嘅,由Willow Garage研究人員開發[4]。ROS Wiki上提供嘅教程[† 2]入便出現嘅「turtlesim」亦都遵循徽標編程系統[4]。
TurtleBot經已被開發為第一代、第二代同埋第三代[4]。唔同代都係裝有距離傳感器、手提電腦抑或單板電腦嘅輪式移動機械人 [4]。第一個TurtleBot 1係喺2010年使用iRobot嘅Create [4]開發嘅。第二代TurtleBot2於2012年開發,並採用唨Yujin Robot嘅iClebo作為移動基礎[4]。第三代TurtleBot3用ROBOTIS執行器作爲傳動系統,令啲用戶可以重新佈置零件[4]。TurtleBot係開源硬件,零件清單同埋CAD數據對公眾開放,允許用戶改進零件並使3D打印機創建零件[4]。
支持平台
編輯要使用ROS,要喺開發軟件並控制機械人嘅電腦上安裝ROS [4]。
運行ROS嘅OS主要係基於Linux嘅OS,譬如Ubuntu同埋Linux Mint,而且macOS,Windows同埋Android亦都支持某啲功能[4]。對於主要嘅作業系統,ROS Wiki解釋瞭如何安裝ROS [4]。尤其係Ubuntu,佢係一種流行嘅作業系統,可以安裝喺軟件包管理系統入便,有時需要經過ROS開發團隊嘅測試[4]。
對於Windows,微軟開發唨「ROS1 for Windows」,並喺試用嘅基礎上發佈唨佢[38] [39]。若果可以安裝ROS並可以執行節點,則可以透過喺各種OS上組合以唔同語言實現嘅節點嚟構建系統[40]。可以喺ROS官方網站等上查看每個發行版支持嘅平台。[† 3]。
發行版
編輯ROS自2010年作為「ROS 1.0」宣布以嚟,佢經已進行唨更新,並已作為「發行版」發佈,其中包括一組特定版本嘅文件[41]。
過去,ROS嘅發佈週期係每年兩次(4月同埋10月),跟受支持嘅作業系統Ubuntu嘅發佈週期一致[4]但係,從2013年發佈嘅「Hydro Medusa」開始,正式發佈週期變為每年一次,其中吸收唨唔希望頻繁更新嘅用戶嘅意見[4]
ROS發行版有兩種支持期。像Ubuntu一樣,佢包含唨長期支持(LTS)嘅概念,喺偶數年入便發佈LTS為5年支持期嘅Distortion,其他支持期為2年[42] [4]。
ROS發行版都以第二隻「Box Turtle」之後嘅海龜命名,並按字母順序縮寫[4]每個ROS發行版都有一個烏龜圖標[4]。ROS徽標上嘅九個點亦都源自烏龜殼[4] ROS象徵著烏龜,以便ROS喺智能機械人世界入便扮演烏龜一樣嘅角色,以古老嘅宇宙觀命名,即烏龜上面嘅大象支撐著地球,其中包括願望[7]。
發行名 | 發布日期 | 終止支持日期 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Melodic Morenia | 2018年5月23號 | 2023年5月30號 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Lunar Loggerhead | 2017年5月23號 | 2019年5月30號 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Kinetic Kame | 2016年5月23號 | 2021年5月30號 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Jade Turtle | 2015年5月23號 | 2017年5月30號 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Indigo Igloo | 2014年7月22號 | 2019年4月30號 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Hydro Medusa | 2013年9月4號 | 2014年5月31號 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Groovy Galapagos | 2012年12月31號 | 2014年7月31號 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Fuerte Turtle | 2012年4月23號 | -- | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Electric Emys | 2011年8月30號 | -- | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Diamondback | 2011年3月2號 | -- | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
C Turtle | 2010年8月2號 | -- | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Box Turtle | 2010年3月2號 | -- | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
ROS啲發行版嘅海報 | ||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
許可證
編輯ROS軟件許可證使用開源軟件之一,BSD許可證同埋Apache 2.0許可證[5] [4]呢個使得將其用於商業同埋非商業目的成為可能,任何人都可以修改,重用同埋重新發行ROS,而且好多志願者都參與唨開發同埋改進[4] [7]。
文件結構同工具
編輯ROS係一個結合唨各種軟件包同埋工具嘅軟件系統[4] [43][43]。同每種編程語言相對應嘅「客戶端層」,實現特定應用程序嘅「機械人應用程序層」,用於創建單獨嘅應用程序嘅「應用程序框架」,用於通信嘅「通信層」,硬件控制佢由一個「硬件接口層」組成,支持開發嘅「軟件開發工具」同埋一個「模擬器」[4] [43]。
ROS包裝
編輯ROS應用程序以喊做「包」嘅基本單位進行管理[4]。軟件包係ROS軟件嘅基本單元,具有一個或多個「節點」(參閱計算圖上嘅機制),呢個係最小執行單元,或者包含用於執行其他軟件包嘅節點嘅配置文件[7] [44] [7] [44]。每個軟件包都包含軟件包信息管理文件,構建入便使用嘅配置文件,節點源代碼,用於節點間通信嘅配置文件等。[7] [45]。[7] [4]亦都有所謂嘅「元軟件包」,佢係由多個軟件包組成嘅分組。
有2,000多個官方ROS軟件包[4]有用於控制機械人主體嘅軟件包,用於傳感器嘅軟件包與及用於驅動單元[4]用於電機控制嘅軟件包。用於各種設備(譬如相機,深度相機,激光距離傳感器,力/扭矩傳感器,語音識別同埋RFID)嘅傳感器套件經已發佈[4]。
輔助/周邊工具
編輯ROS提供唨多種工具嚟協助軟件開發[7] [4]主要工具係GUI實用工具「rqt」,3D可視化工具「RViz」與及用於操縱器運動控制嘅集成庫「MoveIt!」。除唨3D動力學模擬器「Gazebo」嘅插件外,仲有稍後介紹到嘅構建系統同埋軟件包發佈工具[7] [4]。
RViz(ROS Visualization)係ROS可視化工具之一[4]。透過準備一種可視化方法作為插件,可以顯示由ROS傳遞嘅任何類型嘅數據[37]。譬如,可以喺三個維度上顯示諸如距離傳感器同埋三維深度傳感器嘅傳感器信息,機械人形狀模型,地圖與及要操作嘅計劃軌跡[4]。
rqt係提供基於Qt [4]嘅GUI環境嘅工具。經已為rqt開發唨各種插件,譬如繪製ROS分佈式過程嘅層次結構同埋連接關係嘅圖形,檢查機械人車載攝像機嘅圖像與及喺圖形上繪製時間序列數據。[4]。
MoveIt!係提供各種功能嘅工具,譬如用於機械手運動規劃嘅高速前向動力學計算,用於機械手嘅高級演算法同埋機械手控制[46]。然之後,可以喺GUI上執行設置同埋操作,從而可以喺唔使深入瞭解操縱器嘅情況下執行運動生成[46] [47]。
Gazebo係一個3D空間動力學模擬器,配有物理引擎同埋3D圖形引擎[48]可以讀取機械人或太空嘅3D模型,模擬傳感器嘅行為,包括物理現象同埋噪聲,並顯示3D圖像[48]。即管Gazebo係獨立於ROS嘅軟件,但由於佢係由領導ROS嘅Open Robotics開發嘅,因此跟ROS具有高度嘅親和力。[48]
安裝
編輯ROS文件系統分為安裝文件夾同埋用戶工作文件夾[4]。喺安裝文件夾入便,安裝唨核心實用程序,包括ROS嘅核心程序「roscore」,跟機械人相關嘅庫與及用於可視化同埋仿真嘅開發支持工具[4]。用戶工作文件夾係一個工作區,可以喺其中保存同埋編輯下載嘅程序包同埋用戶創建嘅程序包,並將佢哋構建為可執行格式[4]。
根據用戶想要使用嘅功能安裝其他必需嘅軟件包同埋工具 [4]。可以使用軟件包管理工具嚟安裝軟件包,亦都可以從庫入便獲取並構建源代碼[4]。ROS被設計為分佈式系統,而且可以喺多個主機(電腦)上以分佈式方式安裝軟件包[49]。
開發語言
編輯要實現現有程序包入便冇嘅硬件,演算法等,要自己創建程序包。ROS支持多種編程語言[4]。主要語言係C++同埋Python,其他程序可以用Lisp、Java、Lua、Ruby,Octave等開發。[7] [4] [43]
建立系統
編輯ROS有一個構建系統,可以從源代碼中生成(構建)所需嘅代碼[50]。最初嘅構建系統喊做「rosbuild」,但後嚟開發唨一個名為「catkin」嘅新系統[51]開始從發行版「Groovy Galapagos」轉換為catkin,「Hydro Medusa」之後,所有系統都支持catkin[51] catkin係CMake嘅修改/擴展版本,可構建軟件包,管理軟件包並自動安裝依賴軟件包[52] catkin採用唨一種外包嘅構建方法,呢個方法將構建結果存儲喺跟源代碼唔同嘅目錄入便,並支持程序包嘅重新分發同埋交叉編譯,從而提高唨軟件嘅可移植性[50]。
名為「catkin」嘅係柳樹嘅Willow Garage,Inc.開發嘅。柳絮(Willow = 柳樹) catkin(英文:catkin)。
註解
編輯若果製作新軟件包或改進或修改現有軟件包,則可以提交到存儲庫並釋放佢。ROS提供唨一個釋放工具「bloom」,其釋放過程包括如何使用佢喺ROS Wiki。
數據通訊機制
編輯ROS被設計為可提高軟件可重用性嘅分佈式系統[53] [1]。ROS作為一個大型軟件系統運行,其流程喊做節點發送同埋接收處理結果[7] [1]。ROS過程構成對等網絡(以下喊做「ROS網絡」),而且ROS網絡可以表示為計算圖[54]。
節點
編輯機械人處理從傳感器,用戶界面等輸入嘅信息,執行實現呢個目的所需嘅各種計算,並控制驅動系統。ROS將呢啲操作細分為較小嘅程序,喊做「節點」,並實現佢哋[4]。節點係可執行程序,而且係ROS [7] [4]入便處理功能嘅基本單元。為諸如傳感器驅動程序,避障,電機驅動同埋導航之類嘅目的創建節點[4]。每個節點獨立且並行噉操作,而且可以喺同一主機上執行或分佈到多個主機[7] [4]。
主機
編輯管理節點之間嘅連接信息嘅程序喊做「主機」,負責使註冊嘅節點對其他節點可見[32] [55] [4]。透過執行核心實用程序[4] [55]包含嘅程序「roscore」嚟啟動母版。當每個節點啟動時,通信所需嘅信息(譬如節點名稱,URI同埋端口號)被註冊喺主服務器入便[7] [4]。主節點喺節點請求時返回有關目標節點嘅信息,並基於此信息,節點戥目標節點建立對等連接[7] [4]。為唨運行ROS系統,必須喺構建ROS網絡嘅任何主機上啟動一個主機[56] [55]。主機建立並管理一個ROS網絡,而且冇辦法喺同一個ROS網絡內啟動多個roscore [56] [55] [32]。若果主節點連接唔同網絡之間嘅節點,則有必要構建單獨嘅通信機制[32]。
節點間通訊
編輯ROS喺節點之間具有三種通信方法:單向異步通信方法「主題」,兩向同步通信方法「服務」同埋兩向異步通信方法「動作」[4]。ROS傳遞-訂閱-訂閱消息通信基礎結構幾乎係完全專有嘅[4] [28]。
- 話題
- ROS主題交流係一種消息傳遞[7]。喺ROS入便,消息嘅發送者喊做發佈者(publisher),而接收者喊做訂閱者(subscriber) [7] [4]。節點啟動時,發佈者將分發所需嘅信息註冊到主節點入便[57] [4]。當節點啟動時,訂戶仲將佢嘅信息同埋佢要訂閱嘅消息註冊到主服務器入便[57] [4]。主機將發佈者嘅地址傳遞給訂閱者,以便訂閱者連接到發佈者並接收消息[57] [4]。主題通信用於發送同埋接收需要高頻數據通信嘅傳感器信號,因為建立連接後便會連續發送同埋接收消息[58]。
- 服務
- 服務通信發生喺接收到請求時做出響應嘅服務服務器跟向服務服務器發出請求嘅服務客戶端之間[59] [7]。服務通信喺客戶端發送服務請求時開始,喺其從服務器接收服務響應時結束,而且喺節點之間斷開連接[59] [7]。呢個服務嘅網絡負載較低,因為喺請求同埋響應完成之後,兩個節點之間嘅通信都被切斷唨[59]。當向機械人發出某啲動作嘅指令或想要生成喺某啲條件下發生嘅事件時,會使用服務通信[59]。
- 行爲
- 喺服務通信入便,呢個過程被鎖定,直到從服務器返迴響應為止[7]。因此,動作通信被實現為用於從請求到響應花費好長時間嘅處理嘅通信手段[7] [4]。動作亦都被實現為服務器-客戶端方法,其中發出請求嘅節點係客戶端,執行請求並返迴響應嘅節點係服務器[7]。措施當客戶端向服務器發送請求終止條件(Goal)時,服務器開始處理並發送正喺進行嘅反饋(Feelback)同埋目標[7] [60]嘅結果(Result)。客戶端仲可以將取消請求發送到服務器[7] [60]。動作通信係一種雙向通信方法,譬如服務通信,但佢係異步通信,執行方法接近主題通信[60]。動作通信嘅合適示例係對移動機械人執行命令以使其行進到遠處[61]。
ROS社區
編輯ROS嘅一大優勢係支持圖書館團體同埋共享機制嘅積極社區活動[5]世界上有各種機械人軟件平台,但係ROS喺社區活動入便尤其活躍[5] ROS嘅開發唔係由開放嘅機械人技術獨立完成嘅,而係喺全世界範圍內開放嘅[4]嚟自大學同埋研究機構嘅研究人員,嚟自行業嘅工程師,甚至係將軟件同埋機械人作為業餘愛好開發嘅業餘愛好者都參與並為ROS嘅開發做出唨貢獻[4]除唨機械人專家之外,嚟自電腦科學,電腦網絡同埋電腦視覺等領域嘅專家亦都參加唨[4]
- ROS Wiki
- 基於Wiki嘅網站「ROS Wiki」經已被設置為記錄有關ROS信息嘅中心[7] [4]。ROS Wiki提供唨基本嘅ROS指令,用法,教程,指南等[7] [62]。ROS Wiki上亦都提供唨有關每個軟件包嘅信息,其中包括對呢個軟件包嘅描述,存儲庫URL,作者,許可證等。[7] [4]。可以自由創建ROS Wiki帳戶並共享要發佈嘅有關ROS嘅信息[7] [4]。
- 公共庫
- ROS公共軟件包括喺GitHub等存儲庫入便發佈同埋管理,而且ROS Wiki軟件包頁面上列出唨存儲庫嘅URL [63]。用戶可以從存儲庫入便獲取包嘅源代碼[4]。
- ROS Answers /郵件列表
- 網上亦都有一個名為「ROS Answers」[† 4]問答論壇,係一個提出有關ROS [4] 問題嘅場所。社區參與者(譬如經驗豐富嘅人)可以回答問題,仲可以搜索過去嘅問題[4]。仲有一個郵件列表,用於分發ROS更新信息並詢問同埋回答問題。
- ROSCon
- 自2012年以嚟,開發人員大會「ROSCon」每年舉行一次,呢個活動旨在使開發人員唔僅喺線交流,而且彼此交流。截至2018年,經已從北美,歐洲同埋亞洲按順序選擇唨ROSCon場館。[4]此外,喺國際機械人相關會議上仲舉辦唨有關ROS嘅研討會[6]
ROS-Industrial
編輯ROS-Industrial係為工業機械人擴展ROS嘅一種努力。ROS經已廣泛用於服務機械人研究領域。使用ROS嘅智能信息處理功能亦都可以應用於工業機械人領域,而且有望實現以前喺技術同埋成本方面難以實現嘅功能。透過將工業機械人嘅可靠性跟開放社區嘅靈活性相結合,會促進使用ROS嘅機械人應用程序嘅開發,降低工業機械人嘅開發成本,並將ROS用於新型商業化同埋下一代機械人市場。[10] [17]
ROS-Industorial係一個開源項目,係安川電機,Willow Garage,Inc.,同埋美國獨立嘅非營利性機構西南研究所聯合發起。2012年1月,SwRI喺GitHub上開放唨一個ROS-Industorial存儲庫之後,喺2013年3月,由ROS工業項目成立唨ROS工業聯盟[17]呢個聯盟嘅核心成員包括美國嘅SwRI,歐洲德國嘅弗勞恩霍夫研究所嘅生產技術同埋自動化(IPA),與及亞太地區新加坡嘅高級再製造同埋技術中心(ARTC)同埋南洋理工大學[17]。截至2018年10月,諸如3M、波音、空中客車、寶馬,博世、西門子、ABB、卡特彼勒、微軟,Universal Robots等私營公司與及領導ROS自身發展嘅「Open Robotics」都係呢個組織嘅成員財團[64]。
作為一般規則,ROS-Industrial嘅研究結果係根據BSD許可或Apache 2.0許可。但係,ROS工業協會有一個名為「重點技術項目(FTP)」嘅系統[17] FTP係一個由財團參與者組成嘅研究小組,透過設定特定主題,喺小組內分攤成本同埋設備與及共享研究成果[17]。FTP研究嘅結果並唔總係公開嘅,可以決定係否公開,與及何時由FTP組嘅成員進行審議[17] [10]。可以說,呢個係ROS工業入便跟知識產權管理相關嘅一項舉措[10]。
ROS2
編輯- 成為單個機械人
- 可用嘅工作站級計算資源
- 唔使實時處理[66]
- 足夠快速同埋穩定嘅網絡連接環境
- 必須係主要喺學術領域嘅研究應用
- 無限製或禁止嘅最大靈活性
呢啲係喺2007年開始開發時設置嘅,隨著ROS社區嘅後續發展,佢哋嘅使用範圍經已擴展到製造,農業同埋商業領域,配備ROS嘅機械人經已商業化[4] [28]。隨著使用領域嘅擴大,對ROS [4] [28]提出唨以下新要求。
- 同時控制多個機械人
- 小型電腦對嵌入式系統嘅支持
- 支持實時控制
- 支持唔穩定嘅網絡,譬如糟糕嘅Wi-Fi環境
- 對應產品使用
另外,ROS最初開發唨一個分發-訂閱消息通信平台,但隨著隨後嘅技術發展,滿足ROS要求嘅開源通信中介軟件(如Zeroconf,協議緩衝區同埋數據分發服務(DDS)出現唨[4] [28]。研究唨ROS應該如何成為下一代產品之後,ROS開發人員將其戥現有ROS分開,以減少對使用現有ROS且唔會出現問題嘅用戶嘅影響,而下一代版本為「ROS 2」被開發[30]。
現有ROS(ROS1)入便實現嘅通信庫係ROS。 喺2入便,佢被數據分發服務(DDS) [4]取代。透過DDS實現嘅節點之間嘅安全通信,服務質量(QoS)通信,實時通信同埋相互發現功能係ROS 以2 [67]。結果,提高唨消息通信嘅實時性能,而且若果硬件同埋作業系統具有實時性能,則可以使用ROS [68]嘅標準功能嚟實現實時控制,而且佢可以係單個嘅。[67]可以形成唔需要「roscore」(主節點)嘅節點間網絡。呢啲新功能嘅ROS API係喺2入便新設計嘅,但係ROS 仲有一個戥1進行相互消息通信嘅橋接程序,兩者之間嘅互操作性亦都係可能嘅[4]。另外,ROS 喺2入便,構建系統亦都進行唨升級,並基於catkin開發唨「ament」[68]
ROS 自2015年以嚟,分階段發佈唨2嘅alpha同埋beta版本。[29]然之後,喺2017年12月,發佈唨第一個發行版本「Ardent Apalone」,並喺2018年7月,發佈唨一個新版本「Bouncy Bolson」[29]「Bouncy Bolson」時嘅ROS 2喺Ubuntu(16.04,18.04),macOS Sierra同埋Windows 10 [69]上可用。ROS 文檔2喺GitHub上發佈,仲有一個頁面解釋如何安裝佢[† 5]
腳註
編輯註釋
編輯- ↑ ROSの利用ロボットの紹介ページ:https://robots.ros.org
- ↑ ROS Wikiのチュートリアル: http://wiki.ros.org/ROS/Tutorials
- ↑ 例えば、Kinetic Kame の対応OSは http://wiki.ros.org/kinetic で確認できる。また、ROSの対象プラットフォームについては http://www.ros.org/reps/rep-0003.html で確認できる。いずれも2018年10月15日閲覧。
- ↑ ROS Answers のURL: https://answers.ros.org/questions/
- ↑ GitHubのROS 2のページ:https://github.com/ros2/ros2/wiki
腳註
編輯- ↑ 1.0 1.1 1.2 1.3 表、倉爪、鄭 2018,頁 12.
- ↑ "About ROS", ROS.org, 原著喺2018-10-13歸檔, 喺2018-10-15搵到
- ↑ Quigley et al. 2009.
- ↑ 4.00 4.01 4.02 4.03 4.04 4.05 4.06 4.07 4.08 4.09 4.10 4.11 4.12 4.13 4.14 4.15 4.16 4.17 4.18 4.19 4.20 4.21 4.22 4.23 4.24 4.25 4.26 4.27 4.28 4.29 4.30 4.31 4.32 4.33 4.34 4.35 4.36 4.37 4.38 4.39 4.40 4.41 4.42 4.43 4.44 4.45 4.46 4.47 4.48 4.49 4.50 4.51 4.52 4.53 4.54 4.55 4.56 4.57 4.58 4.59 4.60 4.61 4.62 4.63 4.64 4.65 4.66 4.67 4.68 4.69 4.70 4.71 4.72 4.73 4.74 4.75 4.76 4.77 4.78 4.79 4.80 4.81 4.82 4.83 4.84 4.85 4.86 4.87 4.88 4.89 4.90 4.91 表、倉爪、鄭 2018.
- ↑ 5.00 5.01 5.02 5.03 5.04 5.05 5.06 5.07 5.08 5.09 5.10 成田等人2012.
- ↑ 6.0 6.1 6.2 6.3 岡田 2012a.
- ↑ 7.00 7.01 7.02 7.03 7.04 7.05 7.06 7.07 7.08 7.09 7.10 7.11 7.12 7.13 7.14 7.15 7.16 7.17 7.18 7.19 7.20 7.21 7.22 7.23 7.24 7.25 7.26 7.27 銭 2016.
- ↑ "ROS/Introduction". ROS Wiki. 喺2018-10-11搵到.
- ↑ "What is ROS exactly? Middleware, Framework, Operating System?". ROS Answers: Open Source Q&A Forum. 喺2018-09-25搵到.
- ↑ 10.0 10.1 10.2 10.3 成田、中川、小川 2013.
- ↑ 相山康道 (2008),〈ロボット・マニピュレーションの基礎(はじめての精密工学)〉,《精密工学会誌》,公益社団法人精密工学会,74 (10): 1042–1045,doi:10.2493/jjspe.74.1042,ISSN 0912-0289
{{citation}}
: Invalid|ref=harv
(help) - ↑ 操作対象物をマニピュレータやハンド等で望みの位置・方向へ動かすこと[11]。
- ↑ 13.0 13.1 岡田 2012b,頁 584.
- ↑ 14.0 14.1 表、倉爪、鄭 2018,頁 14.
- ↑ 15.0 15.1 15.2 15.3 15.4 15.5 岡田 2012b.
- ↑ 16.0 16.1 16.2 16.3 影木 2011.
- ↑ 17.00 17.01 17.02 17.03 17.04 17.05 17.06 17.07 17.08 17.09 17.10 NEDO 2014.
- ↑ 〈40万ドルのパーソナルロボット「PR2」、米ベンチャーが発売〉。ITmedia NEWS。2010-09-09。歸檔時間2018-10-19。喺2018-10-14搵到。
{{cite web}}
: CS1 maint: bot: original URL status unknown (link) - ↑ "PR2 beta Programming". Willow Garage. 原著喺2017-02-20歸檔. 喺2018-10-14搵到.
- ↑ "The Results Are In: PR2 Beta Program Recipients!". Willow Garage. 原著喺2018-07-13歸檔. 喺2018-10-21搵到.
- ↑ 岡田 2012b,頁 584–585.
- ↑ 河本和宏 (2016-07-22)。〈ロボットの"PARC"「Willow Garage」が撒いた種〉。MONOist。喺2019-09-25搵到。
- ↑ B. Hannaford; J. Rosen; D. W. Friedman; H. King; P. Roan; L. Cheng; D. Glozman; J. Ma; S. N. Kosari (2013), "Raven-II: An Open Platform for Surgical Robotics Research", IEEE Transactions on Biomedical Engineering, 60 (4): 954–959, doi:10.1109/TBME.2012.2228858, ISSN 0018-9294
{{citation}}
: Invalid|ref=harv
(help) - ↑ "An open-source robo-surgeon - Monitor". The Economist. 2012-03-03. 喺2018-09-29搵到.
- ↑ 成田等人2012,頁 28–29.
- ↑ 26.0 26.1 26.2 成田、中川、小川 2013,頁 6.
- ↑ 表、倉爪、鄭 2018,頁 18.
- ↑ 28.00 28.01 28.02 28.03 28.04 28.05 28.06 28.07 28.08 28.09 "Why ROS 2?". design.ros2.org. 喺2018-10-18搵到.
- ↑ 29.0 29.1 29.2 29.3 29.4 "ros2/ros2". GitHub. 喺2018-10-19搵到.
- ↑ 30.0 30.1 表、倉爪、鄭 2018,頁 423.
- ↑ 表、倉爪、鄭 2018,頁 181–184.
- ↑ 32.0 32.1 32.2 32.3 西田 et al. 2018,頁 27.
- ↑ 〈つくばチャレンジ概要〉。《つくばチャレンジ》。原著喺2018-11-23歸檔。喺2018-11-23搵到。
- ↑ 34.0 34.1 上田 2018,頁 715.
- ↑ 〈ロボカップ@ホーム〉。《ロボカップ日本委員会》。原著喺2018-10-01歸檔。喺2018-11-23搵到。
- ↑ 西田 et al. 2018,頁 2.
- ↑ 37.0 37.1 37.2 岡田 2018.
- ↑ 〈MS、Windows向けRobot Operating Systemの試験リリースを発表〉。CNET Japan。喺2018-10-12搵到。
- ↑ "ros-win". 喺2018-10-12搵到.
- ↑ 表、倉爪、鄭 2018,頁 67.
- ↑ "Distributions". ROS Wiki. 喺2018-10-13搵到.
- ↑ "Distributions". ROS Wiki. 喺2018-10-11搵到.
- ↑ 43.0 43.1 43.2 43.3 "APIs". ROS Wiki. 喺2018-10-15搵到.
- ↑ 44.0 44.1 表、倉爪、鄭 2018,頁 44, 67–68.
- ↑ 表、倉爪、鄭 2018,頁 67–68.
- ↑ 46.0 46.1 表、倉爪、鄭 2018,頁 397–421.
- ↑ 表、倉爪、鄭 2018,頁 371.
- ↑ 48.0 48.1 48.2 表、倉爪、鄭 2018,頁 281–289.
- ↑ 銭 2016,頁 3.
- ↑ 50.0 50.1 銭 2016,頁 8.
- ↑ 51.0 51.1 表、倉爪、渡邊 2015,頁 44.
- ↑ 表、倉爪、鄭 2018,頁 47.
- ↑ 銭 2016,頁 12.
- ↑ 表、倉爪、鄭 2018,頁 63.
- ↑ 55.0 55.1 55.2 55.3 銭 2016,頁 13.
- ↑ 56.0 56.1 表、倉爪、渡邊 2015.
- ↑ 57.0 57.1 57.2 銭 2016,頁 14–15.
- ↑ 表、倉爪、鄭 2018,頁 45, 52.
- ↑ 59.0 59.1 59.2 59.3 表、倉爪、鄭 2018,頁 52, 153.
- ↑ 60.0 60.1 60.2 表、倉爪、鄭 2018,頁 46, 58.
- ↑ Quigley, Gerkey & Smart 2015, pp. 61–62.
- ↑ 表、倉爪、鄭 2018,頁 48, 142–143.
- ↑ 表、倉爪、鄭 2018,頁 12, 48.
- ↑ "Current Members". ROS-Industrial. 原著喺2019-02-13歸檔. 喺2018-10-06搵到.
- ↑ "ROS/Introduction". ROS Wiki. 喺2018-10-19搵到.
- ↑ ただし、ROS 1でも特殊な実装とハードウェア等の対応があればリアルタイム制御は可能である[65]
- ↑ 67.0 67.1 岡田 2018,頁 691.
- ↑ 68.0 68.1 表、倉爪、鄭 2018,頁 426.
- ↑ "Release Bouncy Bolson". ros2/ros2 Wiki GitHub. 喺2018-10-19搵到.
考
編輯- 上田隆一 (2018),〈移動ロボットのためのROSパッケージの紹介と実機への導入方法〉,《計測と制御》,57 (10): 715–720,doi:10.11499/sicejl.57.715
{{citation}}
: Invalid|ref=harv
(help) - 岡田慧 (2012a),〈ROS(ロボット・オペレーティング・システム)〉,《日本ロボット学会誌》,30 (9): 830–835,doi:10.7210/jrsj.30.830
{{citation}}
: Invalid|ref=harv
(help) - 岡田慧 (2012b),〈海外のロボット用オープンソースソフトウェアの動向と今後の可能性〉,《システム/制御/情報》,56 (11): 584–589,doi:10.11509/isciesci.56.11_584
{{citation}}
: Invalid|ref=harv
(help) - 岡田慧 (2018),〈ROS(ロボット・オペレーティング・システム)の近況と今後の展望〉,《計測と制御》,57 (10): 688–693,doi:10.11499/sicejl.57.688
{{citation}}
: Invalid|ref=harv
(help) - 影木准子 (2011),〈米国のロボット研究グループの広報戦略〉,《日本ロボット学会誌》,29 (2): 151–153,doi:10.7210/jrsj.29.151
{{citation}}
: Invalid|ref=harv
(help) - 新エネルギー・産業技術総合開発機構 (NEDO) (2014),《NEDO:NEDOロボット白書2014》,NEDO,喺2018-10-03搵到
- 銭飛 (2016),《ROSプログラミング》,森北出版,ISBN 978-4627853416
{{citation}}
: Invalid|ref=harv
(help) - 出杏光魯仙 (2010),〈海外の動向:ROS・OpenRAVEの新オープンソース開発環境が活かす知的マニピュレーション〉,《日本ロボット学会誌》,28 (5): 585–588,doi:10.7210/jrsj.28.585
{{citation}}
: Invalid|ref=harv
(help) - 成田雅彦; 加藤由花; 中川幸子、小川紘一 (2012),〈技術のオープンイノベーション-Robot-OS(ROS)の戦略と我が国ロボット技術開発の方向性-〉 (PDF),《東京大学政策ビジョン研究センター》,喺2018-09-21搵到
{{citation}}
: Invalid|ref=harv
(help) - 成田雅彦; 中川幸子、小川紘一 (2013),〈ロボット技術のオープンイノベーション(その2)-Robot-OS(ROS)のグローバル戦略と日本のロボットソフトウェア基盤開発の方向性-〉 (PDF),《東京大学政策ビジョン研究センター》,喺2018-09-21搵到
{{citation}}
: Invalid|ref=harv
(help) - 西田健; 森田賢; 岡田浩之; 原祥尭; 山崎公俊; 田向権; 垣内洋平; 大川一也、齋藤功 (2018),《実用ロボット開発のためのROSプログラミング》,森北出版,ISBN 978-4-627-67581-0
- 表允晳; 倉爪亮、渡邊裕太 (2015),《詳説 ROSロボットプログラミング》,Kurazume Laboratory,ISBN 9784990873608
{{citation}}
: Invalid|ref=harv
(help) - 表允晳; 倉爪亮、鄭黎縕 (2018),《ROSロボットプログラミングバイブル》,オーム社,ISBN 9784274221965
{{citation}}
: Invalid|ref=harv
(help) - Quigley, Morgan; Conley, Ken; Gerkey, Brian; Faust, Josh; Foote, Tully; Leibs, Jeremy; Wheeler, Rob; Ng, Andrew Y (2009), "ROS: an open-source Robot Operating System", ICRA workshop on open source software, 3 (3.2): 5
- Quigley, Morgan; Gerkey, Brian; Smart, William D. (2015), Programming Robots with ROS, O'Reilly Media, ISBN 9781449323899
{{citation}}
: Invalid|ref=harv
(help)