- 注册时间
- 2013-4-19
- 最后登录
- 2026-1-21
- 阅读权限
- 200
- 积分
- 6551
- 精华
- 0
- 帖子
- 647
    
|
有两套编译命令
1.catkin
2.rosbuild
先写publisher和subscriber 两个例子(python 和 C++)
再写service和client的例子(python 和 C++)
service需要srv文件,和发布订阅的区别是,client可以直接拿到service处理的结果,而且client不会出现在
如果用系统默认的srv(SetBool)
//client.cpp
int main(int argc, char **argv)
{
ros::init(argc, argv, "add_two_ints_client");
ros::NodeHandle n;
ros::ServiceClient client = n.serviceClient<std_srvs::SetBool>("add_two_ints");
std_srvs::SetBool srv;
//srv =
srv.request.data= true;
if(client.call(srv)) {
//ROS_INFO("=====res : %s",srv.response.message);
std::cout<< srv.response.message << std::endl;
}
return 0;
}
//////service.cpp
bool add(std_srvs::SetBool::Request &req, std_srvs::SetBool::Response &res)
{
ROS_INFO("Service rec");
if (req.data == true) {
res.success = true;
res.message = "msg-ok";
} else if (req.data == false) {
res.success = false;
res.message = "msg-false";
}
return true;
}
int main(int argc, char **argv)
{
ros::init(argc, argv, "add_two_ints_server");
ros::NodeHandle n;
ros::ServiceServer service = n.advertiseService("add_two_ints", add);
ROS_INFO("Service Ready");
ros::spin();
return 0;
}
node列表里面 |
|