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最后一個較大的改進就是對於數據格式的調整。

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

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

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM