色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

ROS學習筆記之ROS基本概念

jf_78858299 ? 來源:Joes機器人 ? 作者:Joes機器人 ? 2023-05-19 17:11 ? 次閱讀

ROS的概念分為三個層次:文件系統層、計算圖層、社區層,這些層次以及概念將會在接下來的章節介紹。

除了這三個層次的概念,ROS同樣定義兩個names類型,包資源名稱和圖形資源名稱。

1、ROS文件系統層次

文件系統層概念主要指在硬盤里能看到的ROS目錄和文件, 例如:

  • Packages : Packages是在ROS中整理及組織軟體的主要單元。一個Packages包含節點(ROS runtime processes)、ROS程式庫(ROS-dependent library)、數據集(datasets)、配置文件(configuration files)??等等。Packages是您在ROS中能建立及分享的最小單元。
  • Metapackages : Metapackages 是一組具體的服務相關的功能包。大部分的metpackages 只作為轉換rosbuild Stacks的向后兼容的備選。
  • Package Manifests : Manifests (package.xml) 描述一個package的元信息,包括了package的名字,版本,功能簡述,證書信息,依賴關系,以及一些其他的被export的package所有的信息。關于package.xml 的文件說明,參考REP-0127.
  • Repositories : 代碼倉庫是使用VCS版本控制系統的軟件包集合,軟件包利用版本控制維持同一版本,它能使用catkin自動發布工具bloom進行發布。這些代碼倉庫常通過映射來進行轉換 rosbuild Stacks.倉庫可以是只有一個軟件包。
  • Message (msg) types : 存儲在my_package/msg/MyMessageType.msg的Message文件,主要定義了ROS系統的messages傳輸的數據結構。
  • Service (srv) types : 存儲在 my_package/srv/MyServiceType.srv的服務services文件,定義了ROS的服務通信時的請求(request )和響應(response )相關的數據結構。

2、ROS計算圖層次

  • 計算圖*是ROS在點對點網絡里整合并處理數據的過程?;居嬎銏D概念是 節點 , 主機 , 參數服務器 , 消息 , 服務 , 話題 , 和 數據包 ,它們通過不同的方式提供數據給圖層。

