ROS機(jī)器人操作系統(tǒng)
ROS (Robot Operating System, 機(jī)器人操作系統(tǒng)) 提供一系列程序庫和工具以幫助軟件開發(fā)者創(chuàng)建機(jī)器人應(yīng)用軟件。它提供了硬件抽象、設(shè)備驅(qū)動、庫函數(shù)、可視化、消息傳遞和軟件包管理等諸多功能。ROS 遵守 BSD 開源許可協(xié)議。
ROS 是一個(gè)適用于機(jī)器人的開源的元操作系統(tǒng)。它提供了操作系統(tǒng)應(yīng)有的服務(wù),包括硬件抽象,底層設(shè)備控制,常用函數(shù)的實(shí)現(xiàn),進(jìn)程間消息傳遞,以及包管理。它也提供用于獲取、編譯、編寫、和跨計(jì)算機(jī)運(yùn)行代碼所需的工具和庫函數(shù)。在某些方面ROS相當(dāng)于一種“機(jī)器人框架(robot frameworks)”類似的“機(jī)器人框架”有:Player,YARP,Orocos,CARMEN,Orca,MOOS和 Microsoft Robotics Studio。
ROS 運(yùn)行時(shí)的“藍(lán)圖”是一種基于ROS通信基礎(chǔ)結(jié)構(gòu)的松耦合點(diǎn)對點(diǎn)進(jìn)程網(wǎng)絡(luò)。ROS實(shí)現(xiàn)了幾種不同的通信方式,包括基于同步RPC樣式通信的服務(wù)(services)機(jī)制,基于異步流媒體數(shù)據(jù)的話題(topics)機(jī)制以及用于數(shù)據(jù)存儲的參數(shù)服務(wù)器(Parameter Server)。想更加深入的解釋這些概念,請參見概念綜述。
ROS并不是一個(gè)實(shí)時(shí)的框架,但ROS可以嵌入實(shí)時(shí)程序。Willow Garage的PR2機(jī)器人使用了一種叫做pr2_etherCAT的系統(tǒng)來實(shí)時(shí)發(fā)送或接收ROS消息。ROS也可以與Orocos實(shí)時(shí)工具包無縫集成。
ROS不是一個(gè)集成了大多數(shù)功能或特征的框架。事實(shí)上,ROS 的主要目標(biāo)是為機(jī)器人研究和開發(fā)提供代碼復(fù)用的支持。ROS是一個(gè)分布式的進(jìn)程(也就是節(jié)點(diǎn))框架,這些進(jìn)程被封裝在易于被分享和發(fā)布的程序包和功能包集中。ROS也支持一種類似于代碼儲存庫的聯(lián)合系統(tǒng),這個(gè)系統(tǒng)也可以實(shí)現(xiàn)工程的協(xié)作及發(fā)布。這個(gè)設(shè)計(jì)可以使一個(gè)工程的開發(fā)和實(shí)現(xiàn)從文件系統(tǒng)到用戶接口完全獨(dú)立決策(不受ROS限制)。同時(shí),所有的工程都可以被ROS的基礎(chǔ)工具整合在一起。
為了支持分享和協(xié)作的主要目的,ROS框架也有其它幾個(gè)目標(biāo):
- 小型化:ROS盡可能設(shè)計(jì)的很小 -- 我們不封裝您的 main() 函數(shù) -- 所以為ROS編寫的代碼可以輕松的在其它機(jī)器人軟件平臺上使用。 由此得出的必然結(jié)論是ROS可以輕松集成在其它機(jī)器人軟件平臺:ROS已經(jīng)可以與OpenRAVE,Orocos和Player集成。
- ROS不敏感庫:ROS的首選開發(fā)模型都是用不依賴ROS的干凈的庫函數(shù)編寫而成。
-
語言獨(dú)立:ROS框架可以簡單地使用任何的現(xiàn)代編程語言實(shí)現(xiàn)。我們已經(jīng)實(shí)現(xiàn)了Python版本,C++版本和 Lisp版本。同時(shí),我們也擁有Java 和 Lua版本的實(shí)驗(yàn)庫。
-
方便測試:ROS內(nèi)建一個(gè)了叫做rostest的單元/集成測試框架,可以輕松安裝或卸載測試模塊。
- 可擴(kuò)展:ROS可以適用于大型運(yùn)行時(shí)系統(tǒng)和大型開發(fā)進(jìn)程。
ROS目前只能在基于Unix的平臺上運(yùn)行。ROS的軟件主要在Ubuntu和Mac OS X 系統(tǒng)上測試,同時(shí)ROS社區(qū)仍持續(xù)支持Fedora,Gentoo,Arch Linux和其它Linux平臺。
與此同時(shí),Microsoft Windows端口的ROS已經(jīng)實(shí)現(xiàn),但并未完全開發(fā)完成。
