国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
《ROS機(jī)器人程序設(shè)計(jì)》,學(xué)習(xí)開源機(jī)器人操作系統(tǒng)ROS必備書籍



對(duì)于電腦和智能手機(jī)來(lái)說(shuō),即使產(chǎn)品型號(hào)不同也能使用同款軟件。但機(jī)器人領(lǐng)域并不是這樣,因?yàn)楦鳈C(jī)器人或各廠家使用的OS、中間件以及編程語(yǔ)言都不同,并且一般不公開其規(guī)格。故此,近年來(lái)機(jī)器人用開源中間件“ROS”(機(jī)器人操作系統(tǒng))備受關(guān)注,這是由美國(guó)Willow Garage公司開發(fā)、由Open Source Robotics Foundation(OSRF)維護(hù)和管理的中間件?,F(xiàn)在日本一些機(jī)器人廠商也開始推出支持ROS的產(chǎn)品,比如川田工業(yè)、電裝WAVE及川崎重工業(yè)等。那么你了解ROS嗎?下面這篇文章小編就帶你全面了解ROS!



一、歷史


隨著機(jī)器人領(lǐng)域的快速發(fā)展和復(fù)雜化,代碼的復(fù)用性和模塊化的需求原來(lái)越強(qiáng)烈,而已有的開源機(jī)器人系統(tǒng)又不能很好的適應(yīng)需求。2010年Willow Garage公司發(fā)布了開源機(jī)器人操作系統(tǒng)ROS(robot operating system),很快在機(jī)器人研究領(lǐng)域展開了學(xué)習(xí)和使用ROS的熱潮。


隨著機(jī)器人領(lǐng)域的快速發(fā)展和復(fù)雜化,代碼的復(fù)用性和模塊化的需求原來(lái)越強(qiáng)烈,而已有的開源機(jī)器人系統(tǒng)又不能很好的適應(yīng)需求。2010年Willow Garage公司發(fā)布了開源機(jī)器人操作系統(tǒng)ROS(robot operating system),很快在機(jī)器人研究領(lǐng)域展開了學(xué)習(xí)和使用ROS的熱潮。


ROS系統(tǒng)是起源于2007年斯坦福大學(xué)人工智能實(shí)驗(yàn)室的項(xiàng)目與機(jī)器人技術(shù)公司W(wǎng)illow Garage的個(gè)人機(jī)器人項(xiàng)目(Personal Robots Program)之間的合作,2008年之后就由Willow Garage來(lái)進(jìn)行推動(dòng)。已經(jīng)有四年多的時(shí)間了 (視頻)。隨著PR2那些不可思議的表現(xiàn),譬如疊衣服,插插座,做早飯,ROS也得到越來(lái)越多的關(guān)注。Willow Garage公司也表示希望借助開源的力量使PR2變成“全能”機(jī)器人。


PR2價(jià)格高昂,2011年零售價(jià)高達(dá)40萬(wàn)美元。PR2現(xiàn)主要用于研究。PR2有兩條手臂,每條手臂七個(gè)關(guān)節(jié),手臂末端是一個(gè)可以張合的鉗子。PR2依靠底部的四個(gè)輪子移動(dòng)。在PR2的頭部,胸部,肘部,鉗子上安裝有高分辨率攝像頭,激光測(cè)距儀,慣性測(cè)量單元,觸覺傳感器等豐富的傳感設(shè)備。在PR2的底部有兩臺(tái)8核的電腦作為機(jī)器人各硬件的控制和通訊中樞。兩臺(tái)電腦安裝有Ubuntu和ROS。



二、設(shè)計(jì)目標(biāo)


ROS是開源的,是用于機(jī)器人的一種后操作系統(tǒng),或者說(shuō)次級(jí)操作系統(tǒng)。它提供類似操作系統(tǒng)所提供的功能,包含硬件抽象描述、底層驅(qū)動(dòng)程序管理、共用功能的執(zhí)行、程序間的消息傳遞、程序發(fā)行包管理,它也提供一些工具程序和庫(kù)用于獲取、建立、編寫和運(yùn)行多機(jī)整合的程序。

