




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
自定義消息與自定義服務(wù)ROS中通過(guò)std_msgs封裝了一些原生的數(shù)據(jù)類型比如:String、Int32、Int64、Char、Bool、Empty....這些數(shù)據(jù)一般只包含一個(gè)data字段,結(jié)構(gòu)的單一意味著功能上的局限性,當(dāng)傳輸一些復(fù)雜的數(shù)據(jù),std_msgs由于描述性較差而顯得力不從心,這種場(chǎng)景下可以使用自定義的消息類型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開(kāi)發(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ù)分成兩部分,請(qǐng)求與響應(yīng),在srv文件中請(qǐng)求和響應(yīng)使用“---”分割,在包test_service下新建srv目錄,添加Mysrv.srv文件,內(nèi)容如下:#客戶端請(qǐng)求時(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. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 八年級(jí)上冊(cè)《藤野先生》教學(xué)課件
- 黑龍江省綏化市名校2024-2025學(xué)年初三中考全真模擬卷(七)生物試題含解析
- 昆明醫(yī)科大學(xué)《試驗(yàn)設(shè)計(jì)與數(shù)據(jù)處理實(shí)驗(yàn)》2023-2024學(xué)年第二學(xué)期期末試卷
- 遼寧省葫蘆島市錦化高中2025屆高三下第一次學(xué)情調(diào)查化學(xué)試題含解析
- 南昌工程學(xué)院《地基與基礎(chǔ)工程》2023-2024學(xué)年第一學(xué)期期末試卷
- 西安汽車職業(yè)大學(xué)《大眾足球》2023-2024學(xué)年第二學(xué)期期末試卷
- 浙江省寧波市海曙區(qū)2025屆初三下學(xué)期二模(4月)語(yǔ)文試題含解析
- 上海市交大附屬中學(xué)2025年高三下第一次階段考化學(xué)試題試卷含解析
- 四川成都2025屆高考模擬測(cè)試歷史試題(二)含解析
- 邯鄲市雞澤一中高三上學(xué)期第一次月考數(shù)學(xué)試卷(文科)
- 2024-2025學(xué)年高中語(yǔ)文選擇性必修下冊(cè) 第2單元單元檢測(cè)(原卷版)
- 急性胰腺炎完整版2024
- 網(wǎng)評(píng)員培訓(xùn)課件
- 哪吒主題課件模板文檔
- 《四時(shí)用藥例》教案-【中職專用】高二語(yǔ)文同步教學(xué)(高教版2023·拓展模塊下冊(cè))
- 2025年寧波職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)傾向性測(cè)試題庫(kù)及答案(歷年真題)
- 《基于PLC的交通信號(hào)燈控制系統(tǒng)的設(shè)計(jì)》5400字【論文】
- 2024年河南南陽(yáng)師范學(xué)院開(kāi)招聘筆試真題
- 高中數(shù)學(xué)復(fù)習(xí) 導(dǎo)數(shù)壓軸大題歸類 (原卷版)
- 手術(shù)部位標(biāo)識(shí)國(guó)家標(biāo)準(zhǔn)(2023版)
- 數(shù)字政府建設(shè)發(fā)展研究報(bào)告(2024年)
評(píng)論
0/150
提交評(píng)論