ROS2:ROS進化
作者:Dr.Anis Koubaa
翻譯:硅步機器人
在本文中,我們將概述ROS2是如何產生的。
ROS2的歷史
ROS2於2014年首次在ROSCON2014大會上推出。ROS2旨在採用不同的方法來解決與消息傳遞有關的問題,最終採用數據分發服務作為下一代ROS中數據交換的中間件。這意味著不是像ROS1那樣使用集中式消息傳遞系統,而是依賴於分散式消息傳遞系統,從而不需要中央節點,即ROS主節點。然後,DDS安全性於2016年晚些時候推出。
第一個alpha版本跨越2015年8月到2016年10月,2016年12月發布了第一個Beta版本,然後在2017年7月和2017年9月分別發布了第二個和第三個beta版本。2017年底,第一個正式版的ROS2 Ardent發布,並於2018年7月2日發布了ROS2彈性版本。2018年12月,Crystal發布並發布最新版本,自2019年5月開始在Dashing上發布最新版本。
ROS2仍在大力發展,但許多設計目標都是在最新的發行版中完成的。
設計目標
ROS1發布5年後,ROS社區開始退後一步,研究ROS在滿足未來機器人應用需求方面的能力。
事實證明,ROS1設計受到一些限制。事實上,ROS主要是為單機器人應用而設計的,並不支持多機器人系統。儘管文獻中提出了一些支持多機器人系統和群體的ROS軟體包,但它們尚未正式採用,並且未被證明是有效的。此外,ROS1提供儘力而為的服務,並且不能保證實時約束。這對於在時間關鍵任務和應用中部署的機器人來說是一個嚴重的問題。此外,ROS1設計用於在高度可靠的網路中運行,在每個用例中都無法保證。
因此,ROS2的設計目標是解決這些缺點並提出新的理念和解決方案。
經過多次討論和調查,ROS2的設計目標旨在完全分布並本地支持多機器人系統,並縮小原型設計和生產之間的差距。此外,ROS2旨在用於實時系統和應用程序,而服務質量配置文件的概念尤為重要。
ROS2應該是容錯的,並且能夠在有丟包的網路中運行。
與ROS1不同,ROS2旨在跨平台操作不同的操作系統,不僅僅是Linux,還提供對Mac OS和Windows的支持。
此外,它必須與小型嵌入式系統友好。
事實證明,DDS滿足ROS2的大部分設計目標和目標,因此選擇了消息交換中間件。
DDS是什麼
DDS是由對象管理組設計的行業標準通信系統。它是一個以數據為中心的發布訂閱(DCPS)系統,可實現實時的機器對機器通信。
DDS遵循發布 - 訂閱模型,其中網路中的一些節點產生數據,而其他節點將使用該數據。這種模式與ROS中的通信範式非常相似,這一點受到了ROS的啟發。
DDS有幾個應用領域,包括金融交易,空中交通管制,智能電網管理以及大數據和物聯網應用。
第一個DDS實現可追溯到2001年,由兩家供應商提供:來自美國的RTI和來自法國的Thales。
DDS可被視為一種網路中間件,可簡化複雜的網路編程以進行數據交換。它實現了一個發布- 訂閱模式,用於在節點之間發送和接收數據,事件和命令。
DDS的一個主要優點是它允許指定QoS配置文件,這符合ROS2的一個重要設計目標。
DDS旨在完全分散式的實現,以便提高可擴展性並避免單點故障。它還通過定義數據交換的QoS參數來保證實時性。DDS還支持安全性,旨在確保高性能計算。
不僅如此,DDS還確保異構系統中的互操作數據交換,並確保發現,序列化和傳輸等功能的標準規範。
DDS由商業和開源的不同供應商實現。
DDS支持一些ROS2設計目標。
DDS如何集成到ROS中?
最初,ROS社區面臨兩種可能的選擇。
一種選擇是改進ROS1傳輸機制,確保向後兼容性,另一種是基於現有解決方案構建全新的中間件。
經過多次調查並考慮到ROS2的設計目標,設計者決定採用新的中間件進行ROS通信,還有一些替代方案正在研究中,如ZeroMQ,Protocol Buffer,ZeroConf和DDS。
最終的共識是採用DDS標準,該標準滿足大多數ROS2設計目標。
在這張幻燈片中,我們展示了ROS1和ROS2的架構。
ROS1僅受Linux OS支持,並使用TCPROS和UDPROS中間件,這些中間件具有自定義傳輸協議以確保ROS網路中的通信。客戶端庫rospy和roscpp是用戶應用程序的介面。ROS1中節點之間的通信需要一個作為ros主節點的中心節點。
另一方面,ROS2支持多個OS,包括Linux、MacOS和Windows,並且DDS確保節點之間的通信,因此不再像ROS1那樣需要ROS主節點。由於ROS2完全是分散式的,這是關於容錯的關鍵改進。
ROS2依賴於DDS並具有DDS抽象層。該層是用戶代碼和DDS功能之間的介面,因此用戶無需直接與DDS交互。ROS2與DDS實現無關,因此它可以支持不同的DDS實現,同時它們的介面保持不變。
所以ROS2可以與多個供應商的DDS一起運行,如OpenSplice,RTI等。
目前的ROS2彈性是通過Eprosima的DDS實現提供的。
ROS2的通用性
目前世界大多數的機器人公司的平台/產品均支持ROS系統,支持 ROS2系統,例如:硅步機器人自主研發的RIA-R100、E100; 它是應用於室內外各種環境教育和研發的移動機器人。該機器人完全支持ROS1和ROS2,是學習ROS1和ROS2移動機器人的獨特平台。
END
看累了嗎?戳一下「在看」支持我們吧!
![](https://pic.pimg.tw/zzuyanan/1488615166-1259157397.png)
![](https://pic.pimg.tw/zzuyanan/1482887990-2595557020.jpg)
TAG:機器人大講堂 |