17.ROS簡(jiǎn)介

ROS簡(jiǎn)介

  • 個(gè)人理解筷凤,如有紕漏請(qǐng)指出。

什么是ROS

ROS是面向機(jī)器人的開源的元操作系統(tǒng)(meta-operating system)逼裆。它能夠提供類似傳統(tǒng)操作系統(tǒng)的諸多功能睛驳,如硬件抽象、底層設(shè)備控制凭峡、常用功能實(shí)現(xiàn)、進(jìn)程間消息傳遞和程序包管理等决记。此外摧冀,它還提供相關(guān)工具和庫,用于獲取系宫、編譯按价、編輯代碼以及在多個(gè)計(jì)算機(jī)之間運(yùn)行程序完成分布式計(jì)算。

這是維基上的解釋笙瑟,讓我們結(jié)合項(xiàng)目仔細(xì)分析一下。

假設(shè)我們要制作一個(gè)無人機(jī)癞志,進(jìn)行路徑規(guī)劃算法的驗(yàn)證往枷,有一些傳感器比如GPS,陀螺儀凄杯,氣壓計(jì)作為輸入错洁,上位機(jī)通過一些運(yùn)算,計(jì)算出無人機(jī)行進(jìn)的路線戒突,然后將路線傳給飛控屯碴,飛控對(duì)電機(jī)進(jìn)行控制,最終實(shí)現(xiàn)無人機(jī)的路線規(guī)劃膊存。

如果整個(gè)框架都要自己來寫导而,那我們需要了解各個(gè)傳感器的通信方式忱叭,電機(jī)的控制,還需要將這些與頂層算法進(jìn)行交互今艺,這需要懂得東西就很多了韵丑,現(xiàn)在有了飛控,對(duì)底層的傳感器已經(jīng)做了一層抽象珠叔,將同一時(shí)刻的各個(gè)傳感器的數(shù)據(jù)組成一個(gè)數(shù)據(jù)包以MAVLink協(xié)議的形式向上層傳輸古毛。處理計(jì)算機(jī)需要做的就是讀出這個(gè)以MAVLink協(xié)議的數(shù)據(jù)包艺演,作為輸入,進(jìn)行一系列計(jì)算陌僵,輸出目標(biāo)點(diǎn)的經(jīng)度、緯度创坞、高度等信息碗短,并交由飛控對(duì)飛機(jī)進(jìn)行調(diào)整,飛往目標(biāo)點(diǎn)摆霉。換句話說豪椿,我們需要一個(gè)中間件,來翻譯MAVLink協(xié)議携栋,這就有很多種選擇了搭盾,為了開發(fā)方便,我們選用了ROS作為這一個(gè)翻譯者婉支,但ROS的作用遠(yuǎn)不止翻譯的功能鸯隅。

分布式計(jì)算

  • 一些機(jī)器人搭載多臺(tái)計(jì)算機(jī),每臺(tái)計(jì)算機(jī)用于控制機(jī)器人的部分驅(qū)動(dòng)器或傳感器
  • 即使只有一臺(tái)計(jì)算機(jī)向挖,通常仍將程序劃分為獨(dú)立運(yùn)行且相互協(xié)作的小的模塊來完成復(fù)雜的控制任務(wù)蝌以,這也是常見的做法
  • 當(dāng)多個(gè)機(jī)器人需要協(xié)同完成一個(gè)任務(wù)時(shí),往往需要互相通信來支撐任務(wù)的完成
  • 用戶通常通過臺(tái)式機(jī)何之、筆記本或者移動(dòng)設(shè)備發(fā)送指令控制機(jī)器人跟畅,這種人機(jī)交互接口可以認(rèn)為是機(jī)器人軟件的一部分

ROS1只是相對(duì)的分布式計(jì)算,對(duì)節(jié)點(diǎn)來說是分布式的溶推,但Master層面上并不是分布式徊件,還是需要主從節(jié)點(diǎn)的方式,ROS2在這個(gè)基礎(chǔ)上進(jìn)行了底層通信方式的改進(jìn)蒜危,使用DDS(Data Distribution Service)數(shù)據(jù)分發(fā)服務(wù)進(jìn)行真正意義上的分布式計(jì)算虱痕。

軟件復(fù)用

ROS標(biāo)準(zhǔn)包(Standard Packages)提供穩(wěn)定、可調(diào)式的各類重要機(jī)器人算法實(shí)現(xiàn)辐赞。

