zoukankan      html  css  js  c++  java
  • ROSservice 通信方式

    操作演示,对 service 通信的理解请看:点击打开链接

    1. 使用 rosservice

    1.1  rosservice list

    假设小乌龟节点仍在运行  rosrun turtlesim turtlesim_node

    运行:

    rosservice list

    结果:

    list 命令显示turtlesim节点提供了9个服务:重置(reset), 清除(clear), 再生(spawn), 终止(kill), turtle1/set_pen, /turtle1/teleport_absolute, /turtle1/teleport_relative, turtlesim/get_loggers, and turtlesim/set_logger_level. 同时还有另外两个rosout节点提供的服务: /rosout/get_loggers and /rosout/set_logger_level.


    1.2 rosservice type

    命令格式:

    rosservice call [service] [args]

    运行:

    rosservice type clear
    
    结果:


    服务的类型为空(empty),这表明在调用这个服务是不需要参数(比如,请求不需要发送数据,响应也没有数据)


    1.3 rosservice call

    rosservice call命令调用服务
    rosservice call clear
    
    这个命令会清除之前的轨迹。

    通过查看再生(spawn)服务的信息,了解带参数的服务:

    rosservice type spawn| rossrv show
    


    这个服务使得我们可以在给定的位置和角度生成一只新的乌龟。名字参数是可选的,不设具体的名字,让turtlesim自动创建一个:

    rosservice call spawn 2 2 0.2 ""
    


    2. srv文件

    1.写法


    srv文件的格式如上, --- 是分割线,

    上面相当于 “问”,下面相当于 “答”。

    如上例,“问”的部分为 bool 类型的检测,“答”的部分为返回检测到的结果,类型是一个数组,这个数组又定义在 msg 文件中(注: srv 只能嵌套 msg 文件),其中的 JointPOS[] 又定义在另一 msg 文件中。

    2.修改

    很关键的一步:我们要确保srv文件被转换成C++,Python和其他语言的源代码。

    现在认为,已经如上一篇:点击打开链接所介绍的 msg,在CMakeLists.txt文件中增加了对message_generation的依赖,message_generationmsgsrv都起作用。

    同样,跟msg文件类似,你也需要在CMakeLists.txt文件中做一些修改。查看上边的说明,增加额外的依赖项。

    删掉#,去除对下边语句的注释:


    总结

    msg 和 srv 写完之后需要修改如下部分:


  • 相关阅读:
    JS基础(一)异常错误
    实验四 主存空间的分配和回收
    实验三、进程调度模拟程序实验
    学习进度条
    软件工程学期总结
    实验四、主存空间的分配和回收
    诚信与道德
    【操作系统】实验三、进程调度模拟程序实验
    软件工程---在此基础上,进行软件的改进
    【操作系统】实验二 作业调度模拟程序
  • 原文地址:https://www.cnblogs.com/NikkiNikita/p/9450738.html
Copyright © 2011-2022 走看看