ROS-客户端

在这里插入图片描述
输入以下代码,建立一个功能包(在建立的工作空间里建立功能包,如何建立工作空间见之前的文章)
catkin_create_pkg learning_service roscpp rospy std_msgs geometry_msgs
然后建立一个源文件

#include <ros/ros.h>
#include<turtlesim/Spawn.h>
int main(int argc, char **argv)
{
ros::init(argc,argv,“turtle_spawn”);
ros::NodeHandle node ;

//等待服务器

ros::service::waitForService("/spawn");
ROS_INFO(“the service is already!”);
//创建客户端
ros::ServiceClient add_turtle=node.serviceClientturtlesim::Spawn("/spawn");

//这里也可以先创建客户端
//疑惑点:如果后创建客户端,那等待服务器是谁在等待呢

turtlesim::Spawn srv;//

srv.request.x=2.0;
srv.request.y=2.0;
srv.request.name=“turtle2”;

ROS_INFO(“Call service to spwan turtle[x:%0.6f, y:%0.6f, name:%s]”,
srv.request.x, srv.request.y, srv.request.name.c_str());

add_turtle.call(srv); //调用请求乌龟函数 srv为强求的参数
ROS_INFO(“Spwan turtle successfully [name:%s]”, srv.response.name.c_str());

return 0;
}

设置编译连接
在这里插入图片描述
add_executable(client src/client.cpp)
target_link_libraries(client ${catkin_LIBRARIES})

打开终端
rosrun learning_service client
新打开终端
rosrun turtlesim turtlesim_node

这样就能新请求一个小海龟了


客户端/服务器与发布者/订阅者
客户端发送请求,服务器发送请求的内容给客户端
客户端不请求,服务器内容更新也不会对客户端造成影响

若发布者一直在发布,订阅者便立即进行更新

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值