那曲檬骨新材料有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

ROS/ROS 2 介紹

jf_78858299 ? 來源:汽車電子與軟件 ? 作者:王陽明 ? 2023-05-19 17:45 ? 次閱讀

ROS機器人操作系統(Robot Operating System)的英文縮寫。ROS是用于編寫機器人軟件程序的一種具有高度靈活性的軟件架構。ROS的原型源自斯坦福大學的STanford Artificial Intelligence Robot (STAIR) 和 Personal Robotics (PR)項目。

機器人的工業界和學術界在軟件工具的使用上是有明顯的分歧的。由于機器人的工業界并不像消費類電子這樣出貨量巨大,所以絕對高的技術壁壘和封閉的生態是十分常見的。為了提高自己的技術壁壘,這些公司往往會自己設計一整套封閉的軟硬件,以達到讓其他人(競爭對手或開發者)無法用自己的工具替換之的目的。而學術界,學生和老師們為了減少重復造輪子的工作,往往會擁抱開源社區,選擇現有的工具進行開發和研究,最廣為人知的便是ROS(Robot Operating System)。

ROS是什么

ROS/ROS 2并不是一個軟件,而是一系列軟件的集合。一般我們稱之為軟件解決方案堆棧。包含如硬件驅動程序、網絡模塊、通信架構和機器人算法實現等等。ROS將所有這些功能包放在一個保護傘下,因此開發人員無需重新造輪子。

ROS并不是一個操作系統,而一般稱之為元操作系統,即基于操作系統以上的類操作系統。

ROS并不是一個中間件,因為它實現了包括感知、導航、控制、運動規劃和仿真等多種功能。

圖片

ROS

ROS1.0版本發布于2010年,基于PR2機器人開發了一系列機器人相關的基礎軟件包。隨后ROS版本迭代頻繁,ROS的版本一般會隨著Ubuntu系統長期支持(LTS)版本而更新,其中ROS目前最新的版本都已經適配到Ubuntu 20.04 LTS。ROS僅在Ubuntu上進行CI測試,但是社區成員積極支持其他Linux版本、Mac OS X、Android、Windows,使得ROS可以兼容,但僅提供有限制性的功能支持。

ROS的歷史版本

ROS版本 發布時間 Ubuntu版本
ROS Noetic Ninjemys May 23rd, 2020 Ubuntu 20.04(Focal)
ROS Melodic Morenia May 23rd, 2018 Ubuntu 18.04(Bionic)
ROS Lunar Loggerhead May 23rd, 2017 Ubuntu 17.04(Zesty)
ROS Kinetic Kame May 23rd, 2016 Ubuntu 16.04(Xenial)
ROS Jade Turtle May 23rd, 2015 Ubuntu 15.04 (Vivid)
ROS Indigo Igloo July 22nd, 2014 Ubuntu 14.04 (Trusty)
ROS Hydro Medusa September 4th, 2013 Ubuntu 12.04 (Precise)
ROS Groovy Galapagos December 31, 2012 Ubuntu 12.04(Precise)
ROS Fuerte Turtle April 23, 2012 Ubuntu 10.04(Lucid)
ROS Electric Emys August 30, 2011 Ubuntu 10.04(Lucid)
ROS Diamondback March 2, 2011 Ubuntu 10.04(Lucid)
ROS C Turtle August 2, 2010 Ubuntu 9.04(Lucid)
ROS Box Turtle March 2, 2010 Ubuntu 8.04(Hardy)

ROS的優缺點對比

ROS為我們開發機器人帶來了許多方便,然而它也確實存在一些問題:

優點 缺點
松散耦合的機制提供框架 通信實時性能有限
豐富的機器人功能庫 系統穩定性尚不滿足工業級要求
龐大的用戶群體 安全性上沒有防護措施
免費開源 僅支持Linux(Ubuntu)
便利的數據記錄、分析、仿真工具 核心機制的性能沒有優化占用資源

ROS的成熟案例

ROS已經走過十個年頭,伴隨著機器人技術的大發展,ROS也得到了極大的推廣和應用。盡管ROS還存在不少局限性,但無法掩蓋ROS的鋒芒,社區內的功能包還是呈指數級逐年上漲,為機器人開發帶來了巨大的便利。不少開發者和研究機構還針對ROS的局限性進行了改良,但這些局部功能的改善往往很難帶來整體性能的提升,在行業內也積累了大量成熟的應用:

機械控制器中領軍企業KEBA,他們的控制器已經支持ROS :

圖片

美國NASA基于ROS開發的Robonaut 2:

百度apollo無人車的底層是基于ROS開發的:

圖片

