Apollo與ROS

Apollo項目基於ROS,可是對其進行了改造,主要包括下面三個方面:編程

  1. 通訊性能優化
  2. 去中心化網絡拓撲
  3. 數據兼容性擴展

通訊性能優化

自動駕駛車輛中包含了大量的傳感器,這些傳感器可能以很是高頻的速度產生數據,因此整個系統對於數據傳輸效率要求很高。在ROS系統中,從數據的發佈到訂閱節點之間須要進行數據的拷貝。性能優化

在數據量很大的狀況下,很顯然這會影響數據的傳輸效率。因此Apollo項目對於ROS第一個改造就是將經過共享內存來減小數據拷貝,以提高通訊性能。以下圖所示:網絡

1647db03b937b890

去中心化網絡拓撲

前文咱們提到,ROS系統中包含了一個通訊的主節點,全部其餘節點都要藉助於這個節點來進行通訊。因此,很顯然的,假如這個節點發生了通訊故障,就會影響整個系統的通訊。而且,整個結構還缺少異常恢復機制。編程語言

因此Apollo項目對於ROS的第二個改造就是去除這種中心化的網絡結構。Apollo使用RTPS(Real-Time Publish-Subscribe)服務發現協議實現徹底的P2P網絡拓撲。性能

關於RTPS詳見這裏:Real-Time Publish-Subscribe優化

數據兼容性擴展

Apollo項目對於ROS最後一個較大的改進就是對於數據格式的調整。google

在ROS系統中,使用msg描述文件定義模塊間的消息接口。但不幸的是,接口升級以後不一樣的版本的模塊難以兼容。spa

所以,Apollo選擇了Google的Protocol Buffers格式數據來解決這個問題。blog

Protocol Buffers,是Google公司開發的一種數據描述語言,相似於XML可以將結構化數據序列化,可用於數據存儲、通訊協議等方面。它不依賴於語言和平臺而且可擴展性極強。現階段官方支持C++、JAVA、Python三種編程語言,但能夠找到大量的幾乎涵蓋全部語言的第三方拓展包。接口

參考連接:https://qiangbo-workspace.oss-cn-shanghai.aliyuncs.com/2018-07-07-baidu_apollo/ROS%E5%9C%A8%E8%87%AA%E5%8A%A8%E9%A9%BE%E9%A9%B6%E7%9A%84%E6%8E%A2%E7%B4%A2%E5%92%8C%E5%AE%9E%E8%B7%B5.pdf

相關文章
相關標籤/搜索