ROS通信接口正在成為機(jī)器人軟件互操作的事實(shí)標(biāo)準(zhǔn)部翘,也就是說絕大部分最新的硬件驅(qū)動(dòng)和最前沿的算法實(shí)現(xiàn)都可以在ROS中找到。例如响委,在ROS的官方網(wǎng)頁上有著大量的開源軟件庫新思,這些軟件使用ROS通用接口窖梁,從而避免為了集成它們而重新開發(fā)新的接口程序。

快速測(cè)試

精心設(shè)計(jì)的ROS系統(tǒng)框架將底層硬件控制模塊和頂層數(shù)據(jù)處理與決策模塊分離表牢,從而可以使用模擬器替代底層硬件模塊窄绒,獨(dú)立測(cè)試頂層部分,提高測(cè)試效率崔兴。

ROS另外提供了一種簡(jiǎn)單的方法可以在調(diào)試過程中記錄傳感器數(shù)據(jù)及其他類型的消息數(shù)據(jù)彰导,并在試驗(yàn)后按時(shí)間戳回放。通過這種方式敲茄,每次運(yùn)行機(jī)器人可以獲得更多的測(cè)試機(jī)會(huì)位谋。例如,可以記錄傳感器的數(shù)據(jù)堰燎,并通過多次回放測(cè)試不同的數(shù)據(jù)處理算法掏父。在ROS術(shù)語中,這類記錄的數(shù)據(jù)叫作包(bag)秆剪,一個(gè)被稱為rosbag的工具可以用于記錄和回放包數(shù)據(jù)

軟件結(jié)構(gòu)

我們可以通過ROS的分布式計(jì)算來一窺其軟件結(jié)構(gòu)和設(shè)計(jì)思想赊淑。

節(jié)點(diǎn)

ROS用節(jié)點(diǎn)(Node)的概念表示一個(gè)應(yīng)用程序,不同node之間通過事先定義好格式的話題(Topic)仅讽,服務(wù)(Service)陶缺,動(dòng)作(Action)來實(shí)現(xiàn)連接。

話題

消息傳遞的理念是:當(dāng)一個(gè)節(jié)點(diǎn)想要分享信息時(shí)洁灵,它就會(huì)發(fā)布(publish)消息到對(duì)應(yīng)的一個(gè)或者多個(gè)話題饱岸;當(dāng)一個(gè)節(jié)點(diǎn)想要接收信息時(shí),它就會(huì)訂閱(subscribe)它所需要的一個(gè)或者多個(gè)話題徽千。ROS節(jié)點(diǎn)管理器負(fù)責(zé)確保發(fā)布節(jié)點(diǎn)和訂閱節(jié)點(diǎn)能找到對(duì)方苫费;而且消息是直接地從發(fā)布節(jié)點(diǎn)傳遞到訂閱節(jié)點(diǎn),中間并不經(jīng)過節(jié)點(diǎn)管理器轉(zhuǎn)交双抽。

所有訂閱該話題的節(jié)點(diǎn)都會(huì)收到該話題上的所有消息百框,不管你是否想要接收。

詳細(xì)點(diǎn)講:”生產(chǎn)”消息的程序只管發(fā)布消息牍汹,而不用關(guān)心該消息是如何被消費(fèi)的琅翻; 消費(fèi)消息的程序只管訂閱該話題或者他所需要消息的所有話題,而不用關(guān)心這些消息數(shù)據(jù)是如何生產(chǎn)的柑贞。

這個(gè)特性十分重要,這就意味著我們?cè)谶@種通信機(jī)制中是一對(duì)多或者多對(duì)一的機(jī)制聂抢,而在下一種通信機(jī)制中將是一對(duì)一的機(jī)制钧嘶!

服務(wù)

服務(wù)調(diào)用是雙向的,一個(gè)節(jié)點(diǎn)給另一個(gè)節(jié)點(diǎn)發(fā)送信息并等待響應(yīng)琳疏,因此信息流是雙向的有决。作為對(duì)比闸拿,當(dāng)消息發(fā)布后,并沒有響應(yīng)的概念书幕,甚至不能保證系統(tǒng)內(nèi)有節(jié)點(diǎn)訂閱了這些消息新荤。

