最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

2.1 通信機(jī)制簡介

2023-09-15 14:07 作者:猛獅集訓(xùn)營  | 我要投稿

在ROS2中通信方式雖然有多種,但是不同通信方式的組成要素都是類似的,比如:通信是雙方或多方行為、通信時都需要將不同的通信對象關(guān)聯(lián)、都有各自的模型、交互數(shù)據(jù)時也必然涉及到數(shù)據(jù)載體等等。本節(jié)將會介紹通信中涉及到的一些術(shù)語。

1.節(jié)點(diǎn)

在通信時,不論采用何種方式,通信對象的構(gòu)建都依賴于節(jié)點(diǎn)(Node),在ROS2中,一般情況下每個節(jié)點(diǎn)都對應(yīng)某一單一的功能模塊(例如:雷達(dá)驅(qū)動節(jié)點(diǎn)可能負(fù)責(zé)發(fā)布雷達(dá)消息,攝像頭驅(qū)動節(jié)點(diǎn)可能負(fù)責(zé)發(fā)布圖像消息)。一個完整的機(jī)器人系統(tǒng)可能由許多協(xié)同工作的節(jié)點(diǎn)組成,ROS2中的單個可執(zhí)行文件(C++程序或Python程序)可以包含一個或多個節(jié)點(diǎn)。

2.話題

話題(Topic)是一個紐帶,具有相同話題的節(jié)點(diǎn)可以關(guān)聯(lián)在一起,而這正是通信的前提。并且ROS2是跨語言的,有的節(jié)點(diǎn)可能是使用C++實(shí)現(xiàn),有的節(jié)點(diǎn)可能是使用Python實(shí)現(xiàn)的,但是只要二者使用了相同的話題,就可以實(shí)現(xiàn)數(shù)據(jù)的交互。

3.通信模型

不同的通信對象通過話題關(guān)聯(lián)到一起之后,以何種方式實(shí)現(xiàn)通信呢?在ROS2中,常用的通信模型有四種:

1.話題通信:是一種單向通信模型,在通信雙方中,發(fā)布方發(fā)布數(shù)據(jù),訂閱方訂閱數(shù)據(jù),數(shù)據(jù)流單向的由發(fā)布方傳輸?shù)接嗛喎健?/p>

2.服務(wù)通信:是一種基于請求響應(yīng)的通信模型,在通信雙方中,客戶端發(fā)送請求數(shù)據(jù)到服務(wù)端,服務(wù)端響應(yīng)結(jié)果給客戶端。

3.動作通信:是一種帶有連續(xù)反饋的通信模型,在通信雙方中,客戶端發(fā)送請求數(shù)據(jù)到服務(wù)端,服務(wù)端響應(yīng)結(jié)果給客戶端,但是在服務(wù)端接收到請求到產(chǎn)生最終響應(yīng)的過程中,會發(fā)送連續(xù)的反饋信息到客戶端。

4.參數(shù)服務(wù):是一種基于共享的通信模型,在通信雙方中,服務(wù)端可以設(shè)置數(shù)據(jù),而客戶端可以連接服務(wù)端并操作服務(wù)端數(shù)據(jù)。

4.接口

在通信過程中,需要傳輸數(shù)據(jù),就必然涉及到數(shù)據(jù)載體,也即要以特定格式傳輸數(shù)據(jù)。在ROS2中,數(shù)據(jù)載體稱之為接口(interfaces)。通信時使用的數(shù)據(jù)載體一般需要使用接口文件定義。常用的接口文件有三種:msg文件、srv文件與action文件。每種文件都可以按照一定格式定義特定數(shù)據(jù)類型的“變量”。

1.msg文件

msg文件是用于定義話題通信中數(shù)據(jù)載體的接口文件,一個典型的.msg文件示例如下。

int64 num1 int64 num2

在文件中聲明了一些被傳輸?shù)念愃朴贑++變量的數(shù)據(jù)。

2.srv文件

srv文件是用于定義服務(wù)通信中數(shù)據(jù)載體的接口文件,一個典型的.srv文件示例如下。

int64 num1 int64 num2 --- int64 sum

文件中聲明的數(shù)據(jù)被---分割為兩部分,上半部分用于聲明請求數(shù)據(jù),下半部分用于聲明響應(yīng)數(shù)據(jù)。

3.action文件

action文件使用用于定義動作通信中數(shù)據(jù)載體的接口文件,一個典型的.action文件示例如下。

int64 num --- int64 sum --- float64 progress

文件中聲明的數(shù)據(jù)被---分割為三部分,上半部分用于聲明請求數(shù)據(jù),中間部分用于聲明響應(yīng)數(shù)據(jù),下半部分用于聲明連續(xù)反饋數(shù)據(jù)。

4.變量類型

不管是何種接口文件,在文件中每行聲明的數(shù)據(jù)都由字段類型和字段名稱組成,可以使用的字段類型有:

  • int8, int16, int32, int64 (或者無符號類型: uint*)

  • float32, float64

  • string

  • time, duration

  • 其他msg文件

  • 變長數(shù)組和定長數(shù)組

ROS中還有一種特殊類型:Header,標(biāo)頭包含時間戳和ROS2中常用的坐標(biāo)幀信息。許多接口文件的第一行包含Header標(biāo)頭。

另外,需要說明的是:

參數(shù)通信的數(shù)據(jù)無需定義接口文件,參數(shù)通信時數(shù)據(jù)會被封裝為參數(shù)對象,參數(shù)客戶端和服務(wù)端操作的都是參數(shù)對象。

本階段大家對數(shù)據(jù)載體做簡單的了解即可,其具體使用后續(xù)章節(jié)有詳細(xì)介紹。

準(zhǔn)備工作

1.請先創(chuàng)建工作空間ws01_plumbing,本章以及第3章代碼部分內(nèi)容存儲在該工作空間下。

2.實(shí)際應(yīng)用中一般建議創(chuàng)建專門的接口功能包定義接口文件,當(dāng)前教程也遵循這一建議,預(yù)先創(chuàng)建教程所需使用的接口功能包(需要注意的是,目前為止無法在Python功能包中定義接口文件),終端下進(jìn)入工作空間的src目錄,執(zhí)行如下命令:

ros2 pkg create --build-type ament_cmake base_interfaces_demo

該功能包將用于保存本章教程中自定義的接口文件。

B站有完整的ros系列教程視頻,可以觀看完整內(nèi)容ros課程ROS2理論與實(shí)踐

更多內(nèi)容將在猛獅知識星球社區(qū)更新最新課程,后續(xù)將推出更多優(yōu)質(zhì)內(nèi)容——詳情可關(guān)注猛獅集訓(xùn)營公眾號和猛獅集訓(xùn)營官方網(wǎng)站。

2.1 通信機(jī)制簡介的評論 (共 條)

分享到微博請遵守國家法律
泸水县| 正蓝旗| 嘉荫县| 平顶山市| 明光市| 临高县| 广汉市| 阳高县| 张家口市| 长宁县| 馆陶县| 措勤县| 彩票| 定西市| 北安市| 会东县| 怀集县| 泰和县| 临泽县| 民乐县| 昌吉市| 中江县| 瑞安市| 康保县| 九龙城区| 吕梁市| 平安县| 冷水江市| 南和县| 沂水县| 郯城县| 古丈县| 井冈山市| 十堰市| 合肥市| 盘山县| 修水县| 红原县| 华坪县| 朔州市| 谢通门县|