版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
ROS應(yīng)用開發(fā)技術(shù)ROS自定義消息接口-服務(wù)(上)01知識回顧02文件創(chuàng)建與編寫03文件運(yùn)行目錄CONTENTS知識回顧自定義服務(wù)消息回顧通過定義.srv文件實(shí)現(xiàn)節(jié)點(diǎn)間服務(wù)通信接口自定義服務(wù)消息支持功能復(fù)雜功能的交互,如運(yùn)動規(guī)劃、圖像處理等文件創(chuàng)建與編寫C++實(shí)訓(xùn)操作進(jìn)入learn_service功能包目錄,新建srv文件夾,創(chuàng)建IntPlus.srv文件操作步驟uint8auint8b---uint8result文件內(nèi)容文件內(nèi)我們可以去定義request和response,以虛線為界,上面是request,下面是response。CMakelist.txt配置<build_depend>message_generation</build_depend><exec_depend>message_runtime</exec_depend>package.xml#在find_package里邊加上message_generationadd_service_files(FILESIntPlus.srv)generate_messages(DEPENDENCIESstd_msgs)CMakeList.txt在package.xml文件中添加構(gòu)建依賴和執(zhí)行依賴,打開CMakeList.txt文件添加編譯選項(xiàng)。編譯與服務(wù)消息查詢rossrvshowlearn_service/IntPluscatkin_make使用catkin_make命令編譯,使用rossrvshow命令查詢自定義服務(wù)消息是否生成。IntPlus_client.cpp文件編寫#include<ros/ros.h>#include"learn_service/IntPlus.h"#include<iostream>usingnamespacestd;intmain(intargc,char**argv){inti,k;cin>>i;cin>>k;ros::init(argc,argv,"IntPlus_client");//初始化ROS節(jié)點(diǎn)ros::NodeHandlenode;//創(chuàng)建節(jié)點(diǎn)句柄ros::service::waitForService("/Two_Int_Plus");
IntPlus_client.cpp文件編寫ros::ServiceClientIntPlus_client=node.serviceClient<learn_service::IntPlus>("/Two_Int_Plus");learn_service::IntPlussrv;srv.request.a=i;srv.request.b=k;ROS_INFO("Callservicetoplus%dand%d",srv.request.a,srv.request.b);IntPlus_client.call(srv);ROS_INFO("Showtheresult:%d",srv.response.result);//顯示服務(wù)調(diào)用結(jié)果
return0;}IntPlus_server文件編#include<ros/ros.h>#include"learn_service/IntPlus.h"boolIntPlusCallback(learn_service::IntPlus::Request&req,learn_service::IntPlus::Response&res){ROS_INFO("number1is:%d,number2is:%d",req.a,req.b);//顯示請求數(shù)據(jù)res.result=req.a+req.b;//反饋結(jié)果為兩數(shù)之和returnres.result;}intmain(intargc,char**argv){ros::init(argc,argv,"IntPlus_server");//ROS節(jié)點(diǎn)初始化ros::NodeHandlen;//創(chuàng)建節(jié)點(diǎn)句柄ros::ServiceServerInt_Plus_service=n.advertiseService("/Two_Int_Plus",IntPlusCallback);ROS_INFO("Readytocaculate.");ros::spin();return0;}CMakeLists.txt配置修改CMakeLists.txt文件,添加右側(cè)內(nèi)容add_executable(IntPlus_clientsrc/IntPlus_client.cpp)target_link_libraries(IntPlus_client${catkin_LIBRARIES})add_dependencies(IntPlus_client${PROJECT_NAME}_generate_messages_cpp)add_executable(IntPlus_serversrc/IntPlus_server.cpp)target_link_libraries(IntPlus_server${catkin_LIBRARIES})add_dependencies(IntPlus_server${PROJECT_NAME}_generate_messages_cpp)文件運(yùn)行程序啟動231rosrunlearn_serviceIntPlus_serverrosrunlearn_serviceIntPlus_client編譯功能包roscore啟動服務(wù)端和客戶端啟動roscorecatkin_makeROS應(yīng)用開發(fā)技術(shù)ROS自定義消息接口-話題(下)01文件編寫02文件運(yùn)行目錄CONTENTS文件編寫模塊化架構(gòu)Information_subscriber.py訂閱者發(fā)布者進(jìn)入learn_topic功能包的scripts文件夾下,編寫一個發(fā)布者和一個訂閱者來使用之前自定義的話題消息Information_publisher.pyInformation_publisher.py文件編寫importrospyfromlearn_topic.msgimportInformation#導(dǎo)入自定義的msgdefinformation_publisher():rospy.init_node('information_publisher',anonymous=True)info_pub=rospy.Publisher('/company_info',Information,queue_size=6)rate=rospy.Rate(10)#設(shè)置循環(huán)的頻率whilenotrospy.is_shutdown():info_msg=Information()info_pany="Yahboom";info_msg.city="Shenzhen";info_pub.publish(info_msg)#發(fā)布消息rospy.loginfo("Thisis%sin%s.",info_pany,info_msg.city)#打印發(fā)布消息rate.sleep()#按照循環(huán)頻率延時if__name__=='__main__':try:information_publisher()exceptrospy.ROSInterruptException:passInformation_subscriber文件編寫importrospyfromlearning_topic.msgimportInformation#導(dǎo)入自定義的msgdefCompanyInfoCallback(msg):rospy.loginfo("company:name:%scity:%s",pany,msg.city)#打印訂閱接收到信息defInfomation_subscriber():rospy.init_node('Infomation_subscriber',anonymous=True)#ROS節(jié)點(diǎn)初始化
#創(chuàng)建一個Subscriber,訂閱名為/company_info的topic,注冊回調(diào)函數(shù)personInfoCallbackrospy.Subscriber("/company_info",Information,CompanyInfoCallback)rospy.spin()#循環(huán)等待回調(diào)函數(shù)if__name__=='__main__':Infomation_subscriber()賦予執(zhí)行權(quán)限為Python文件添加可執(zhí)行權(quán)限。執(zhí)行權(quán)限使用chmod命令添加執(zhí)行權(quán)限,非root用戶需在命令前加sudo。sudochmod
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年股票互換協(xié)議
- 2025年度綠色建筑節(jié)能改造工程承包合同模板2篇
- 2025年度電影院場地租賃合同及觀影安全保障與服務(wù)標(biāo)準(zhǔn)協(xié)議3篇
- 2024版移動網(wǎng)絡(luò)業(yè)務(wù)伙伴合同版B版
- 2025年度婚禮場地借用與策劃服務(wù)合同3篇
- 2025年度訴訟保全擔(dān)保流程規(guī)范細(xì)則合同3篇
- 2025年度池塘休閑漁業(yè)項(xiàng)目租賃協(xié)議3篇
- 2025年水土保持監(jiān)測技術(shù)咨詢與旅游開發(fā)合同3篇
- 二零二五年空調(diào)清洗保養(yǎng)及節(jié)能效益分析合同3篇
- 2025年版健康養(yǎng)老服務(wù)合同4篇
- 供應(yīng)室技能考核操作標(biāo)準(zhǔn)
- 公共政策學(xué)-陳振明課件
- SHSG0522023年石油化工裝置工藝設(shè)計(jì)包(成套技術(shù))內(nèi)容規(guī)定
- 《運(yùn)營管理》案例庫
- 醫(yī)院安全保衛(wèi)部署方案和管理制度
- 我的自我針灸記錄摘錄
- 中醫(yī)學(xué)-五臟-心-課件
- 《駱駝祥子》閱讀記錄卡
- 教育學(xué)原理完整版課件全套ppt教程(最新)
- 醫(yī)療安全不良事件報(bào)告培訓(xùn)PPT培訓(xùn)課件
- 膽管癌的護(hù)理查房
評論
0/150
提交評論