ROS全稱Robot Operating System,直接翻譯就是機(jī)器人操作系統(tǒng)。雖然名字里含有“操作系統(tǒng)”的字眼,但ROS與Windows和Linux等操作系統(tǒng)不一樣,它實(shí)際上是一套軟件庫(kù)和工具,可以幫助用戶快速建立機(jī)器人應(yīng)用程序。在軟件層面上,ROS是一種中間件。什么是中間件?中間是相對(duì)的,有“上”和有“下”的時(shí)候就有“中間”。這感覺(jué)就像是“中產(chǎn)階級(jí)”,沒(méi)有嚴(yán)格界限。所以在有上層軟件和底層軟件的語(yǔ)境下,這中間的軟件就是“中間件”。ROS就是介于底層操作系統(tǒng)(如Linux)和上層業(yè)務(wù)應(yīng)用軟件(如OpenCV)之間的中間件。
那么ROS能出現(xiàn)在焉知智能汽車的公眾號(hào)里,它跟智能汽車又有什么關(guān)系呢? 實(shí)際上智能汽車就是一種機(jī)器人。舉個(gè)例子,您有沒(méi)有覺(jué)得家里的掃地機(jī)器人和智能駕駛汽車非常像?近年來(lái),智能駕駛無(wú)疑是汽車工業(yè)的當(dāng)紅炸子雞,而汽車的智能駕駛化實(shí)質(zhì)上也是汽車的機(jī)器人化。我們常說(shuō)的“感知”、“決策”和“規(guī)控”等,其實(shí)也是來(lái)自于機(jī)器人領(lǐng)域。智能網(wǎng)聯(lián)汽車的功能域控制器劃分,電子電氣架構(gòu)的演變都能或多或少看到機(jī)器人的影子。甚至有些公司就是借用機(jī)器人傳統(tǒng)術(shù)語(yǔ)來(lái)作為傳統(tǒng)車企智能化改革的口號(hào)和產(chǎn)品藍(lán)圖。
機(jī)器人是多專業(yè)知識(shí)交叉的學(xué)科,通常涉及傳感器、驅(qū)動(dòng)程序、多機(jī)通信、機(jī)械結(jié)構(gòu)、算法等,為了更高效地進(jìn)行機(jī)器人的研究和開(kāi)發(fā),選擇一個(gè)通用的開(kāi)發(fā)框架非常必要。而ROS就是最流行的框架之一。當(dāng)機(jī)器人和智能駕駛汽車一相逢,ROS順理成章的成了很多團(tuán)隊(duì)開(kāi)發(fā)智能駕駛的選擇,很多智能駕駛的算法應(yīng)用都是基于ROS來(lái)開(kāi)發(fā)的。中國(guó)智能駕駛界大名鼎鼎的“Apollo”就是基于ROS二次開(kāi)發(fā)改進(jìn)的。而從另一個(gè)角度來(lái)看,近年來(lái)ROS也成為了智能網(wǎng)聯(lián)工程師崗位招聘要求的高頻詞。熟練掌握ROS的汽車工程師毫無(wú)疑問(wèn)是人才市場(chǎng)上的“香餑餑”。
02 ROS歷史簡(jiǎn)介
首先提一下,ROS有ROS1和ROS2兩個(gè)大分支。沒(méi)有特別說(shuō)明時(shí),一般ROS都指ROS1。簡(jiǎn)單來(lái)說(shuō)ROS由來(lái)已久,進(jìn)化過(guò)程中發(fā)現(xiàn)已有架構(gòu)必須革新才能滿足更多需求,于是就開(kāi)辟了ROS2,并把之前的版本統(tǒng)稱ROS1。
展開(kāi)來(lái)看,ROS系統(tǒng)最早起源于2007年斯坦福大學(xué)人工智能實(shí)驗(yàn)室的STAIR項(xiàng)目與機(jī)器人技術(shù)公司W(wǎng)illow Garage的個(gè)人機(jī)器人項(xiàng)目(Personal Robotics Program)之間的合作,2008年之后由Willow Garage公司推動(dòng)其發(fā)展。幾番測(cè)試后于2010年推出了正式發(fā)行版本:ROS Box Turtle。比較有趣的是,ROS各版本均以龜作為發(fā)行代號(hào),至今已設(shè)計(jì)出十多種造型奇特的“ROS龜”。而每一次ROS發(fā)布新版都會(huì)按照字母順序改一個(gè)名字。例如ROS Box Turtle后是ROS C Turtle,再是Diamondback……2020年5月發(fā)布的ROS Noetic Ninjemys則到了字母“N”,也是ROS1的最后一個(gè)版本。
圖2:4個(gè)ROS版本及其ROS龜海報(bào)
從2008年至2013年,ROS主要由Willow Garage公司管理維護(hù),但這并不意味著ROS是封閉的系統(tǒng)。相反,ROS由眾多學(xué)校及科研機(jī)構(gòu)聯(lián)合開(kāi)發(fā)及維護(hù)的,這種聯(lián)合開(kāi)發(fā)模式也為ROS系統(tǒng)生態(tài)的構(gòu)建與壯大帶來(lái)有力的促進(jìn)。2013年,Willow Garage公司被Suitable Technologies公司收購(gòu),此前幾個(gè)月,ROS的開(kāi)發(fā)和維護(hù)管理工作被移交給了新成立的開(kāi)源基金會(huì)Open Source Robotics Foundation。而隨著ROS的優(yōu)化和豐富,對(duì)ROS的要求也越來(lái)越多,一些原始架構(gòu)和設(shè)計(jì)已經(jīng)不能夠滿足,于是催生了ROS2。經(jīng)歷幾個(gè)測(cè)試版后,2017年ROS2正式發(fā)布了Ardent Apalone版本,之后每版升級(jí)同樣是迭代一個(gè)字母和ROS龜海報(bào)。最新一版ROS2是今年5月份剛發(fā)布的Humble Hawksbill。
03 為什么智能汽車選擇ROS
上文提到,智能駕駛汽車就是一種機(jī)器人。但是當(dāng)智能汽車選擇開(kāi)發(fā)框架的時(shí)候,為什么會(huì)這么多人選擇ROS呢?肯定不是因?yàn)樗拿掷镉小癛obot”這么簡(jiǎn)單。而結(jié)合上文提到的ROS1和ROS2時(shí)間線,這個(gè)關(guān)于智能駕駛的選擇肯定在ROS1上開(kāi)始的。究其原因,有這3個(gè)重要因素:
1.已有的開(kāi)源代碼豐富。
許多智能駕駛需要用到的算法,都能在ROS生態(tài)中找到已經(jīng)成熟的代碼。例如建立地圖的算法,使用激光雷達(dá)或GPS定位算法,沿著地圖規(guī)劃路徑算法,避開(kāi)障礙物的算法,攝像頭視覺(jué)處理算法等等。..。..這些輪式機(jī)器人導(dǎo)航所需的算法在ROS上是現(xiàn)成的,幾乎都可以直接適用于智能駕駛汽車。
2.具備配套的可視化工具。
ROS自帶一套圖形工具,可以方便地記錄和可視化傳感器捕獲的數(shù)據(jù),并以全面的方式表示車輛的狀態(tài)。此外,它還提供了一種簡(jiǎn)單的方法來(lái)實(shí)現(xiàn)定制化的可視化需求。這在開(kāi)發(fā)控制軟件和調(diào)試代碼時(shí)非常有用。如果您曾經(jīng)在電腦前看過(guò)智能駕駛汽車傳感器的原始數(shù)據(jù),做過(guò)調(diào)試,相信您會(huì)深刻理解一個(gè)靠譜的數(shù)據(jù)可視化工具是有多么重要。
圖3:利用ROS RVIZ三維可視化點(diǎn)云數(shù)據(jù)
3.簡(jiǎn)單好上手。
在開(kāi)展一個(gè)新領(lǐng)域的時(shí)候,沒(méi)有什么比把東西先做出來(lái)更重要了。基于ROS來(lái)開(kāi)發(fā)一個(gè)智能駕駛汽車項(xiàng)目是比較簡(jiǎn)單的。例如從一個(gè)簡(jiǎn)單的輪式機(jī)器人開(kāi)始,配備一對(duì)輪子、一個(gè)攝像頭、一個(gè)激光掃描儀和ROS導(dǎo)航軟件棧,開(kāi)發(fā)者可以在幾個(gè)小時(shí)內(nèi)就可以完成設(shè)置,讓小車自主行進(jìn)避障。這種快速上手也可以幫助新手快速理解整個(gè)運(yùn)作基礎(chǔ)和框架,然后再轉(zhuǎn)向更專業(yè)更深入的研究。某寶上就有很多基于ROS的智能小車,很多機(jī)構(gòu)也是基于這些套件開(kāi)展智能駕駛培訓(xùn)的。
04 ROS1在汽車應(yīng)用上的弱點(diǎn)
當(dāng)然,ROS并不是完美的,尤其是ROS1應(yīng)用在智能汽車上存在不少局限性。早年間ROS1應(yīng)用于智能駕駛研發(fā)時(shí),正是由于這些局限性,各大公司都需要在ROS上進(jìn)行二次開(kāi)發(fā),以滿足智能汽車要求。那ROS1究竟有哪些弱點(diǎn)呢?
1.單點(diǎn)失效。
如下圖所示,ROS1的通訊機(jī)制是存在主從結(jié)構(gòu)的。也就是節(jié)點(diǎn)之間的通訊都依賴于一個(gè)Master。在這種集中式通訊方式下,如果Master失效了,那么系統(tǒng)就會(huì)崩潰。這在汽車行業(yè)功能安全的要求下,無(wú)疑是太脆弱了。
圖4:ROS1通訊機(jī)制示意圖
2.實(shí)時(shí)性差。
ROS1就是基于Linux操作系統(tǒng)之上的。Linux原生不是實(shí)時(shí)操作系統(tǒng),ROS1自然也沒(méi)有實(shí)時(shí)性的設(shè)計(jì)考慮。ROS1設(shè)計(jì)之初更多地從實(shí)現(xiàn)最高性能的角度出發(fā),在任務(wù)調(diào)度和線程切換等機(jī)制設(shè)計(jì)上并沒(méi)有保證實(shí)時(shí)性所要求的“確定時(shí)間”。例如汽車動(dòng)力底盤域常見(jiàn)的輪速信號(hào)就很容易在原生ROS1中失真。
3.缺乏網(wǎng)絡(luò)安全機(jī)制。
ROS1并沒(méi)有實(shí)現(xiàn)任何安全機(jī)制來(lái)防止第三方進(jìn)入ROS1網(wǎng)絡(luò)并讀取節(jié)點(diǎn)之間的通信。這意味著任何能夠進(jìn)入汽車網(wǎng)絡(luò)的人都可以進(jìn)入ROS1的信息傳遞并劫持汽車。這在汽車網(wǎng)絡(luò)安全法規(guī)日益嚴(yán)格的背景下,也無(wú)疑是力不從心的。
05 ROS1與ROS2
早年間,各大公司都針對(duì)ROS1弱點(diǎn)做了很多優(yōu)化,以讓其適用于汽車。而這些研究和改進(jìn)當(dāng)然也反饋到ROS組織本身,所以也就有了上文提到的ROS2。那么ROS1和ROS2有什么差別呢?ROS2對(duì)這些弱點(diǎn)有改進(jìn)嗎?話不多說(shuō),我們先來(lái)看看兩者的系統(tǒng)架構(gòu)框圖對(duì)比。
圖5:ROS1和ROS2的系統(tǒng)架構(gòu)框圖對(duì)比
由下往上看,在操作系統(tǒng)層,ROS2比ROS1支持的底層操作系統(tǒng)更多,也支持實(shí)時(shí)操作系統(tǒng)(RTOS)了。這就讓ROS2可以支持更多樣化的嵌入式硬件,例如汽車應(yīng)用中一些輕量化的ECU。
在中間層,ROS1更多地依賴TCP和UDP協(xié)議,而在ROS2中則引入了DDS。DDS全稱是Data Distribution Service 數(shù)據(jù)分發(fā)服務(wù),是一種分布式實(shí)時(shí)通信中間件協(xié)議,也是一個(gè)被很多公司實(shí)現(xiàn)的工業(yè)標(biāo)準(zhǔn)。DDS采用發(fā)布/訂閱體系架構(gòu),強(qiáng)調(diào)以數(shù)據(jù)為中心,提供豐富的服務(wù)質(zhì)量(QoS)策略,以保障數(shù)據(jù)進(jìn)行實(shí)時(shí)、高效、靈活地分發(fā)。
正是基于DDS的通訊機(jī)制,ROS的應(yīng)用層就不再需要Master節(jié)點(diǎn)。節(jié)點(diǎn)之間采用自發(fā)現(xiàn)機(jī)制,找到彼此,進(jìn)而建立穩(wěn)定的通信連接。這對(duì)于滿足功能安全需求,有很大幫助。當(dāng)然,ROS1和ROS2的應(yīng)用層軟件接口是匹配的,讓ROS1上開(kāi)發(fā)的應(yīng)用軟件能快速?gòu)?fù)用部署到ROS2上,也是ROS2的設(shè)計(jì)目標(biāo)。
由此可見(jiàn),上文提到的ROS1在汽車應(yīng)用上的弱點(diǎn),在ROS2上都得到了針對(duì)性甚至是根本性的改善。
06 ROS與AUTOSAR Adaptive
在汽車領(lǐng)域談軟件,自然是離不開(kāi)AUTOSAR的。這些年汽車硬件和軟件的發(fā)展本身也是日新月異。AUTOSAR也是在這背景下不斷優(yōu)化和自我革新,AUTOSAR Adaptive就是針對(duì)多核動(dòng)態(tài)操作系統(tǒng)的高資源環(huán)境在奮起直追,希望站穩(wěn)汽車軟件架構(gòu)老大的地位。ROS2和AUTOSAR Adaptive都是中間件,那它們?cè)诓粩嗌?jí)進(jìn)化的過(guò)程中,有沒(méi)有朝著某個(gè)共同的方向,進(jìn)而出現(xiàn)交匯點(diǎn)?答案是有的。最明顯的就是DDS的通訊機(jī)制。
圖6:DDS在AUTOSAR Adaptive通訊中的位置
如上圖所示,AUTOSAR Adaptive中的通訊管理模塊就加入了DDS的部分,并對(duì)DDS相應(yīng)的功能安全和網(wǎng)絡(luò)安全都作了定義和描述。通過(guò)ara::com可以統(tǒng)一CAN PDU、SOME/IP和DDS的通訊。而DDS就是ROS2中最核心的部分。所以聚焦于這個(gè)匯合點(diǎn),可以結(jié)合ROS2和AUTOSAR,取兩者之所長(zhǎng)。
事實(shí)上這個(gè)關(guān)鍵點(diǎn)已經(jīng)被很多公司企業(yè)抓住,并開(kāi)發(fā)出了不少商用的產(chǎn)品。例如下圖就是Apex.AI公司的產(chǎn)品示意圖。Apex.AI將Apex.OS節(jié)點(diǎn)(匹配ROS節(jié)點(diǎn))與AUTOSAR Adaptive和AUTOSAR Classic平臺(tái)連接起來(lái)。AUTOSAR arxml(包含數(shù)據(jù)類型和接口的描述)可以直接作為配置輸入。這使得設(shè)置可以靈活應(yīng)對(duì)服務(wù)定義的變化。ROS Topic的數(shù)據(jù)最終可以在AUTOSAR ara::com或RTE中使用。
圖7:Apex.AI公司統(tǒng)一ROS和AUTOSAR的產(chǎn)品示意圖(來(lái)源:Apex.AI)
07 寫在最后
智能汽車的發(fā)展是個(gè)復(fù)雜而又漫長(zhǎng)的過(guò)程,期間需要不斷的技術(shù)迭代和功能創(chuàng)新。對(duì)于個(gè)體開(kāi)發(fā)人員來(lái)說(shuō),站在巨人的肩膀上來(lái)迎接這過(guò)程中的挑戰(zhàn)十分重要。ROS(尤其ROS2)就是其中一個(gè)巨人肩膀。希望本文能為之前沒(méi)接觸ROS的同仁提供一個(gè)初步印象,有所幫助。
審核編輯:郭婷
-
機(jī)器人
+關(guān)注
關(guān)注
211文章
28646瀏覽量
208439 -
操作系統(tǒng)
+關(guān)注
關(guān)注
37文章
6896瀏覽量
123757 -
智能汽車
+關(guān)注
關(guān)注
30文章
2893瀏覽量
107571
原文標(biāo)題:簡(jiǎn)介汽車上的機(jī)器人操作系統(tǒng)(ROS)
文章出處:【微信號(hào):智能汽車電子與軟件,微信公眾號(hào):智能汽車電子與軟件】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論