日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

ROS2学习(四).ROS 2 核心概念

發(fā)布時(shí)間:2023/12/15 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ROS2学习(四).ROS 2 核心概念 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

ROS 2 概念速覽

  • 官方文檔
  • 圖(Graph)的概念
  • 節(jié)點(diǎn)(Node)
  • 客戶端庫(kù)(Client Libraries)
  • 發(fā)現(xiàn)機(jī)制(Discovery)
  • 參考

ROS2的核心概念主要有:

  • 節(jié)點(diǎn)
  • 客戶端庫(kù)
  • 發(fā)現(xiàn)機(jī)制

官方文檔

Quick overview of ROS 2 Concepts1

圖(Graph)的概念

ROS 2是一個(gè)基于匿名的發(fā)布訂閱機(jī)制的中間件,允許不同的ROS進(jìn)程間進(jìn)行消息傳遞。
任何ROS 2系統(tǒng)的核心都是ROS圖(Graph),它包含:

  • 節(jié)點(diǎn)Nodes:
    • 一個(gè)使用ROS與其他節(jié)點(diǎn)進(jìn)行通信的實(shí)體
    • 節(jié)點(diǎn)間通過(guò)topic, service,action或parameter進(jìn)行數(shù)據(jù)傳輸
    • 一個(gè)可執(zhí)行程序可以包括一個(gè)或多個(gè)節(jié)點(diǎn)
  • 消息Message:
    • 當(dāng)發(fā)布或訂閱一個(gè)主題topic時(shí)使用到的ROS數(shù)據(jù)類型
  • 主題Topic:
    • 節(jié)點(diǎn)可以向主題發(fā)布消息
    • 節(jié)點(diǎn)可以訂閱主題接收消息
  • 發(fā)現(xiàn)Discovery:
    • 節(jié)點(diǎn)之間決定如何相互通信的過(guò)程

節(jié)點(diǎn)(Node)

  • 節(jié)點(diǎn)是ROS圖的參與者
  • 使用ROS客戶端庫(kù)與其他節(jié)點(diǎn)通信
  • 發(fā)布主題
  • 訂閱主題
  • 使用服務(wù)(Service)
  • 使用操作(Action)
  • 節(jié)點(diǎn)獨(dú)立的可配置參數(shù)
  • 節(jié)點(diǎn)間的連接通過(guò)分布式發(fā)現(xiàn)過(guò)程加以建立
  • 節(jié)點(diǎn)部署
    • 同進(jìn)程
    • 不同進(jìn)程
    • 不同主機(jī)

客戶端庫(kù)(Client Libraries)

ROS客戶端庫(kù)允許用不同編程語(yǔ)言編寫(xiě)的節(jié)點(diǎn)進(jìn)行通信。
有一個(gè)核心ROS客戶端庫(kù),實(shí)現(xiàn)了不同語(yǔ)言的ROS API所需的通用功能。
這使得面向不同語(yǔ)言的庫(kù)可以更易于編寫(xiě),并保持一致性。

ROS2官方團(tuán)隊(duì)維護(hù)了C++和Python兩種語(yǔ)言的客戶端庫(kù)(rclcpp/rclpy)。
此外,ROS社區(qū)開(kāi)發(fā)了其他客戶端庫(kù)包括:2

  • JVM and Android
  • Objective C and iOS
  • C#
  • Swift
  • Node.js
  • Ada
  • _.NET Core, UWP and C#
  • Rust

發(fā)現(xiàn)機(jī)制(Discovery)

節(jié)點(diǎn)發(fā)現(xiàn)通過(guò)ROS2的底層中間件自動(dòng)進(jìn)行,按照下述流程進(jìn)行:

Created with Rapha?l 2.3.0節(jié)點(diǎn)啟動(dòng)向相同ROS domain的節(jié)點(diǎn)告知自己的存在(擁有相同的ROS_DOMAIN_ID)收到通告的節(jié)點(diǎn)回復(fù)自己的信息建立連接節(jié)點(diǎn)間得以通信廣播周期到?yes

在該流程中,節(jié)點(diǎn)會(huì)定期發(fā)布自身的存在,這樣就可以與新發(fā)現(xiàn)的實(shí)體建立連接
節(jié)點(diǎn)離線時(shí),也會(huì)向其他節(jié)點(diǎn)進(jìn)行通知。
節(jié)點(diǎn)只會(huì)同具有兼容的QoS3策略的節(jié)點(diǎn)建立連接。

以之前提到過(guò)的的talker-listener Demo4為例: 在一個(gè)終端中運(yùn)行c++ talker節(jié)點(diǎn)將發(fā)布關(guān)于一個(gè)主題的消息,而在另一個(gè)終端中運(yùn)行的Python listener節(jié)點(diǎn)將訂閱關(guān)于同一主題的消息。
可以看到,這些節(jié)點(diǎn)自動(dòng)發(fā)現(xiàn)彼此,并開(kāi)始交換消息。

參考


  • Quick overview of ROS 2 Concepts ??

  • About ROS 2 client libraries ??

  • Quality of Service ??

  • talker-listener Demo ??

  • 總結(jié)

    以上是生活随笔為你收集整理的ROS2学习(四).ROS 2 核心概念的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。