服務(wù)調(diào)用實(shí)現(xiàn)的是一對(duì)一通信。每一個(gè)服務(wù)由一個(gè)節(jié)點(diǎn)發(fā)起台汇,對(duì)這個(gè)服務(wù)的響應(yīng)返回同一個(gè)節(jié)點(diǎn)苛骨。另一方面,每一個(gè)消息都和一個(gè)話題相關(guān)苟呐,這個(gè)話題可能有很多的發(fā)布者和訂閱者痒芝。

最后,總結(jié)一下

ROS的優(yōu)點(diǎn)

首先是開源牵素,帶來的是完善的社區(qū)严衬,遇到的大部分問題基本都能搜到,也帶來了更多的擴(kuò)展笆呆,MATLAB2015以后版本內(nèi)建了ROS的支持请琳,模塊化使得其可以隨意增刪功能,使用了語言無關(guān)的消息類型赠幕,使其可以支持多種編程語言俄精,C++,Python,JAVA等都支持,可以很方便的進(jìn)行數(shù)據(jù)的繪制,也是PX飛控推薦使用的交互方式之一劣坊。

ROS的不足

  • 多個(gè)機(jī)器人組成的集群嘀倒; ROS的單master結(jié)構(gòu)就蛋疼了。
  • 小型嵌入式平臺(tái)局冰,甚至“裸奔”的微控制器测蘑;依賴于Ubuntu的ROS太重了。
  • 實(shí)時(shí)系統(tǒng):包括進(jìn)程間和跨機(jī)器通信康二,ROS做不到碳胳。
  • 非理想的網(wǎng)絡(luò);ROS延遲很大沫勿,甚至斷網(wǎng)再連接時(shí)會(huì)掛挨约。
  • 生產(chǎn)制造等環(huán)境:ROS可靠性還不夠。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末产雹,一起剝皮案震驚了整個(gè)濱河市诫惭,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌蔓挖,老刑警劉巖夕土,帶你破解...
    沈念sama閱讀 206,602評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡怨绣,警方通過查閱死者的電腦和手機(jī)角溃,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,442評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來篮撑,“玉大人减细,你說我怎么就攤上這事∮浚” “怎么了未蝌?”我有些...
    開封第一講書人閱讀 152,878評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)质欲。 經(jīng)常有香客問我树埠,道長(zhǎng),這世上最難降的妖魔是什么嘶伟? 我笑而不...
    開封第一講書人閱讀 55,306評(píng)論 1 279
  • 正文 為了忘掉前任怎憋,我火速辦了婚禮,結(jié)果婚禮上九昧,老公的妹妹穿的比我還像新娘绊袋。我一直安慰自己,他們只是感情好铸鹰,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,330評(píng)論 5 373
  • 文/花漫 我一把揭開白布癌别。 她就那樣靜靜地躺著,像睡著了一般蹋笼。 火紅的嫁衣襯著肌膚如雪展姐。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,071評(píng)論 1 285
  • 那天剖毯,我揣著相機(jī)與錄音圾笨,去河邊找鬼。 笑死逊谋,一個(gè)胖子當(dāng)著我的面吹牛擂达,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播胶滋,決...
    沈念sama閱讀 38,382評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼板鬓,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了究恤?” 一聲冷哼從身側(cè)響起俭令,我...
    開封第一講書人閱讀 37,006評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎部宿,沒想到半個(gè)月后抄腔,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,512評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,965評(píng)論 2 325
  • 正文 我和宋清朗相戀三年妓柜,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片涯穷。...
    茶點(diǎn)故事閱讀 38,094評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡棍掐,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出拷况,到底是詐尸還是另有隱情作煌,我是刑警寧澤,帶...
    沈念sama閱讀 33,732評(píng)論 4 323
  • 正文 年R本政府宣布赚瘦,位于F島的核電站粟誓,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏起意。R本人自食惡果不足惜鹰服,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,283評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望揽咕。 院中可真熱鬧悲酷,春花似錦、人聲如沸亲善。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,286評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蛹头。三九已至顿肺,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間渣蜗,已是汗流浹背屠尊。 一陣腳步聲響...
    開封第一講書人閱讀 31,512評(píng)論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留袍睡,地道東北人知染。 一個(gè)月前我還...
    沈念sama閱讀 45,536評(píng)論 2 354
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像斑胜,于是被迫代替她去往敵國和親控淡。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,828評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容