這些概念是在ros_comm庫里實現的:

  • Nodes : 節點主要執行計算處理 。ROS被設計為細粒度的模塊化的系統;一個機器人控制系統通常有很多節點組成 。例如,一個節點控制激光測距儀,一個節點控制輪電機,一個節點執行定位,一個節點執行路徑規劃,一個節點提供系統圖形界面,等等。一個ROS節點通過ROS客戶端庫 client library編寫,例如 roscpp 或rospy
  • Master : ROS Master 為計算圖的其余部分提供名稱注冊和查找。沒有 Master,節點將無法找到彼此、交換消息或調用服務。
  • Parameter Server : 參數服務器允許將數據按密鑰存儲在一個中央位置。它目前是 Master 的一部分。
  • Messages : 節點之間通過傳遞消息進行通信。消息只是一種數據結構,包括類型化字段。支持標準基本類型(整數、浮點數、布爾值等),以及基本類型數組。消息可以包括任意嵌套的結構和數組(很像 C 結構)。
  • Topics : 消息通過具有發布/訂閱語義的傳輸系統進行路由。節點通過將消息發布到給定主題來發送消息。主題是用于標識消息內容的名稱。對某種數據感興趣的節點將訂閱適當的主題。一個主題可能有多個并發發布者和訂閱者,一個節點可能發布和/或訂閱多個主題。通常,發布者和訂閱者并不知道彼此的存在。這個想法是將信息的生產與其消費分離。從邏輯上講,可以將主題視為強類型消息總線。每條總線都有一個名稱,任何人都可以連接到總線來發送或接收消息,只要它們是正確的類型。
  • Services : 發布/訂閱模型是一種非常靈活的通信范式,但其多對多、單向傳輸不適用于請求/回復交互,而這在分布式系統中通常是必需的。請求/回復是通過服務完成的,服務由一對消息結構定義:一個用于請求,一個用于回復。提供節點以某個名稱提供服務,客戶端通過發送請求消息并等待回復來使用該服務。ROS 客戶端庫通常將這種交互呈現給程序員,就好像它是一個遠程過程調用。
  • Bags : Bags 是一種用于保存和回放 ROS 消息數據的格式。袋子是存儲數據(例如傳感器數據)的重要機制,這些數據可能難以收集,但卻是開發和測試算法所必需的。
    ROS Master 在 ROS 計算圖中充當名稱服務。它存儲 ROS 節點的主題和服務注冊信息。節點與 Master 通信以報告其注冊信息。當這些節點與 Master 通信時,它們可以接收有關其他注冊節點的信息并進行適當的連接。當這個注冊信息發生變化時,Master 也會對這些節點進行回調,這允許節點在新節點運行時動態創建連接。
    節點直接連接到其他節點;Master 只提供查找信息,很像 DNS 服務器。訂閱主題的節點將從發布該主題的節點請求連接,并將通過商定的連接協議建立該連接。ROS 中最常用的協議稱為 TCPROS,它使用標準的 TCP/IP 套接字。
    這種架構允許解耦操作,其中名稱是構建更大和更復雜系統的主要手段。名稱在 ROS 中具有非常重要的作用:節點、主題、服務和參數都有名稱。每個 ROS 客戶端庫都支持名稱的命令行重映射,這意味著可以在運行時重新配置已編譯的程序以在不同的計算圖拓撲中運行。
    例如,要控制 Hokuyo 激光測距儀,我們可以啟動 hokuyo_node 驅動程序,它與激光通信并在掃描主題上發布 sensor_msgs/LaserScan 消息。為了處理這些數據,我們可能會使用laser_filters 編寫一個節點來訂閱關于掃描主題的消息。訂閱后,我們的過濾器會自動開始接收來自激光的消息。
    注意兩側是如何解耦的。hokuyo_node 節點所做的只是發布掃描,不知道是否有人訂閱。過濾器所做的只是訂閱掃描,而不知道是否有人發布它們。這兩個節點可以按任意順序啟動、終止和重新啟動,而不會引發任何錯誤情況。
    稍后我們可能會為我們的機器人添加另一個激光器,因此我們需要重新配置我們的系統。我們需要做的就是重新映射使用的名稱。當我們開始我們的第一個 hokuyo_node 時,我們可以告訴它重新映射 scan 到 base_scan,并對我們的過濾器節點做同樣的事情?,F在,這兩個節點都將使用 base_scan 主題進行通信,而不會聽到關于 scan 主題的消息。然后我們可以為新的激光測距儀啟動另一個 hokuyo_node。

圖片

3、ROS 交流社區

ROS 社區級概念是 ROS 資源,使不同的社區能夠交換軟件和知識。這些資源包括:

  • Distributions : ROS 發行版是您可以安裝的版本化堆棧的集合。發行版與 Linux 發行版扮演著類似的角色:它們使安裝一組軟件變得更加容易,并且它們還可以在一組軟件中保持一致的版本。
  • Repositories :ROS 依賴于代碼存儲庫的聯合網絡,不同的機構可以在其中開發和發布自己的機器人軟件組件。
  • The ROS Wiki : ROS 社區 Wiki 是記錄有關 ROS 信息的主要論壇。任何人都可以注冊一個帳戶并貢獻自己的文檔、提供更正或更新、編寫教程等等。
  • Bug Ticket System :有關文件票的信息,請參閱票證。
  • Mailing Lists : ros-users 郵件列表是有關 ROS 新更新的主要溝通渠道,也是詢問有關 ROS 軟件問題的論壇。
  • ROS Answers : 用于回答您的 ROS 相關問題的問答網站。
  • Blog : 柳葉車庫博客提供定期更新,包括照片和視頻

4、名稱

4.1、圖資源名稱

圖資源名稱提供分層命名結構,用于 ROS 計算圖中的所有資源,例如節點、參數、主題和服務。這些名稱在 ROS 中非常強大,并且對于 ROS 中如何組成更大、更復雜的系統至關重要,因此了解這些名稱的工作原理以及如何操作它們至關重要。

