ROS2学习(四).ROS 2 核心概念
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)題。
- 上一篇: ROS2学习(三).ROS2环境配置
- 下一篇: ROS2学习(六).ROS概念 - 服务