ROS的首要設(shè)計(jì)目標(biāo)是在機(jī)器人研發(fā)領(lǐng)域提高代碼復(fù)用率。ROS是一種分布式處理框架(又名Nodes)。這使可執(zhí)行文件能被單獨(dú)設(shè)計(jì),并且在運(yùn)行時(shí)松散耦合。這些過程可以封裝到數(shù)據(jù)包(Packages)和堆棧(Stacks)中,以便于共享和分發(fā)。ROS還支持代碼庫(kù)的聯(lián)合系統(tǒng)。使得協(xié)作亦能被分發(fā)。這種從文件系統(tǒng)級(jí)別到社區(qū)一級(jí)的設(shè)計(jì)讓獨(dú)立地決定發(fā)展和實(shí)施工作成為可能。上述所有功能都能由ROS的基礎(chǔ)工具實(shí)現(xiàn)。



三、主要特點(diǎn)


ROS的運(yùn)行架構(gòu)是一種使用ROS通信模塊實(shí)現(xiàn)模塊間P2P的松耦合的網(wǎng)絡(luò)連接的處理架構(gòu),它執(zhí)行若干種類型的通訊,包括基于服務(wù)的同步RPC(遠(yuǎn)程過程調(diào)用)通訊、基于Topic的異步數(shù)據(jù)流通訊,還有參數(shù)服務(wù)器上的數(shù)據(jù)存儲(chǔ)。但是ROS本身并沒有實(shí)時(shí)性。


ROS的主要特點(diǎn)可以歸納為以下幾條:

(1)點(diǎn)對(duì)點(diǎn)設(shè)計(jì)

一個(gè)使用ROS的系統(tǒng)包括一系列進(jìn)程,這些進(jìn)程存在于多個(gè)不同的主機(jī)并且在運(yùn)行過程中通過端對(duì)端的拓?fù)浣Y(jié)構(gòu)進(jìn)行聯(lián)系。雖然基于中心服務(wù)器的那些軟件框架也可以實(shí)現(xiàn)多進(jìn)程和多主機(jī)的優(yōu)勢(shì),但是在這些框架中,當(dāng)各電腦通過不同的網(wǎng)絡(luò)進(jìn)行連接時(shí),中心數(shù)據(jù)服務(wù)器就會(huì)發(fā)生問題。

ROS的點(diǎn)對(duì)點(diǎn)設(shè)計(jì)以及服務(wù)和節(jié)點(diǎn)管理器等機(jī)制可以分散由計(jì)算機(jī)視覺和語(yǔ)音識(shí)別等功能帶來(lái)的實(shí)時(shí)計(jì)算壓力,能夠適應(yīng)多機(jī)器人遇到的挑戰(zhàn)。

(2)多語(yǔ)言支持

在寫代碼的時(shí)候,許多編程者會(huì)比較偏向某一些編程語(yǔ)言。這些偏好是個(gè)人在每種語(yǔ)言的編程時(shí)間、調(diào)試效果、語(yǔ)法、執(zhí)行效率以及各種技術(shù)和文化的原因?qū)е碌慕Y(jié)果。為了解決這些問題,我們將ROS設(shè)計(jì)成了語(yǔ)言中立性的框架結(jié)構(gòu)。ROS現(xiàn)在支持許多種不同的語(yǔ)言,例如C++、Python、Octave和LISP,也包含其他語(yǔ)言的多種接口實(shí)現(xiàn)。

ROS的特殊性主要體現(xiàn)在消息通訊層,而不是更深的層次。端對(duì)端的連接和配置利用XML-RPC機(jī)制進(jìn)行實(shí)現(xiàn),XML-RPC也包含了大多數(shù)主要語(yǔ)言的合理實(shí)現(xiàn)描述。我們希望ROS能夠利用各種語(yǔ)言實(shí)現(xiàn)的更加自然,更符合各種語(yǔ)言的語(yǔ)法約定,而不是基于C語(yǔ)言給各種其他語(yǔ)言提供實(shí)現(xiàn)接口。然而,在某些情況下利用已經(jīng)存在的庫(kù)封裝后支持更多新的語(yǔ)言是很方便的,比如Octave的客戶端就是通過C++的封裝庫(kù)進(jìn)行實(shí)現(xiàn)的。


