




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
ROS應(yīng)用開發(fā)技術(shù)ROS自定義消息接口-服務(wù)(上)01知識回顧02文件創(chuàng)建與編寫03文件運行目錄CONTENTS知識回顧自定義服務(wù)消息回顧通過定義.srv文件實現(xiàn)節(jié)點間服務(wù)通信接口自定義服務(wù)消息支持功能復(fù)雜功能的交互,如運動規(guī)劃、圖像處理等文件創(chuàng)建與編寫C++實訓(xù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文件添加編譯選項。編譯與服務(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é)點ros::NodeHandlenode;//創(chuàng)建節(jié)點句柄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é)點初始化ros::NodeHandlen;//創(chuàng)建節(jié)點句柄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)文件運行程序啟動231rosrunlearn_serviceIntPlus_serverrosrunlearn_serviceIntPlus_client編譯功能包roscore啟動服務(wù)端和客戶端啟動roscorecatkin_makeROS應(yīng)用開發(fā)技術(shù)ROS自定義消息接口-話題(下)01文件編寫02文件運行目錄CONTENTS文件編寫模塊化架構(gòu)Information_subscriber.py訂閱者發(fā)布者進入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é)點初始化
#創(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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 流動科技館觀后感范文
- 海洋增材制造產(chǎn)業(yè)發(fā)展概述
- 海洋航道建設(shè)與維護
- 老年護理介紹課件教學(xué)
- 拆除工程合同履約及終止合同
- 夫妻離婚后彩禮返還及財產(chǎn)分割協(xié)議
- 材料物理晶體物理物理物理物理物理物理電化學(xué)合同
- 邊疆古代民族舞蹈考古合同
- 餐飲行業(yè)拆伙退伙協(xié)議書(財務(wù)清算)
- 牛場租賃與綠色養(yǎng)殖技術(shù)支持合同
- DIP支付下的病案首頁填寫
- 《不銹鋼培訓(xùn)知識》課件
- 2024秋季期末全體教師大會上初中校長講話:春華秋實又一載接續(xù)奮斗開新篇
- 2025年浙江杭州市西湖區(qū)專職社區(qū)招聘85人歷年高頻重點提升(共500題)附帶答案詳解
- 《AIB審核基礎(chǔ)》課件
- KCA試題庫完整版
- 國家電網(wǎng)安規(guī)線路培訓(xùn)
- 圍手術(shù)期管理制度及流程
- 【高分復(fù)習筆記】吳于廑《世界史·近代史編(上下卷)》(第2版)筆記和典型題(含考研真題)詳解
- 七年級下冊古詩詞對比閱讀訓(xùn)練-2025年中考語文復(fù)習之古代詩歌閱讀
- 配合、協(xié)調(diào)、服務(wù)方案
評論
0/150
提交評論