ros1 和 ros2的區別


 

 

0.概述

其實是為了解決ros1中的一些問題
主要是從下面幾個文章整過來

1.基本概念

基本概念:

  • ROS是一個用於在不同進程間匿名的發布、訂閱、傳遞信息的中間件。
  • ROS2系統的核心部分是ROS網絡(ROS Graph)。
  • ROS網絡是指在ROS系統中不同的節點間相互通信的連接關系。
  • ROS Graph這里翻譯成了ROS網絡,因為我覺得Graph更加抽象,而網絡的概念更容易幫助理解其內涵。

ROS網絡(ROS Graph)概念簡介:

  • 節點(Nodes): 一個節點是一個利用ROS系統和其他節點通信的實體
  • 消息(Messages): ROS中在訂閱和發布主題時所用到的數據結構
  • 主題(Topics): 節點可以發布信息到一個主題,同樣也可訂閱主題來接收消息
  • 發現(Discovery): 一個自動運行的進程,通過這個進程不同的節點相互發現,建立連接

節點(Nodes)

  • 一個節點就是一個在ROS網絡中的參與者。
  • ROS節點通過ROS客戶端程序庫(ROS client library)來和其他節點進行通信。
  • 節點可以發布或者訂閱主題 節點也可以提供ROS服務(Service)。
  • 節點有很多可以配置的相關參數。
  • 節點間的連接時通過一個分布式發現進程來建立的(即上面所說的發現)。
  • 不同的節點可以在同一個進程里面,也可以在不同的進程里面,甚至可以在不同的機器上。

客戶端程序庫

  • ROS客戶端程序庫可以讓不同的語言編寫的節點進行通信。

  • 在不同的編程語言中都有對應的ROS客戶端程序庫(RCL),這個程序庫實現了ROS的基本API。

  • 這樣就確保了不同的編程語言的客戶端更加容易編寫,也保證了其行為更加一致。

  • 下面的客戶端程序庫是由ROS2團隊維護的

    • rclcpp = C++ 客戶端程序庫
    • rclpy = Python 客戶端程序庫
  • 另外其他客戶端程序也已經有ROS社區開發出來。 可以看[[ROS 客戶端程序庫]]來了解詳細信息

發現

  • 節點之間的互相發現是通過ROS2底層的中間件實現的。

  • 過程總結如下

    • 當一個節點啟動后, 它會向其他擁有相同ROS域名的節點進行廣播,說明它已經上線。
    • ROS域名(ROS domain, 可以通過設置ROS_DOMAIN_ID環境變量來設置)
    • 其他節點在收到廣播后返回自己的相關信息,這樣節點間的連接就可以建立了,之后就可以通信了。
    • 節點會定時廣播它的信息,這樣即使它已經錯過了最初的發現過程,它也可以和新上線的節點進行連接。
    • 節點在下線前它也會廣播其他節點自己要下線了。
    • 節點只會和具有相兼容的[服務質量]設置的節點進行通信。

2. ros2 的目標

在這里插入圖片描述

3. ros2 的架構

ros1 和 ros2
ros2 的api架構
在這里插入圖片描述

4. ros1 和ros2的通信模型

ros1:

  • talker 注冊
  • listener 注冊
  • ROS Master 進行信息匹配
  • listener 發送鏈接請求
  • talker 確認請求
  • 建立連接
  • talker 給 listener 發數據

在這里插入圖片描述

ROS2:

  1. 參與者(Domain
    Participant):一個參與者Participant就是一個容器,對應於一個使用DDS的用戶,任何DDS的用戶都必須通過Participant來訪問全局數據空間。

  2. 發布者(Publisher):數據發布的執行者,支持多種數據類型的發布,可以與多個數據寫入器(DataWriter)相聯,發布一種或多種主題(Topic)的消息。

  3. 訂閱者(Subscriber):數據訂閱的執行者,支持多種數據類型的訂閱,可以與多個數據讀取器(DataReader)相聯,訂閱一種或多種主題(Topic)的消息。

  4. 數據寫入器(DataWriter):應用向發布者更新數據的對象,每個數據寫入器對應一個特定的Topic,類似於ROS1中的一個消息發布者。

  5. 數據讀取器(DataReader):應用從訂閱者讀取數據的對象,每個數據讀取器對應一個特定的Topic,類似於ROS1中的一個消息訂閱者。

  6. 主題(Topic):這個和ROS1中的Topic概念一致,一個Topic包含一個名稱和一種數據結構。

  7. QoS Policy:Quality of Service,質量服務原則,這個模塊在ROS1中可從沒見過,看名稱就猜測應該是負責數據質量的。QoS是DDS中非常重要的一環,控制了各方面與底層的通訊機制,主要從時間限制、可靠性、持續性、歷史記錄幾個方面,滿足用戶針對不同場景的數據應用需求
    在這里插入圖片描述

ros2 17年就發布了,好好學習

 
 
版權聲明:本文為博主原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
本文鏈接: https://blog.csdn.net/weixin_36628778/article/details/104751581


免責聲明!

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



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