在我們進一步描述名稱之前,這里有一些示例名稱:

  • / (全局命名空間)
  • /foo
  • /stanford/robot/name
  • /wg/node1
    圖資源名稱是ROS中提供封裝的重要機制。每個資源都定義在一個命名空間中,它可以與許多其他資源共享。通常,資源可以在其命名空間內創建資源,并且它們可以訪問在其自己的命名空間內或之上的資源??梢栽诓煌臻g中的資源之間建立連接,但這通常由兩個命名空間上方的集成代碼完成。這種封裝隔離了系統的不同部分,以免意外獲取錯誤命名的資源或全局劫持名稱。
    名稱是相對解析的,因此資源不需要知道它們在哪個命名空間中。這簡化了編程,因為可以編寫一起工作的節點,就好像它們都在頂級命名空間中一樣。當這些節點被集成到一個更大的系統中時,它們可以被下推到一個定義它們代碼集合的命名空間中。例如,可以將一個斯坦福演示和一個 Willow Garage 演示合并到一個帶有 stanford 和 wg 子圖的新演示中。如果兩個演示都有一個名為“camera”的節點,它們就不會發生沖突。需要對整個圖形可見的工具(例如圖形可視化)以及參數(例如 demo_name)可以由頂級節點創建。

4.1.1、有效名稱

有效名稱具有以下特征:

1.第一個字符是字母字符 ([a-z|A-Z])、波浪號 (~) 或正斜杠 (/)

2.后續字符可以是字母數字 ([0-9|a-z|A-Z])、下劃線 (_) 或正斜杠 (/)

例外:基本名稱(如下所述)中不能包含正斜杠 (/) 或波浪號 (~)。

4.1.2、解決

ROS中有四種類型的圖資源名稱:base、relative、global和private,它們的語法如下:

  • base
  • relative/name
  • /global/name
  • private/name
    默認情況下,解析是相對于節點的命名空間完成的。例如,節點 /wg/node1 具有命名空間 /wg,因此名稱 node2 將解析為 /wg/node2。
    沒有命名空間限定符的名稱是基本名稱?;麑嶋H上是相對名的一個子類,具有相同的解析規則。基本名稱最常用于初始化節點名稱。
    以“/”開頭的名稱是全局的——它們被認為是完全解析的。應盡可能避免使用全局名稱,因為它們限制了代碼的可移植性。
    以“
    ”開頭的名稱是私有的。它們將節點的名稱轉換為命名空間。例如,命名空間 /wg/ 中的 node1 具有私有命名空間 /wg/node1。私有名稱可用于通過參數服務器將參數傳遞到特定節點。

以下是一些名稱解析示例:

Node Relative (default) Global Private
/node1 bar->/bar /bar->/bar ~bar->/node1/bar
/wg/node2 bar->/wg/bar /bar->/bar ~bar->/wg/node2/bar
/wg/node3 foo/bar->/wg/foo/bar /foo/bar->/foo/bar ~foo/bar->/wg/node3/foo/bar

4.1.3、重新映射

在命令行啟動節點時,可以重新映射 ROS 節點中的任何名稱。有關此功能的更多信息,請參閱重新映射參數。

4.2、包資源名稱

包資源名稱在具有文件系統級概念的 ROS 中使用,以簡化引用磁盤上文件和數據類型的過程。包資源名稱非常簡單:它們只是資源所在的包的名稱加上資源的名稱。例如,名稱“std_msgs/String”指的是“std_msgs”包中的“String”消息類型。

可以使用包資源名稱引用的一些與 ROS 相關的文件包括:

  • Message (msg) types
  • Service (srv) types
  • Node types
    包資源名稱與文件路徑非常相似,只是它們要短得多。這是因為 ROS 能夠在磁盤上定位包并對它們的內容做出額外的假設。例如,消息描述始終存儲在 msg 子目錄中并具有 .msg 擴展名,因此 std_msgs/String 是 path/to/std_msgs/msg/String.msg 的簡寫。同樣,Node 類型 foo/bar 相當于在 Package foo 中搜索具有可執行權限的名為 bar 的文件。