為了支持交叉語(yǔ)言,ROS利用了簡(jiǎn)單的、語(yǔ)言無(wú)關(guān)的接口定義語(yǔ)言去描述模塊之間的消息傳送。接口定義語(yǔ)言使用了簡(jiǎn)短的文本去描述每條消息的結(jié)構(gòu),也允許消息的合成,例如下圖就是利用接口定義語(yǔ)言描述的一個(gè)點(diǎn)的消息:

每種語(yǔ)言的代碼產(chǎn)生器就會(huì)產(chǎn)生類似本種語(yǔ)言目標(biāo)文件,在消息傳遞和接收的過程中通過ROS自動(dòng)連續(xù)并行的實(shí)現(xiàn)。這就節(jié)省了重要的編程時(shí)間,也避免了錯(cuò)誤:之前3行的接口定義文件自動(dòng)的擴(kuò)展成137行的C++代碼,96行的Python代碼,81行的Lisp代碼和99行的Octave代碼。因?yàn)橄⑹菑母鞣N簡(jiǎn)單的文本文件中自動(dòng)生成的,所以很容易列舉出新的消息類型。在編寫的時(shí)候,已知的基于ROS的代碼庫(kù)包含超過四百種消息類型,這些消息從傳感器傳送數(shù)據(jù),使得物體檢測(cè)到了周圍的環(huán)境。


最后的結(jié)果就是一種語(yǔ)言無(wú)關(guān)的消息處理,讓多種語(yǔ)言可以自由的混合和匹配使用。

(3)精簡(jiǎn)與集成

大多數(shù)已經(jīng)存在的機(jī)器人軟件工程都包含了可以在工程外重復(fù)使用的驅(qū)動(dòng)和算法,不幸的是,由于多方面的原因,大部分代碼的中間層都過于混亂,以至于很困難提取出它的功能,也很難把它們從原型中提取出來(lái)應(yīng)用到其他方面。


為了應(yīng)對(duì)這種趨勢(shì),我們鼓勵(lì)將所有的驅(qū)動(dòng)和算法逐漸發(fā)展成為和ROS沒有依賴性單獨(dú)的庫(kù)。ROS建立的系統(tǒng)具有模塊化的特點(diǎn),各模塊中的代碼可以單獨(dú)編譯,而且編譯使用的CMake工具使它很容易的就實(shí)現(xiàn)精簡(jiǎn)的理念。ROS基本將復(fù)雜的代碼封裝在庫(kù)里,只是創(chuàng)建了一些小的應(yīng)用程序?yàn)镽OS顯示庫(kù)的功能,就允許了對(duì)簡(jiǎn)單的代碼超越原型進(jìn)行移植和重新使用。作為一種新加入的有優(yōu)勢(shì),單元測(cè)試當(dāng)代碼在庫(kù)中分散后也變得非常的容易,一個(gè)單獨(dú)的測(cè)試程序可以測(cè)試庫(kù)中很多的特點(diǎn)。


ROS利用了很多現(xiàn)在已經(jīng)存在的開源項(xiàng)目的代碼,比如說(shuō)從Player項(xiàng)目中借鑒了驅(qū)動(dòng)、運(yùn)動(dòng)控制和仿真方面的代碼,從OpenCV中借鑒了視覺算法方面的代碼,從OpenRAVE借鑒了規(guī)劃算法的內(nèi)容,還有很多其他的項(xiàng)目。在每一個(gè)實(shí)例中,ROS都用來(lái)顯示多種多樣的配置選項(xiàng)以及和各軟件之間進(jìn)行數(shù)據(jù)通信,也同時(shí)對(duì)它們進(jìn)行微小的包裝和改動(dòng)。ROS可以不斷的從社區(qū)維護(hù)中進(jìn)行升級(jí),包括從其他的軟件庫(kù)、應(yīng)用補(bǔ)丁中升級(jí)ROS的源代碼。