總體來說,ROS更適合科研和開源用戶使用,如果在工業場景應用(例如無人駕駛)還需要做優化和定制,目前ROS已經停止更新,機器人開發者對新一代ROS的呼聲越來越大,ROS2.0的消息也不絕于耳。

ROS 2

ROS無法真正進入產業界,也自然無法產品化。為了解決這一問題,社區提出了ROS 2。使得ROS具備產品化的特性,包括實時性、適應于全平臺、適用于性能低的硬件(MCU+RTOS)、分布式、數據加密和現代編程語言的支持。

ROS 2的歷史版本

ROS 版本 發布時間 Ubuntu版本
Humble Hawksbill May 23rd, 2022 TBD
Galactic Geochelone May 23rd, 2021 Ubuntu 20.04(Focal)
Foxy Fitzroy June 5th, 2020 Ubuntu 20.04(Focal)
Eloquent Elusor November 22nd, 2019 Ubuntu 18.04 (Bionic)
Dashing Diademata May 31st, 2019 Ubuntu 18.04 (Bionic)
Crystal Clemmys December 14th, 2018 Ubuntu 16.04 (Xenial)
Bouncy Bolson July 2nd, 2018 Ubuntu 16.04 (Xenial)
Ardent Apalone December 8th, 2017 Ubuntu 16.04 ( Xenial)

實時化與分布式

為了解決消息間通訊的去中心化和實時性問題,ROS 2引入了Data Distribution Service(DDS),一種已經廣泛應用于國防、民航、工業控制等領域,成為分布式實時系統中數據發布/訂閱的標準解決方案。如下圖所示,左邊是ROS 1,右邊是ROS 2。

圖片

在ROS 1中,用戶的每個節點,無論是同一設備還是不同設備,必須已知Master節點的IP,并且全部依賴于Master節點進行通訊,一旦Master節點發生故障或該設備發生故障,則整個環境的所有節點功能盡失。無法恢復。也正因為這一點,ROS 1無法應用于正式的產品。

ROS 2引入了基于DDS的去中心化的數據通訊方式,不同節點可以通過未知IP的方式進行通訊,也進而有助于解決多機器人系統的問題。并且ROS 2也引入了 Quality of Service的機制,通過設定不同的服務質量來保障某些較差網絡環境下也可以具備良好的通訊效果。

實時性

而對于實時性,由于DDS在諸多工業和產業有諸多應用,具有良好的生態,其性能毋庸置疑。如下圖的測試結果:

測試設備為兩臺PowerEdge R330 e34s

OS: Ubuntu 18.04.2 LTS bionic

Architecture: x86_64

CPU(s): 8

Thread(s) per core: 2

Model name: Intel(R) Xeon(R) CPU E3-1230 v6 @ 3.50GHz

圖片

以Fast-RTPS為例,可以看到從延時上,在該雙設備間通訊中可以穩定在100μs以下,而吞吐量的帶寬也達到了750Mbit/s以上。詳細的跑分數據可以參考Fast-RTPS vs Cyclone DDS vs OpenSplice DDS進行了解,且同設備內的通訊效率會遠超該結果。

數據加密

ROS 2在DDS的基礎之上引入了SROS的概念,設計文檔參考ROS 2 DDS-Security integration,即所有的ROS 2消息均可通過SROS進行加解密、鑒權、授權控制、Log和數據標記的權限控制等。基于ROS 2的原本設計邏輯,我們甚至可以將數據的密鑰生成和存儲放到ARM TEE OS中,以實現較高安全的數據保證

現代編程語言的支持

由于ROS 1的最初發行版在2007年,長期以來的支持和眾多開發庫的支持導致很多語言的新特性并不能良好地應用。比如對于Python,直至2020年發布的Noetic版本中才首次支持了Python 3,而Python 2在2020年1月便已經停止進行支持了。再如C++,ROS 1是基于C++ 03實現的,對于C++ 11的支持并不好,更不用談C++ 14和C++ 17的支持。

ROS 2則完全支持Python 3,并基于現代C++編寫。并基于其松耦合的方式,還支持Java和Rust等編程語言。如下圖User Application下面那一行所示,只要開發者愿意,可以支持任何編程語言。

圖片

靈活的機制

ROS 2提供了一種基于生命周期的管理模式, 即每個節點的運行狀態是完全可控的。參考設計文檔Managed nodes的闡述。所有Managed節點都可以在運行時進行實時配置、管理、關閉和啟動,并在出錯時可以由管理節點進行喚醒和重置。這種方式保證了整個系統的穩定性和魯棒性,也提高了系統出錯后恢復到正常的能力。

ROS 2在運行時可以更換DDS中間件,也可以在不同DDS中間件的實現間進行通訊。

5G的支持

