全国统一热线:

14384015347

banner图
新闻动态

NEWS

产品中心PRDUCTS

技术支持RECRUITMENT

    技术支持分售前技术支持和售后技术支持,售前技术支持是指在销售遇到无法解答的产品问题时,售前技术支持给予帮助;售后技术支持是指产品公司为其产品用户提供的售后服务的一种形式,帮助用户诊断并解决其在使用产品...
点击查看更多
行业资讯

当前位置: 首页 > 新闻动态 > 行业资讯

kycom-《ROS入门》第10讲:(服务数据的界说与使用编程实现)

发布时间:2026-03-01 02:02:03

本文摘要:如何自界说服务数据界说srv文件;界说srv文件的花样://包罗请求(request)和响应( reply) 两部门请求数据类型(request)--- 响应数据类型(respond)实现功效:自界说一个服务数据,编写两个法式(一个服务端,一个客户端),客户端请求数据,服务端举行相应的响应。

kycom-《ROS入门》第10讲:(服务数据的界说与使用编程实现)(图1)

如何自界说服务数据界说srv文件;界说srv文件的花样://包罗请求(request)和响应( reply) 两部门请求数据类型(request)--- 响应数据类型(respond)实现功效:自界说一个服务数据,编写两个法式(一个服务端,一个客户端),客户端请求数据,服务端举行相应的响应。编程思路:第一步,自界说服务数据,即界说一个srv(Person.srv)文件(在learning_service/srv目录下)备注:建立srv: mkdir srvPerson.srv详细内容如下:string nameuint8 ageuint8 genderuint8 male=1uint8 female=2---result备注:建立功效包doubixiaohanhan:message_generationmessage_runtime第二步,在package.xml中添加功效包的依赖(在doubixiaohanhan/package.xml里) find_package( …… message_generation) add_service_files(FILES Person.srv)generate_messages(DEPENDENCIES std_msgs)catkin_package(…… message_runtime)第三步,在CMakeLists.txt添加编译选项1,第四步,编译生成语言相关文件第五步,编写服务端测试法式(在doubixiaohanhan/src目录下)#include#include"doubixiaohanhan/Person.h"bool personCallback(doubixiaohanhan::Person::Request &requ,doubixiaohanhan::Person::Response &resp){ROS_INFO("name:%s age:%d gender:%d",requ.name.c_str(),requ.age,requ.gender);resp.result = "ok";return true;}int main(int argc,char **argv){ros::init(argc,argv,"person_server");ros::NodeHandle n;ros::ServiceServer person_service = n.advertiseService("/doubi",personCallback);ROS_INFO("Ready to display the person information");ros::spin();return 0;}第六步,编写客户端测试法式(在doubixiaohanhan/src目录下)#include#include"doubixiaohanhan/Person.h"int main(int argc ,char **argv){ros::init(argc,argv,"person_client");ros::NodeHandle node;ros::service::waitForService("doubi");ros::ServiceClient person_client = node.serviceClient("/doubi");doubixiaohanhan::Person srv;srv.request.name = "doubixiaohanhan";srv.request.age = 18;srv.request.gender = doubixiaohanhan::Person::Request::male;ROS_INFO("Call service to show person[name:%s, age:%d,gender:%d]",srv.request.name.c_str(),srv.request.age,srv.request.gender);person_client.call(srv);ROS_INFO("Show person result:%s",srv.response.result.c_str());return 0;}第七步,添加对上述两个法式的编译依赖add_executable(person_server src/service1.cpp)target_link_libraries(person_server ${catkin_LIBRARIES})add_dependencies(person_server ${PROJECT_NAME}_gencpp)add_executable(person_client src/client1.cpp)target_link_libraries(person_client ${catkin_LIBRARIES})add_dependencies(person_client ${PROJECT_NAME}_gencpp)第八步,编译上述写好的服务端和客户端的法式1,cd ~/catkin_ws 2, catkin_make3,source devel/setup.bash第九步,测试1, roscore2, rosrun doubixiaohanhan person_server3, rosrun doubixiaohanhan person_client增补:c_str()函数返回一个指向正规C字符串的指针常量。

kycom-《ROS入门》第10讲:(服务数据的界说与使用编程实现)(图2)

kycom-《ROS入门》第10讲:(服务数据的界说与使用编程实现)(图3)


本文关键词:kycom,ky.com,ky com

本文来源:kycom-www.tlo62r14.com

全国统一热线

14384015347
+地址:江西省赣州市南康区筑文大楼62号
+传真:047-27296428
+邮箱:admin@tlo62r14.com

友情链接

百度 搜狗 好搜
微信平台

微信平台

手机官网

手机官网