码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 六、ROS2通信机制(服务)


    一、服务介绍

    客户端发送请求给服务端,服务端可以根据客户端的请求做一些处理,然后返回结果给客户端。
    这里与话题的主要区别就是:话题是没有返回的,适用于单向或大量的数据传递。而服务是双向的,客户端发送请求,服务端响应请求。
    注意事项:
    1、同一个服务(名称相同)有且只有一个节点来提供
    2、同一个服务可以被多个客户端调用source /opt/ros/galactic/setup.bash

    二、体验服务

    ROS2自带一些服务使用样例。
    1、启动服务端:运行一个服务节点,这两个服务的功能是将两个数字相加,给定a,b两个数,返回sum

    ros2 run examples_rclpy_minimal_service service
    
    • 1

    2、使用命令查看服务列表

    ros2 service list
    
    • 1

    3、手动调用服务

    ros2 service call /add_two_ints example_interfaces/srv/AddTwoInts "{a: 5,b: 10}"
    
    • 1

    三、ROS2服务常用命令

    1、查看服务列表

    ros2 service list
    
    • 1

    2、手动调用服务

    ros2 service call /add_two_ints example_interfaces/srv/AddTwoInts
    
    • 1

    3、查看服务接口类型

    ros2 service type /add_two_ints
    
    • 1

    4、查找使用某一接口的服务

    ros2 service find example_interfaces/srv/AddTwoInts
    
    • 1

    四、自定义服务接口

    1、服务接口介绍
    服务接口与话题接口有什么不同?
    话题是发布订阅模型。主要是单向传输数据,只能由发布者发布,接收者接收(同一话题,发布者接收者都可以有多个)
    服务是客户端服务端(请求响应)模型。由客户端发送请求,服务端处理请求,然后返回处理结果(同一服务,客户端可以由多个,服务端只能有一个)
    话题通信是单向的,自定义话题只需要定义一种数据类型就行,而服务是双向的,需要定义一去一回两种数据类型。

    服务接口格式:xxx.srv

    int64 a
    int64 b
    ---
    int64 sum
    
    • 1
    • 2
    • 3
    • 4

    与话题不同,srv文件比msg文件中间多出三个—,这就是分界线,上方的是客户端发送请求的数据结构定义,下方的是服务端响应结果的数据结构定义。
    如何创建自己的服务接口:参考如下步骤
    1、新建srv文件夹,并在文件夹下新建xxx.srv
    2、在xxx.srv下编写服务接口内容并保存
    3、在CmakeLists.txt添加依赖和srv文件目录
    4、在package.xml中添加xxx.srv所需的依赖
    5、编译功能包即可生成python与C++头文件

  • 相关阅读:
    Linux 学习笔记(2)—— 关于文件和目录
    高创伺服驱动器CDHD2和sick伺服编码器hiperface通讯时的故障解决
    Linux下vim的简单使用方式
    ClickHouse学习笔记之表引擎
    java中stream流中Collectors.groupingBy和Collectors.partitioningBy实例的区别和联系实例?
    图像格式RGB-HSV-YUV
    图片转表格怎么转?看完这篇你就会了
    【34. 在排序数组中查找元素的第一个和最后一个位置】
    MaxKey单点登录认证系统v3.5.10GA发布
    css选择器(通配符、(元素、类、id)、后代(子代、所有后代)、兄弟(相邻兄弟、所有兄弟)、属性(属性、指定值的属性)、交集并集)
  • 原文地址:https://blog.csdn.net/weixin_44014982/article/details/128078183
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号