ROS 2在Ericsson的推動下,正在商討5G的ROS 2通訊方案的制定和實現。

全新的生態

繼承ROS 1廣博的開源生態資源,ROS 2的發布激起了大家對于ROS產品化的熱情,許多公司都向ROS 2貢獻方案和代碼,包括但不限于Intel、NVIDIA、Ericsson等。

除了貢獻新的代碼,ROS 1的優秀工具也都被完全繼承到ROS 2里,如Moveit、Rviz和rosbag等。并且有些模塊,如navigation(導航),在開發者的改進中升級為navigation2,改善了諸多問題,提高了使用的便利性。

多種通訊方式

ROS 2 Topic通訊節點和節點之間進行通訊的橋梁,節點可以同時發布和接收話題,節點和話題之間是多對多關系。

圖片

Service(服務)是ROS圖上節點通信的另一種方法,服務基于呼叫響應模型,而不是主題的發布者-訂閱者模型。服務端和客戶端之間,是一對一或一對多關系。

圖片

Action是ROS 2中用于長時間運行任務的通信類型之一,它們由三部分組成:目標,結果和反饋。

圖片

ROS 2的成熟案例

美軍投資的Ghost Robotics,其四足機器人使用了Eloquent版本的ROS 2進行開發,DDS方案選用的是商用的Cyclone DDS。

Mission Robotics的水下機器人(ROV),使用了Foxy版本的ROS 2進行開發。

總結

汽車產業真正的革命已經開始,軟件定義汽車的時代已經到來。汽車正加速從從機械設備向高度數字化、信息化的智能終端轉變,涉及領域龐大并且復雜。一輛自動駕駛的汽車,從某種意義上來說,也是一個自動駕駛的機器人,理所當然的可以是使用ROS 2進行開發,ROS 2提供了大量基礎組件,大大便利了包括導航算法、自動駕駛算法和一些AI算法的部署。當然ROS 2仍然有很多缺陷,ROS 2的調度模型無法搶占,有時候優先級高的調度實例可能被低優先級的調度阻塞,還沒有一家汽車行業公司利用ROS 2將產品落地。

面對這些挑戰,極氪的軟件及電子中心大膽嘗試,基于ROS 2的通訊框架和平臺架構,進行基于SOA架構的汽車操作系統的開發,并且取得不錯的測試效果。極氪的軟件及電子中心的在一直在前沿技術方面做深入探索,致力于打造ZEEKR OS整車操作系統,也歡迎各位有志之士加入我們,共同探索下一代汽車操作系統。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 機器人
    +關注

    關注

    211

    文章

    28643

    瀏覽量

    208424
  • 操作系統
    +關注

    關注

    37

    文章

    6896

    瀏覽量

    123749
  • ROS
    ROS
    +關注

    關注

    1

    文章

    280

    瀏覽量

    17099
