(9)ROS学习-服务调用实操-系列学习于Autolabor

1.实现向 turtlesim 发送请求,在乌龟显示节点的窗体指定位置生成一乌龟。

2.流程和上一个文章的话题订阅差不多。先获取服务名称与服务消息。启动小海龟节点。先启动roscore  然后启动rosrun turtlesim turtlesim_node 

 3.查看服务列表   rosservice list

 /spawn翻译为产卵,很形象的说明这是小海龟服务。 rosservice type /spawn查看服务类型

rossrv info turtlesim/Spawn 查看消息格式

 从上到下是,乌龟的x,y坐标,角度,名字,下面是返回值(响应后的返回值)

4.实现自己的功能包。如果是新建的功能包,依赖要有roscpp rospy std_msgs turtlesim,我用上一个文章的功能包,加过依赖了,所以就不用在加了。直接新建一个test_spawn.cpp,写代码。

#include"ros/ros.h"
#include"turtlesim/Spawn.h"

int main(int argc, char *argv[])
{
    setlocale(LC_ALL,"");
    // 初始化 ros 节点
    ros::init(argc,argv,"set_turtle");
    // 创建 ros 句柄
    ros::NodeHandle nh;
    // 创建 service 客户端
    ros::ServiceClient client = nh.serviceClient<turtlesim::Spawn>("/spawn");
    //等待服务启动
    ros::service::waitForService("/spawn");
    //发送请求
    turtlesim::Spawn spawn;
    spawn.request.x = 1.0;
    spawn.request.y = 1.0;
    spawn.request.theta = 1.57;//90度
    spawn.request.name = "my_spawn";
    bool flag = client.call(spawn);//接受响应
    if (flag)
    {
        ROS_INFO("新的小海龟生成,名字%s",spawn.response.name.c_str());
    }
    else
    {
        ROS_INFO("小海龟生成失败!");
    }

    return 0;
}

然后配置相关文件

 编译,然后运行

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值