ROS核心概念


ROS

簡介

  • ROS(Robot Operating System)是一個適用於機器人的開源的元操作系統,是用於編寫機器人軟件程序的一種具有高度靈活性的軟件架構,提供了操作系統應有的服務,包括硬件抽象,底層設備控制,常用函數的實現,進程間消傳遞,以及包管理

一套標准

  • ROS中有一個稱為“計算圖”的概念,即由一個master管理一堆節點。通過這個東西,我們可以非常方便且安全地通過編寫多個節點實現多進程編程(注意不是多線程)。這種編程方式是ROS標准的一部分
  • 計算圖(Computation Graph)是一個由ROS進程組成的點對點網絡,它們能夠共同處理數據。ROS的基本計算圖概念有節點(Nodes)、主節點(Master)、參數服務器(Parameter Server)、消息(Messages)、服務(Services)、話題(Topics)和袋(Bags),它們都以不同的方式向圖(Graph)提供數據

一堆工具

  • ROS提供了大量的工具。比如許多命令行工具,可以檢測每個節點的發布頻率,信息類型,又比如超級好用的可視化工具Rviz,用來數據可視化的rqt_plot,用來仿真的gazebo,用來標定相機內參的工具等等

節點與管理器

節點(Node) --執行單元

  • 執行具體任務的進程、獨立運行的可執行文件
  • 不同節點可使用不同的編程語言,可分布式運行在不同的主機
  • 節點在系統中的名稱必須是唯一的

節點管理器(ROS Master) --控制中心

  • 為節點提供命名和注冊服務
  • 跟蹤和記錄話題/服務通信,輔助節點互相查找、建立連接
  • 提供參數服務器,節點使用此服務器存儲和檢索運行時的參數
    節點截圖

話題通信

話題(Topic) --異步通信機制

  • 節點間用來傳輸數據的重要總線
  • 使用發布/訂閱模型,數據由發布者傳輸到訂閱者,同一個話題的訂閱者或發布者可以不唯一

消息(Message) --話題數據

  • 具有一定的類型和數據結構,包括ROS提供的標准類型和用戶自定義類型
  • 使用與編程語言無關的.msg文件定義,編譯過程中生成對應的代碼文件

注意,Topic一般擁有很強的類型定義:一種類型的Topic只能接受/發送特定數據類型(message type)的Message
話題截圖1
話題截圖2

服務通信

服務(Service) --同步通信機制

  • 使用客戶端/服務器(C/S)模型,客戶端發送請求數據,服務器完成處理后返回應答數據
  • 使用與編程語言無關的.srv文件定義請求和應答數據結構,編譯過程中生成對應的代碼文件
    服務截圖1
    服務截圖2

參數

參數(Parameter) --全局共享字典

  • 可通過網絡訪問的共享、多變量字典
  • 節點使用此服務器來存儲和檢索運行時的參數
  • 適合存儲靜態、非二進制的配置參數,不適合存儲動態配置的數據
    參數截圖

文件系統

功能包(Package)

  • ROS軟件中的基本單元,包含節點源碼、可執行文件、腳本、配置文件、數據定義等

功能包清單(Package manifest)

  • 清單(Manifest)是對軟件包的描述。它用於定義軟件包之間的依賴關系,並記錄有關軟件包的元信息,如版本、維護者、許可證等

元功能包(Meta Packages)

  • 組織多個用於同一目的的功能包

文件系統


免責聲明!

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



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