收藏 人收藏

    評論

    相關推薦

    Micro-ROS:把ROS2放在MCU上

    機器人的發展。 ? ROS便是為機器人在研發的過程中的代碼復用提供支持的開源框架,大量的機器人開源項目,從感知到控制、從定位到構圖、從導航到可視化,幾乎都使用ROS作為基礎。 ? Micro-ROS從何而來? ? Micro-
    的頭像 發表于 04-07 07:13 ?7913次閱讀

    系統鏡像Ubuntu_ROS2ROS2是什么意思,帶有ROS2開發環境嗎?

    請問一下,百度文庫資料里面,下圖所示的系統鏡像Ubuntu_ROS2ROS2是什么意思,帶有ROS2開發環境嗎?與前面4GB版本的鏡像有什么區別?
    發表于 03-01 23:06

    ROS2的安裝與使用 精選資料推薦

    ros2的烏龜仿真turtlesim,介紹topic,service,action等元素及其使用,介紹ros的基本操作
    發表于 08-30 08:24

    什么是ROS?如何學習ROS

    什么是ROS?如何學習ROS
    發表于 11-11 07:21

    ROS簡介

    目錄一、ROS簡介1、什么是ROS2ROS產生、發展和壯大的原因和意義二、在Ubuntu系統中,安裝對應版本的ROS軟件1、確定Ubuntu配置2
    發表于 12-17 08:24

    什么是ROSROS產生、發展和壯大的原因和意義

    機器人操作系統(ROS)入門(嵌入式系統應用開發)一、ROS 基本問題1. 什么是 ROS2. ROS 產生、發展和壯大的原因和意義二、安裝 ROS
    發表于 12-17 06:08

    ROS的含義與機器人操作系統ROS介紹

    為了說明講清楚 ROS,我就從 ROS 是什么,為什么使用 ROS,如何使用 ROS 三個方面展開。 △出自今年《機器人視覺與應用》課程本人制作的課件 是什么
    發表于 09-26 14:08 ?12次下載

    ROS基本介紹

    近來找到的實習主要是做智能車控制,用到的也就是ROS機器人操作系統,ROS需要運行在一個操作系統上,這個操作系統常用的就是Linux,而公司用的就是Ubuntu,所以Ubuntu-ROS組合就是實習的主要學習內容了。所以我就新開
    的頭像 發表于 05-19 17:07 ?7509次閱讀
    <b class='flag-5'>ROS</b>基本<b class='flag-5'>介紹</b>

    ROS1的通信架構的基礎通信方式及相關概念

    ROS的通信架構是ROS的靈魂所在,它包括數據處理,進程運行,消息傳遞等** 。這篇文章主要介紹ROS1的通信架構的基礎通信方式和相關概念,因為RO
    的頭像 發表于 05-19 17:23 ?3544次閱讀
    <b class='flag-5'>ROS</b>1的通信架構的基礎通信方式及相關概念

    Unity與ROS鏈接介紹

    對于ROS而言,其最常用的就是Topic話題以及Service兩個了。之前我們在了解Unity Robotics Hub時候就了解到基本的Unity和ROS的通訊,下面我們來詳細介紹一下Unity
    的頭像 發表于 11-17 17:22 ?1070次閱讀
    Unity與<b class='flag-5'>ROS</b>鏈接<b class='flag-5'>介紹</b>

    ROS核心框架介紹

    ROS核心框架 對于第一個問題,我也沒仔細研究過源碼,核心代碼基本由python和C++組成,運用了xmlrpc機制,每個運行的節點可以理解成一個進程。進程間通訊有些是共享內存的方式(比如
    的頭像 發表于 11-21 18:07 ?1054次閱讀
    <b class='flag-5'>ROS</b>核心框架<b class='flag-5'>介紹</b>

    ros的基本概念是什么

    基本概念: ROS是一個用于在不同進程間匿名的發布、訂閱、傳遞信息的中間件。 ROS2系統的核心部分是ROS網絡(ROS Graph)。 ROS
    的頭像 發表于 11-27 11:21 ?1888次閱讀

    ROS2中自帶例程測試

    如果你是一個ROS2的開發者,可能對剛才我們使用的ROS2命令比較熟悉,這時你可能也會產生一個問題:我們之前也安裝了ROS2系統,那ROS2的原生功能還可以正常運行么? 我們再來試一試
    的頭像 發表于 11-28 16:29 ?1035次閱讀
    <b class='flag-5'>ROS2</b>中自帶例程測試

    在TogetherROS中如何安裝ROS2功能包

    安裝ROS2功能包 接下來,還有一個很重要的配置,那就是安裝ROS2功能包,我們說TogetherROS是基于ROS2深度優化的,很多模塊還是會復用ROS2中的功能,所有
    的頭像 發表于 12-01 16:02 ?1068次閱讀
    在TogetherROS中如何安裝<b class='flag-5'>ROS2</b>功能包

    ros怎么設置環境變量

    設置ROS環境變量是使用ROS的重要步驟之一。本文將詳細介紹如何設置ROS環境變量,包括什么是環境變量、為什么要設置ROS環境變量、如何設置
    的頭像 發表于 12-28 13:52 ?2193次閱讀
    真人百家乐免费开户送钱| 百家乐怎样看点| 百家乐真人娱乐注册| 百家乐赌王有哪些| 百家乐真人博彩的玩法技巧和规则| 电玩城百家乐技巧| 德州扑克qq| 赌博百家乐官网游戏| 网上百家乐赌钱| 申博太阳城娱乐城| 百家乐官网游戏软件出售| 子山午向的房子24山图| 真人百家乐作| 百家乐官网如何破解| 金冠百家乐官网的玩法技巧和规则| 四方百家乐的玩法技巧和规则 | 线上百家乐官网平台| 保单机百家乐破解方法| 百家乐平注法口诀技巧| 大发888游戏平台hana| 寿光市| 阴宅24水口| 威尼斯人娱乐官方| 乐百家乐官网彩娱乐城| 百家乐官网翻天粤语版| 百家乐娱乐代理| 皇冠娱乐城| 百家乐官网筹码500| 基础百家乐官网博牌规| 德州扑克荷官招聘| 百家乐官网知识技巧玩法| 百家乐游戏百家乐| 大发888娱乐登录| 沙龙百家乐官网娱乐城| 百樂坊百家乐的玩法技巧和规则| 元游棋牌游戏下载| 百家乐的代理办法| 噶尔县| 百家乐包台| 百家乐官网高命中投注| 赌场百家乐网站|