機(jī)器人操作系統(tǒng)ROS原理及應(yīng)用 課件 25 自定義消息與自定義服務(wù)_第1頁
機(jī)器人操作系統(tǒng)ROS原理及應(yīng)用 課件 25 自定義消息與自定義服務(wù)_第2頁
機(jī)器人操作系統(tǒng)ROS原理及應(yīng)用 課件 25 自定義消息與自定義服務(wù)_第3頁
機(jī)器人操作系統(tǒng)ROS原理及應(yīng)用 課件 25 自定義消息與自定義服務(wù)_第4頁
機(jī)器人操作系統(tǒng)ROS原理及應(yīng)用 課件 25 自定義消息與自定義服務(wù)_第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

自定義消息與自定義服務(wù)ROS中通過std_msgs封裝了一些原生的數(shù)據(jù)類型比如:String、Int32、Int64、Char、Bool、Empty....這些數(shù)據(jù)一般只包含一個(gè)data字段,結(jié)構(gòu)的單一意味著功能上的局限性,當(dāng)傳輸一些復(fù)雜的數(shù)據(jù),std_msgs由于描述性較差而顯得力不從心,這種場景下可以使用自定義的消息類型ROS中的自定義消息通常存放在包的msg子目錄中,消息文件的擴(kuò)展名為.msg

一、自定義消息創(chuàng)建自定義消息,主要步驟為:1、在已有的包或新建立的包中,按照固定格式創(chuàng)建msg文件2、編輯配置文件3、編譯生成可以被Python或C++調(diào)用的中間文件自定義消息時(shí),可以單獨(dú)建立一個(gè)包存放這些自定義消息文件;也可以在某個(gè)包中建立自定義消息文件。本節(jié)單獨(dú)建立包存放自定義消息,該消息包含人的信息:姓名、身高、年齡等。包名為test_message,依賴功能包:roscpprospystd_msgs

一、自定義消息1、創(chuàng)建msg文件創(chuàng)建功能包test_message,依賴功能包:roscpprospystd_msgs,然后新建msg

目錄,添加文件Person.msg,需要注意的是:文件名Person就是就是消息類型名stringnameuint16agefloat64height

一、自定義消息Person消息的成員變量和類型(由std_msgs定義)2、編輯配置文件(1)在配置文件package.xml中添加消息編譯依賴與消息執(zhí)行依賴

<build_depend>message_generation</build_depend><exec_depend>message_runtime</exec_depend>

一、自定義消息2、編輯配置文件(2)修改配置文件CMakeLists.txt文件find_package節(jié)在CMakeLists.txt文件find_package節(jié)里添加消息編譯依賴message_generationmessage_generation是生成自定義消息文件的必須項(xiàng),message_generation依賴std_msgs。最終這兩個(gè)包都必須存在。find_package(catkinREQUIREDCOMPONENTSroscpprospystd_msgs

message_generation)

一、自定義消息2、編輯配置文件(3)修改配置文件CMakeLists.txt文件add_message_files節(jié)在CMakeLists.txt文件add_message_files節(jié)指定要生成的自定義消息文件名為Person.msg,add_message_files(FILES

Person.msg)

一、自定義消息2、編輯配置文件(4)修改配置文件CMakeLists.txt文件generate_messages節(jié)指定generate_messages包生成消息時(shí)依賴于std_msgsgenerate_messages(DEPENDENCIESstd_msgs)

一、自定義消息2、編輯配置文件(5)修改配置文件CMakeLists.txt文件catkin_package節(jié)設(shè)置執(zhí)行依賴包為roscpprospystd_msgsmessage_runtimecatkin_package(CATKIN_DEPENDSroscpprospystd_msgsmessage_runtime)

一、自定義消息3、編譯配置文件修改完成后,在VScode中按下ctrl+shift+B編譯:編譯后生成了可以被調(diào)用的文件:C++調(diào)用的文件(~/catkin_ws/devel/include/test_message/Person.h)C代碼引用格式:#include“test_message/Person.h”Python調(diào)用的文件(~/catkin_ws/devel/lib/python3/dist-packages/test_message/msg)Python代碼引用格式:from

test_message.msg

import

Person

一、自定義消息1、發(fā)布者程序

二、自定義消息的發(fā)布者/訂閱者程序2、訂閱者程序

二、自定義消息的發(fā)布者/訂閱者程序ROS開發(fā)中,常常需要自定義服務(wù)需求。本節(jié)以自定義完成兩個(gè)數(shù)相加的服務(wù)器為例介紹自定義服務(wù)的步驟。這個(gè)例子中,客戶端提交兩個(gè)整數(shù)至服務(wù)端,服務(wù)端求和并響應(yīng)結(jié)果到客戶端。在此之前,需要?jiǎng)?chuàng)建服務(wù)器與客戶端通信的數(shù)據(jù)載體,即自定義服務(wù)類型。創(chuàng)建自定義服務(wù)srv文件內(nèi)的可用數(shù)據(jù)類型與msg文件一致,且定義srv實(shí)現(xiàn)流程與自定義msg實(shí)現(xiàn)流程類似

三、自定義服務(wù)1.定義srv文件服務(wù)通信中,數(shù)據(jù)分成兩部分,請求與響應(yīng),在srv文件中請求和響應(yīng)使用“---”分割,在包test_service下新建srv目錄,添加Mysrv.srv文件,內(nèi)容如下:#客戶端請求時(shí)發(fā)送的兩個(gè)數(shù)字int32num1int32num2---#服務(wù)器響應(yīng)發(fā)送的數(shù)據(jù)int32sum

三、自定義服務(wù)2、編輯配置文件(1)在配置文件package.xml中添加消息編譯依賴與消息執(zhí)行依賴(與自定義消息相同)

<build_depend>message_generation</build_depend><exec_depend>message_runtime</exec_depend>

三、自定義服務(wù)2、編輯配置文件(2)修改配置文件CMakeLists.txt文件find_package節(jié)(與自定義消息相同)在CMakeLists.txt文件find_package節(jié)里添加消息編譯依賴message_generationmessage_generation是生成自定義消息文件的必須項(xiàng),message_generation依賴std_msgs。最終這兩個(gè)包都必須存在。find_package(catkinREQUIREDCOMPONENTSroscpprospystd_msgs

turtlesim

message_generation)

三、自定義服務(wù)2、編輯配置文件(3)修改配置文件CMakeLists.txt文件add_service_files節(jié)在CMakeLists.txt文件add_service_files節(jié)指定要生成的自定義消息文件名為Mysrv.srv,add_service_files(FILES

Mysrv.srv)

三、自定義服務(wù)2、編輯配置文件(4)修改配置文件CMakeLists.txt文件generate_messages節(jié)(與自定義消息相同)指定generate_messages包生成消息時(shí)依賴于std_msgsgenerate_messages(DEPENDENCIES

std_msgs)

三、自定義服務(wù)2、編輯配置文件(5)修改配置文件CMakeLists.txt文件catkin_package節(jié)設(shè)置執(zhí)行依賴包為roscpprospystd_msgsmessage_runtimecatkin_package(CATKIN_DEPENDSroscpprospystd_msgsmessage_runtime)

三、自定義服務(wù)3、編譯配置文件修改完成后,在VScode中按下ctrl+shift+B編譯:編譯后生成了可以被調(diào)用的服務(wù)文件:C++調(diào)用的文件(~/catkin_ws/devel/include/test_service/Mysrv.h)C代碼引用格式:#include“test_mess

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論