接口可以讓程序之間的依賴(lài)降低,便于我們使用別人的代碼,也方便別人使用我們的代碼,這就是ROS的核心目標(biāo),減少重復(fù)造輪子。
ROS有三種常用的通信機(jī)制,分別是話題、服務(wù)、動(dòng)作,通過(guò)每一種通信種定義的接口,各種節(jié)點(diǎn)才能有機(jī)的聯(lián)系到一起。
語(yǔ)言無(wú)關(guān)
為了保證每一個(gè)節(jié)點(diǎn)可以使用不同語(yǔ)言編程,ROS將這些接口的設(shè)計(jì)做成了和語(yǔ)言無(wú)關(guān)的。
比如這里看到的int32表示32位的整型數(shù),int64表示64位的整型數(shù),bool表示布爾值,還可以定義數(shù)組、結(jié)構(gòu)體,這些定義在編譯過(guò)程中,會(huì)自動(dòng)生成對(duì)應(yīng)到C++、Python等語(yǔ)言里的數(shù)據(jù)結(jié)構(gòu)。
話題通信接口的定義使用的是.msg文件,由于是單向傳輸,只需要描述傳輸?shù)拿恳粠瑪?shù)據(jù)是什么就行,比如在這個(gè)定義里,會(huì)傳輸兩個(gè)32位的整型數(shù),x、y,我們可以用來(lái)傳輸二維坐標(biāo)的數(shù)值。
服務(wù)通信接口的定義使用的是.srv文件,包含請(qǐng)求和應(yīng)答兩部分定義,通過(guò)中間的“---”區(qū)分,比如之前我們學(xué)習(xí)的加法求和功能,請(qǐng)求數(shù)據(jù)是兩個(gè)64位整型數(shù)a和b,應(yīng)答是求和的結(jié)果sum。
動(dòng)作是另外一種通信機(jī)制,用來(lái)描述機(jī)器人的一個(gè)運(yùn)動(dòng)過(guò)程,使用.action文件定義。
比如我們讓小海龜轉(zhuǎn)90度,一邊轉(zhuǎn)一邊周期反饋當(dāng)前的狀態(tài),此時(shí)接口的定義分成了三個(gè)部分,分別是動(dòng)作的目標(biāo);
比如是開(kāi)始運(yùn)動(dòng),運(yùn)動(dòng)的結(jié)果,最終旋轉(zhuǎn)的90度是否完成,還有一個(gè)周期反饋;
比如每隔1s反饋一下當(dāng)前轉(zhuǎn)到第10度、20度還是30度了,讓我們知道運(yùn)動(dòng)的進(jìn)度。
-
機(jī)器人
+關(guān)注
關(guān)注
212文章
29280瀏覽量
210895 -
服務(wù)器
+關(guān)注
關(guān)注
12文章
9596瀏覽量
86983 -
通信接口
+關(guān)注
關(guān)注
3文章
247瀏覽量
31330 -
ROS
+關(guān)注
關(guān)注
1文章
283瀏覽量
17495
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
基于串口的STM32通過(guò)rosserial和ROS系統(tǒng)通信的代碼
ROS與STM32是如何進(jìn)行通信的
如何完成ROS與STM32之間的串口通信呢
什么是ROS?ROS產(chǎn)生、發(fā)展和壯大的原因和意義
如何在ROS上使用serial包進(jìn)行串口通信
RT-Thread實(shí)時(shí)操作系統(tǒng)與ROS2是怎樣進(jìn)行通信的
ROS是什么?機(jī)器人操作系統(tǒng)ROS的介紹

ROS與STM32通信

ROS移動(dòng)機(jī)器人的通信接口電路設(shè)計(jì)

ROS基本介紹

ROS1的通信架構(gòu)的基礎(chǔ)通信方式及相關(guān)概念

Unity與ROS鏈接介紹

ROS核心框架介紹

評(píng)論