ROS服务和客户端
来源:互联网 发布:云计算架构师要求 编辑:程序博客网 时间:2024/05/18 00:38
TargetTabletopSrv.srv
string Objectstring TargetTabletop---bool FeedBackFlag
FeedBackFlag.msg
bool FeedBackFlag
TargetTabletop.msg
string Objectstring TargetTabletop
创建msg 和srv
--------------------------------------------------
grasp_object_tabletop_server.cpp
创建服务:
/*定义一个服务,来处理数据;并且发布反馈消息*/#include "ros/ros.h"#include "beginner_tutorials/TargetTabletop.h"#include "beginner_tutorials/TargetTabletopSrv.h"#include <iostream>#include "beginner_tutorials/FeedBackFlag.h"using namespace std;beginner_tutorials::FeedBackFlag flag ;bool grabaction_feedback(beginner_tutorials::TargetTabletopSrv::Request &MSG,\beginner_tutorials::TargetTabletopSrv::Response &msg)//grab_feedback{ int num = 0; if(MSG.Object == "Object"&& MSG.TargetTabletop == "TargetTabletop" )//判断是否接收到的值为此,可以根据需要进行{cout<<"receive the message from the client"<<endl; msg.FeedBackFlag = true; cout<<"succeed to send the Feedback"<<endl; num = 1; } if(num == 1) { flag.FeedBackFlag = true; }return true;}int main( int argc,char *argv[] ){ ros::init(argc,argv,"grasp_object_tabletop_service"); ros::NodeHandle n; ros::ServiceServer service = n.advertiseService("grasp_object_tabletop", grabaction_feedback); //定义服务 ros::Publisher feedback_ = n.advertise<beginner_tutorials::FeedBackFlag>("feedback_grasp_object_tabletop",10); ros::Rate loop_rate(20); ROS_INFO("Ready to receive the message from the grasp_object_tabletop."); while(ros::ok()) { if(flag.FeedBackFlag == true) { feedback_.publish(flag); } ros::spinOnce(); loop_rate.sleep();} return 0;}
定义头文件grasp.h
/*定义一个头文件,创建一个类:GraspService,*/#include "ros/ros.h"#include "beginner_tutorials/TargetTabletop.h"#include "beginner_tutorials/TargetTabletopSrv.h"#include <iostream>class GraspService{public:GraspService();//构造函数~GraspService();//析构函数ros::Subscriber sub;//接收ros::ServiceClient client;//服务的客户端void callback(const beginner_tutorials::TargetTabletop msg);//定义函数};grasp.cpp
#include "beginner_tutorials/grasp.h"#include <iostream>using namespace std;GraspService::GraspService(){}GraspService::~GraspService(){}void GraspService::callback(const beginner_tutorials::TargetTabletop msg)//定义一个.msg文件,当接收topic的情况,进入子程序{beginner_tutorials::TargetTabletopSrv srv;//创建一个.srv文件,并且定义一个服务srv srv.request.Object = msg.Object; srv.request.TargetTabletop = msg.TargetTabletop; if (client.call(srv))//调用服务 { cout<<"succeed to call service"<<endl; } else { ROS_ERROR("Failed to call service !!!!!!!!!!!!"); } }
main.cpp
#include "beginner_tutorials/grasp.h"int main(int argc, char *argv[]){ros::init(argc, argv, "grasp_object_tabletop");ros::NodeHandle n; GraspService *graspService = new GraspService();// graspService->client = n.serviceClient<beginner_tutorials::TargetTabletopSrv>("grasp_object_tabletop");//clientgraspService->sub = n.subscribe("goal_grasp_object_tabletop",10, &GraspService::callback, graspService);//msg ros::Rate r(10.0); while(n.ok()) { ros::spin(); r.sleep(); } return 0;}
0 0
- ROS服务和客户端
- ROS)服务和参数
- ROS服务和参数
- 创建ROS消息和ROS服务
- 创建ROS消息和ROS服务
- ROS Learning-009 beginner_Tutorials ROS服务 和 ROS参数
- ROS入门_1.13 创建ROS消息和ROS服务
- ROS总结——ROS消息和ROS服务
- ROS教程(十):创建ROS消息和ROS服务
- ROS笔记:(7)创建ROS消息和ROS服务
- ROS学习笔记十:用C++编写一个简单的服务和客户端
- ROS 创建服务和请求
- rosparam和ROS参数服务
- ROS总结——ROS服务器和客户端
- ROS学习-创建/测试服务端和客户端
- ROS学习--(七)理解ROS服务和参数
- ROS学习--(十一)创建ROS的信息和服务
- 第八节---ROS操作系统----ROS服务和参数
- sp2-0734:未知的命令开头'imp 忽略了剩余行
- 带着被缚的翅膀飞行
- LeetCode | Linked List Cycle II
- 数据库的语句执行顺序(必看)
- C++算法之 合并两个有序链表
- ROS服务和客户端
- 0099 Java设计模式--策略模式Context的必要性【进阶】
- 亚马逊大数据云会议上遗漏的一件事
- 剑指offer系列源码-矩形覆盖
- JQ方法大全
- git 的使用
- 理解viewport与device-width
- JavaScript学习第十一课--for循环
- oracle数据库导入导出命令!