(4)工具包豐富

為了管理復(fù)雜的ROS軟件框架,我們利用了大量的小工具去編譯和運(yùn)行多種多樣的ROS組建,從而設(shè)計(jì)成了內(nèi)核,而不是構(gòu)建一個(gè)龐大的開發(fā)和運(yùn)行環(huán)境。

這些工具擔(dān)任了各種各樣的任務(wù),例如,組織源代碼的結(jié)構(gòu),獲取和設(shè)置配置參數(shù),形象化端對(duì)端的拓?fù)溥B接,測(cè)量頻帶使用寬度,生動(dòng)的描繪信息數(shù)據(jù),自動(dòng)生成文檔等等。盡管我們已經(jīng)測(cè)試通過像全局時(shí)鐘和控制器模塊的記錄器的核心服務(wù),但是我們還是希望能把所有的代碼模塊化。我們相信在效率上的損失遠(yuǎn)遠(yuǎn)是穩(wěn)定性和管理的復(fù)雜性上無(wú)法彌補(bǔ)的。

(5)免費(fèi)并且開源

ROS所有的源代碼都是公開發(fā)布的。我們相信這將必定促進(jìn)ROS軟件各層次的調(diào)試,不斷的改正錯(cuò)誤。雖然像Microsoft Robotics Studio和Webots這樣的非開源軟件也有很多值得贊美的屬性,但是我們認(rèn)為一個(gè)開源的平臺(tái)也是無(wú)可為替代的。當(dāng)硬件和各層次的軟件同時(shí)設(shè)計(jì)和調(diào)試的時(shí)候這一點(diǎn)是尤其真實(shí)的。

ROS以分布式的關(guān)系遵循這BSD許可,也就是說(shuō)允許各種商業(yè)和非商業(yè)的工程進(jìn)行開發(fā)。ROS通過內(nèi)部處理的通訊系統(tǒng)進(jìn)行數(shù)據(jù)的傳遞,不要求各模塊在同樣的可執(zhí)行功能上連接在一起。如此,利用ROS構(gòu)建的系統(tǒng)可以很好的使用他們豐富的組件:個(gè)別的模塊可以包含被各種協(xié)議保護(hù)的軟件,這些協(xié)議從GPL到BSD,但是許可的一些“污染物”將在模塊的分解上就完全消滅掉。






欲了解更多,推薦閱讀《ROS機(jī)器人程序設(shè)計(jì)》


無(wú)論是業(yè)余愛好者還是專業(yè)的機(jī)器人開發(fā)人員,在開始進(jìn)行機(jī)器人系統(tǒng)及程序設(shè)計(jì)時(shí),首先要面對(duì)的問題都是最基本的驅(qū)動(dòng)機(jī)器人的輪子的設(shè)計(jì)。ROS通過軟件代碼復(fù)用集成了眾多已經(jīng)開發(fā)完成的功能組件。而本書就是專門幫助讀者從對(duì)ROS一無(wú)所知到能夠通過ROS系統(tǒng)完成小型機(jī)器人系統(tǒng)的開發(fā)和編程工作的。 本書提供了各種實(shí)際的示例代碼供讀者學(xué)習(xí)和理解ROS的軟件框架。你可以在仿真環(huán)境中自行構(gòu)建機(jī)器人相應(yīng)的功能程序,并在ROS社區(qū)中分享你的學(xué)習(xí)心得和知識(shí)。

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
機(jī)器人操作系統(tǒng)——ROS
機(jī)器人操作系統(tǒng) 除了Android還有一個(gè)ROS
計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言分為四類
視頻教程 | 機(jī)器人操作系統(tǒng)入門
淺談近幾年移動(dòng)機(jī)器人的發(fā)展趨勢(shì)
放棄技術(shù)壁壘:開源是機(jī)器人更好的商業(yè)模式?
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服