一、為什么要推出ROS2?
2010年,ROS1首次發(fā)布正式版本,其研發(fā)的初衷是為設(shè)計PR2(個人服務(wù)型機器人)共用的軟件架構(gòu)。但隨著ROS1技術(shù)的普及,ROS1開始廣泛融入各領(lǐng)域無人系統(tǒng)的研發(fā),陸續(xù)暴露了系統(tǒng)的諸多問題。為了適應(yīng)新時代機器人研發(fā)的需要,2022年5月,ROS開發(fā)者團隊推出新版本ROS2。
(一)ROS1的誕生
2007年,斯坦福大學(xué)學(xué)生為開發(fā)PR2(個人服務(wù)型機器人)共用的軟件架構(gòu),設(shè)計ROS的原型。2010年,Willow Garage公司推出ROS1的首個發(fā)行版。
(二)ROS1存在的問題
ROS1最早的設(shè)計目標:針對家庭服務(wù)機器人PR2,設(shè)計一款共用開發(fā)的軟件架構(gòu)。
(1)PR2特點
- 體積大,算力充足:它搭載了工作站級別的計算平臺和各種先進的通信設(shè)備,不用擔憂算力不夠,有足夠的實力支持各種復(fù)雜的實時運算和處理;
- 通訊可靠:由于是單兵作戰(zhàn),通信絕大部分都自己內(nèi)部完成,那就可以用有線連接,保證了良好的網(wǎng)絡(luò)連接,沒有丟數(shù)據(jù)或者黑客入侵的風(fēng)險;
-
實驗室產(chǎn)品,沒有工程應(yīng)用:這臺機器人最終雖然小批量生產(chǎn),但是由于高昂的成本和售價,也只能用于學(xué)術(shù)研究。
(2)ROS1存在問題
隨著ROS1技術(shù)的普及,ROS1融入各領(lǐng)域無人系統(tǒng)的研發(fā)。原本僅針對PR2設(shè)計的軟件架構(gòu),就出現(xiàn)諸多問題:
- 資源需求大:需要在資源有限的嵌入式系統(tǒng)中運行;
- 系統(tǒng)抗干擾差:要在有干擾的地方保證通信的可靠性;
- 產(chǎn)品應(yīng)用差:要做成產(chǎn)品走向市場,甚至用在自動駕駛汽車和航天機器人上。
(三)ROS2設(shè)計思路
(1)ROS2針對場景
- 多機器人系統(tǒng):ROS2為多機器人系統(tǒng)的應(yīng)用提供了標準方法和通信機制。
- 跨平臺:機器人應(yīng)用場景不同,使用的控制平臺也會有很大差異,為了讓所有機器人都可以運行ROS2,ROS2可以跨平臺運行于Linux、Windows、MacOS、RTOS,甚至是沒有任何系統(tǒng)的微控制器(MCU)上。
- 實時性:機器人運動控制和很多行為策略要求機器人具備實時性,比如機器人要可靠得在100ms內(nèi)發(fā)現(xiàn)前方的行人,或者穩(wěn)定的在1ms周期內(nèi)完成運動學(xué)、動力學(xué)的解算,ROS2為類似這樣的實時性需求提供了基本保障。
- 網(wǎng)絡(luò)連接:無論在怎樣的網(wǎng)絡(luò)環(huán)境下,ROS2都可以盡量保障機器人大量數(shù)據(jù)的完整性和安全性,比如在wifi信號不好的時候數(shù)據(jù)也要盡力發(fā)送過去,在有黑客入侵風(fēng)險的場景下要對數(shù)據(jù)進行加密解密。
- 產(chǎn)品化:大量機器人已經(jīng)走向我們的生活,未來還會越來越多,ROS2不僅可以用于機器人研發(fā)階段,還可以直接搭載在產(chǎn)品中,走向消費市場,這對ROS2的穩(wěn)定性、強壯性也提除了巨大挑戰(zhàn)。
- 項目管理:機器人開發(fā)是一個復(fù)雜的系統(tǒng)工程,設(shè)計、開發(fā)、調(diào)試、測試、部署等全流程的項目管理工具和機制,也會在ROS2中體現(xiàn),更方便我們?nèi)ラ_發(fā)一款機器人。
(2)設(shè)計思路
ROS開發(fā)團隊從長遠角度考慮,選擇推翻ROS1的軟件架構(gòu),設(shè)計全新的ROS2操作系統(tǒng)。對系統(tǒng)架構(gòu)、軟件代碼、系統(tǒng)編譯均做出全面升級。
- 系統(tǒng)架構(gòu):借助DDS通信架構(gòu),實現(xiàn)系統(tǒng)分布式
- 軟件接口:ROS2結(jié)合C++和Python3的最新標準,重新設(shè)計API接口
-
系統(tǒng)編譯:對大工程和python工程,更加友好。
二、ROS2系統(tǒng)特性
(一)系統(tǒng)架構(gòu)
- 進程管理:在ROS1中,需要開啟中央節(jié)點管理器Master,統(tǒng)一管理所有節(jié)點。如果Master節(jié)點出現(xiàn)故障,將嚴重影響ROS系統(tǒng)功能。在ROS2中,系統(tǒng)引入節(jié)點自發(fā)現(xiàn)機制,可有效提高系統(tǒng)魯棒性。
- 進程內(nèi)通信:進程內(nèi)部進行通信,ROS1和ROS2均采用共享內(nèi)存的方式。
- 進程間通信:在ROS1中,進程間進行通信主要依賴于底層的TCP\UDP協(xié)議,但是在ROS2中,引入復(fù)雜的DDS系統(tǒng)。
(二)通信架構(gòu)
ROS1是基于TCP/UDP通信系統(tǒng),具有高延遲、丟數(shù)據(jù)、無法加密等特點。而ROS2在通信層面使用DDS通信協(xié)議。
DDS是物聯(lián)網(wǎng)中一種通信協(xié)議,具有多個版本,DDS是一個國際標準,能夠?qū)崿F(xiàn)該標準的軟件系統(tǒng)并不是唯一的。多個廠家可以提供的DDS系統(tǒng),比如OpenSplice、FastRTPS等,每一家的性能不同,適用的場景也不同。
每一個廠家的軟件接口是不同的,為了解決這個問題,ROS2設(shè)計了一個ROS Middleware,簡稱RMW,也就是指定一個標準的接口。比如如何發(fā)數(shù)據(jù),如何收數(shù)據(jù),數(shù)據(jù)的各種屬性如何配置,都定義好了,如果廠家想要接入ROS社區(qū),就得按照這個標準寫一個適配的接口,把自家的DDS給移植過來,這樣就把問題交給了最熟悉自家DDS的廠商。對于我們這些用戶來講,某一個DDS用的不爽,只要安裝另一個,然后做一個簡單的配置,程序一行的都不用改,輕松更換底層的通信系統(tǒng)。
對于開發(fā)者,在產(chǎn)品研發(fā)階段,可以使用開源的DDS滿足產(chǎn)品基本需求,在部署交付階段,可以更換到更加穩(wěn)定的DDS版本,以減小開發(fā)成本。
(三)核心概念
為了ROS開發(fā)者開發(fā)的延續(xù)性,ROS2保留了ROS1的基本概念。文章來源:http://www.zghlxwxcb.cn/news/detail-490985.html
ROS2系統(tǒng)學(xué)習(xí),可參考:古月居ROS2入門21講文章來源地址http://www.zghlxwxcb.cn/news/detail-490985.html
到了這里,關(guān)于【ROS2】為什么要使用ROS2?《ROS2系統(tǒng)特性介紹》的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!