ROS(3~5)话题、服务、参数

3. 话题

3.1. 发布与订阅

  • 容易理解的是,话题是节点与节点之前通信的一种方式,(服务是节点之间通信的另一种方式)
  • 话题与服务的区别是:
    节点只管投递,数据可能会丢失;
    服务会有request和response,相当于RPC调用。
    话题用.msg文件定义数据,服务用.srv文件定义数据
  • 代码示例:
    1、pos_subscriber和velocity_publisher是订阅和发布ros系统已有的一个话题;利用advertise()创建发布者对象。
    2、person_pubsher和person_subscriber是自定义了一个话题来进行测试。利用subscribe()创建订阅者对象。

3.2. 自定义话题消息

  • 创建Xxx.msg文件,和编程语言无关,建议放到src同级目录,统一叫msg的文件夹中,首字母大写
  • 在package.xml中添加创建message的功能包依赖
    <build_export_depend>message_generation</build_export_depend>
    <exec_depend>message_runtime</exec_depend>
  • CMakeList.txt中添加编译选项(针对创建message的依赖包)
    find_package(... message_generation)
    add_message_files(FILES Xxx.msg)
    generate_messages(DEPENDENCIES std_msgs)
    catkin_package(...message_runtime)
  • 编译,生成消息对应的.h文件

4. 服务

4.1. 客户端与服务

  • 客户端:参考test_service包中turtle_spawn.cpp,其中会向服务/spawn发送请求数据,并显示应答信息。利用serviceClient()创建通信对象。
    也可以参考test_param包中param_config.cpp,直接调用call()接口。
  • 服务端:参考test_service包中的turtle_command_srv.cpp,其中自定义服务对象,接收一个系统定义格式的数据,收到数据后进行处理。利用advertiseService() 创建服务对象。使用时可以通过rosservice指令查看当前的服务信息,rosservice call来传递消息给服务.

4.2. 自定义服务数据

  • 创建Xxx.srv文件,文件中---分割线表示上面是请求request的数据格式,下面是response响应的数据格式。
  • 在package.xml中添加创建message的功能包依赖(同上)
  • CMakeList.txt中添加编译选项(针对创建srv的依赖包)(同上),改为add_service_files
  • 编译,生成消息对应的.h文件

5. 参数服务Parameter Server (全局字典)

使用命令rosparam操作变量,参考上面。ROS用的是YAML格式文件。  
参考test_param包。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值