接口可以讓程序之間的依賴降低,便于我們使用別人的代碼,也方便別人使用我們的代碼,這就是ROS的核心目標,減少重復造輪子。
ROS有三種常用的通信機制,分別是話題、服務、動作,通過每一種通信種定義的接口,各種節點才能有機的聯系到一起。
語言無關
為了保證每一個節點可以使用不同語言編程,ROS將這些接口的設計做成了和語言無關的。
比如這里看到的int32表示32位的整型數,int64表示64位的整型數,bool表示布爾值,還可以定義數組、結構體,這些定義在編譯過程中,會自動生成對應到C++、Python等語言里的數據結構。
話題通信接口的定義使用的是.msg文件,由于是單向傳輸,只需要描述傳輸的每一幀數據是什么就行,比如在這個定義里,會傳輸兩個32位的整型數,x、y,我們可以用來傳輸二維坐標的數值。
服務通信接口的定義使用的是.srv文件,包含請求和應答兩部分定義,通過中間的“---”區分,比如之前我們學習的加法求和功能,請求數據是兩個64位整型數a和b,應答是求和的結果sum。
動作是另外一種通信機制,用來描述機器人的一個運動過程,使用.action文件定義。
比如我們讓小海龜轉90度,一邊轉一邊周期反饋當前的狀態,此時接口的定義分成了三個部分,分別是動作的目標;
比如是開始運動,運動的結果,最終旋轉的90度是否完成,還有一個周期反饋;
比如每隔1s反饋一下當前轉到第10度、20度還是30度了,讓我們知道運動的進度。
-
機器人
+關注
關注
211文章
28645瀏覽量
208425 -
服務器
+關注
關注
12文章
9306瀏覽量
86070 -
通信接口
+關注
關注
3文章
240瀏覽量
31065 -
ROS
+關注
關注
1文章
280瀏覽量
17100
發布評論請先 登錄
相關推薦
基于串口的STM32通過rosserial和ROS系統通信的代碼
ROS與STM32是如何進行通信的
什么是ROS?ROS產生、發展和壯大的原因和意義
如何在ROS上使用serial包進行串口通信
RT-Thread實時操作系統與ROS2是怎樣進行通信的
ROS是什么?機器人操作系統ROS的介紹
![<b class='flag-5'>ROS</b>是什么?機器人操作系統<b class='flag-5'>ROS</b>的<b class='flag-5'>介紹</b>](https://file.elecfans.com/web2/M00/49/BC/pYYBAGKhvFaAay5oAAAsU03bGXk340.png)
ROS與STM32通信
![<b class='flag-5'>ROS</b>與STM32<b class='flag-5'>通信</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
ROS基本介紹
![<b class='flag-5'>ROS</b>基本<b class='flag-5'>介紹</b>](https://file1.elecfans.com/web2/M00/88/79/wKgZomRnO_yACCbjAAGtszQoCtg988.jpg)
Unity與ROS鏈接介紹
![Unity與<b class='flag-5'>ROS</b>鏈接<b class='flag-5'>介紹</b>](https://file1.elecfans.com/web2/M00/AE/E2/wKgaomVXMEmASX6AAAHdnUBh7GQ098.jpg)
ROS核心框架介紹
![<b class='flag-5'>ROS</b>核心框架<b class='flag-5'>介紹</b>](https://file1.elecfans.com/web2/M00/B1/AE/wKgZomVcgG6AQ-34AAD1NFzWWHI989.jpg)
評論