4.2.1、有效名稱

包資源名稱具有嚴格的命名規則,因為它們經常用于自動生成的代碼中。因此,一個 ROS 包不能有除下劃線以外的特殊字符,它們必須以字母字符開頭。有效名稱具有以下特征:

1.第一個字符是字母字符 ([a-z|A-Z])

2.后續字符可以是字母數字 ([0-9|a-z|A-Z])、下劃線 (_) 或正斜杠 (/)

3.最多有一個正斜杠 ('/')。

4.3、 代碼接口

roscpp::names 接口參考 (ROS Indigo)
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 計算
    +關注

    關注

    2

    文章

    449

    瀏覽量

    38790
  • ROS
    ROS
    +關注

    關注

    1

    文章

    278

    瀏覽量

    17004
收藏 人收藏

    評論

    相關推薦

    ROS基本概念和系統架構 ROS的安裝和簡單測試

    前言:一直都覺得ROS很神秘,到底是個操作系統,僅憑稱呼就讓我望而卻步了。但ROS和自動駕駛仿真有著千絲萬縷的聯系,作為仿真軟件和智駕算法的數據橋梁,ROS是個繞不開的話題,所以還是得硬著頭皮啃一啃。然后用大白話講給你聽,最好再
    的頭像 發表于 11-15 12:42 ?6240次閱讀
    <b class='flag-5'>ROS</b>的<b class='flag-5'>基本概念</b>和系統架構 <b class='flag-5'>ROS</b>的安裝和簡單測試

    超詳細 ROS安裝教程

    :華碩筆記本 + Windows 10 + Ubuntu 16.04 雙系統Ubuntu 硬盤大小: 100G內存: 8G顯卡: 也不是用來打dota, 所以隨便啦啦啦~\(≧▽≦)/~啦啦啦Ros版本
    發表于 05-16 19:35

    什么是ROS?如何學習ROS

    什么是ROS?如何學習ROS?
    發表于 11-11 07:21

    ROS簡介

    目錄一、ROS簡介1、什么是ROS2、ROS產生、發展和壯大的原因和意義二、在Ubuntu系統中,安裝對應版本的ROS軟件1、確定Ubuntu配置2、添加
    發表于 12-17 08:24

    什么是ROS?ROS產生、發展和壯大的原因和意義

    機器人操作系統(ROS)入門(嵌入式系統應用開發)一、ROS 基本問題1. 什么是 ROS2. ROS 產生、發展和壯大的原因和意義二、安裝 ROS
    發表于 12-17 06:08

    怎么入門ROS

    你是不是還在迷茫怎么入門ROS?是不是想找平臺和大家一起交流?不論你是準備用ROS做導航定位算法、計算機視覺、運動控制,還是可視化仿真,都可以從這里找到不錯的資源,快進來一起一起學習吧!最后,非常感謝原作者小白機械師整理的
    發表于 02-24 07:31

    搭建ARM+ROS的硬件載體ROS的移植及測試方法

      1. 準備工作  經過前面的環境搭建,HDG2L-IoT評估套件已經能穩定地運行Ubuntu+docker環境,當前需要下載運行ROS鏡像即可?! ”疚膮⒖?b class='flag-5'>ROS官方文檔《Getting
    發表于 03-09 13:55

    ROS 學習筆記五:對Arduino環境刮目相看

    ROS 學習筆記五:對Arduino環境刮目相看
    發表于 11-29 09:51 ?2次下載
    <b class='flag-5'>ROS</b> <b class='flag-5'>學習</b><b class='flag-5'>筆記</b><b class='flag-5'>之</b>五:對Arduino環境刮目相看

    ROS學習筆記七:ROSSerial初試

    起來得心應手的還是MCU,所以如何將MCU控制的硬件和ROS系統相連,可以基于ROS的信息交互機制實現控制和反饋,是學習ROS、基于ROS
    發表于 12-07 14:51 ?9次下載
    <b class='flag-5'>ROS</b><b class='flag-5'>學習</b><b class='flag-5'>筆記</b><b class='flag-5'>之</b>七:ROSSerial初試

    ROS基本介紹

    近來找到的實習主要是做智能車控制,用到的也就是ROS機器人操作系統,ROS需要運行在一個操作系統上,這個操作系統常用的就是Linux,而公司用的就是Ubuntu,所以Ubuntu-ROS組合就是實習的主要
    的頭像 發表于 05-19 17:07 ?7387次閱讀
    <b class='flag-5'>ROS</b>基本介紹

    ROS1的通信架構的基礎通信方式及相關概念

    ROS的通信架構是ROS的靈魂所在,它包括數據處理,進程運行,消息傳遞等** 。這篇文章主要介紹ROS1的通信架構的基礎通信方式和相關概念,因為RO
    的頭像 發表于 05-19 17:23 ?3430次閱讀
    <b class='flag-5'>ROS</b>1的通信架構的基礎通信方式及相關<b class='flag-5'>概念</b>

    ROS操作系統學習筆記3

    摘要:這篇文章主要介紹ROS常用工具、ROSPY和ROSCPP常用模塊,完全看完三篇文章,可以說ROS就基本入門,可以自己動手做實驗了。 **ROS常用工具** ROS工具
    的頭像 發表于 05-19 17:37 ?1003次閱讀
    <b class='flag-5'>ROS</b>操作系統<b class='flag-5'>學習</b><b class='flag-5'>筆記</b>3

    ROS操作系統學習筆記4

    摘要:這篇文章主要介紹ROS常用工具、ROSPY和ROSCPP常用模塊,完全看完三篇文章,可以說ROS就基本入門,可以自己動手做實驗了。 **ROS常用工具** ROS工具
    的頭像 發表于 05-19 17:37 ?695次閱讀

    實現ARM+ROS(機器人操作系統)運行ROS!

    如何低成本搭建ARM+ROS的硬件載體?上文展示ROS部署前的籌備工作及步驟分解,本文將為大家演示ROS的移植及測試方法。
    的頭像 發表于 10-10 18:15 ?1248次閱讀
    實現ARM+<b class='flag-5'>ROS</b>(機器人操作系統)<b class='flag-5'>之</b>運行<b class='flag-5'>ROS</b>!

    ros基本概念是什么

    基本概念ROS是一個用于在不同進程間匿名的發布、訂閱、傳遞信息的中間件。 ROS2系統的核心部分是ROS網絡(ROS Graph)。
    的頭像 發表于 11-27 11:21 ?1792次閱讀
    主站蜘蛛池模板: 亚洲精品AV中文字幕在线| 亚洲国产AV一区二区三区四区| 一个人免费视频在线观看高清版 | 99久免费精品视频在线观看2| 精品午夜视频| 我半夜摸妺妺的奶C了她软件| 成人免费小视频| 18岁末年禁止观看免费1000个| 18禁黄久久久AAA片| 久久黄视频| 97精品在线观看| 人成午夜免费视频| 亚洲一区成人| 成人综合在线观看| 欧亚一卡二卡日本一卡二卡| 亚洲AV无码偷拍在线观看 | 亚洲AV 中文字幕 国产 欧美| 欲奴第一季在线观看全集| 黄色免费网址在线观看| 日韩成人黄色| 国产99热在线观看| 小草影院免费| 久久无码AV亚洲精品色午夜麻豆 | 一区二区三区内射美女毛片| 久久精品亚洲视频| 伊人久久精品AV一区二区| 久久99re2在线视频精品| 在公交车上被JB草坏了被轮J了| 美女教师朝桐光在线播放| 97国产视频| 色精品极品国产在线视频| 韩国羞羞秘密教学子开车漫书| 亚洲视频一区在线| 美女张开腿露出尿口扒开来摸动漫| china中国gay偷拍| 色欲AV精品人妻一二三区| 回复术士勇者免费观看全集| 97成人免费视频| 午夜aaaa| 男男被强bl高h文| 国产成人午夜精品免费视频|