ROS自定义通信接口详解裴昭义时间2024.1032课件.pptxVIP

ROS自定义通信接口详解裴昭义时间2024.1032课件.pptx

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

ROS自定义通信接口详解主讲人:裴昭义时间:2024.10

CONTENTS目录CONTENTS01概述消息(.msg)接口02服务(.srv)接口0304动作(.action)接口开发流程05最佳实践0607总结

概述01

标准消息类型无法满足特定应用需求。满足特定应用需求实现更好的模块化设计。实现更好的模块化设计提高通信效率和数据精度。提高通信效率和数据精度增强代码可读性和可维护性。增强代码可读性和可维护性为什么要自定义通信接口

消息(.msg)用于话题通信的单向数据流。服务(.srv)用于请求-响应模式的双向通信。动作(.action)用于长时间任务的三段式通信。三种自定义接口类型

消息(.msg)接口02

定义数据结构定义话题通信中传输的数据结构。单向数据流单向数据流,发布者到订阅者。支持的数据类型支持基本数据类型和嵌套结构。编译生成类编译后生成对应编程语言的类。基本概念

字段格式字段类型1字段名1.字段类型2字段名2....消息文件结构

01.基本类型:bool、int8、float32等。02.数组类型:固定长度和可变长度数组。03.特殊类型:Header、时间、持续时间。04.其他消息类型嵌套。基本类型数组类型特殊类型嵌套类型数据类型支持

传感器数据发布。传感器数据发布控制指令传输。控制指令传输状态信息广播。状态信息广播任何单向数据流需求。单向数据流需求应用场景

服务(.srv)接口03

双向通信,客户端到服务器。双向通信请求和响应通过分隔线区分。分隔请求和响应定义服务通信的请求和响应格式。定义请求和响应格式同步调用模式。同步调用模式基本概念

请求部分字段类型1请求字段名1.

字段类型2请求字段名2.响应部分字段类型1响应字段名1.

字段类型2响应字段名2.服务文件结构

请求参数请求应包含执行任务所需的所有参数。响应信息响应应包含操作结果和状态信息。错误处理考虑错误处理和异常情况。接口简洁保持接口简洁明确。设计原则

01.参数配置服务。02.状态查询服务。03.计算服务。04.任何需要确认结果的操作。参数配置服务状态查询服务计算服务确认结果操作应用场景

动作(.action)接口04

定义通信协议定义长时间运行任务的通信协议。支持任务控制支持任务取消和进度监控。包含三部分包含目标、反馈、结果三部分。异步通信模式异步通信模式。基本概念

目标定义字段类型1目标字段名1.

字段类型2目标字段名2.结果定义字段类型1结果字段名1.

字段类型2结果字段名2.反馈定义字段类型1反馈字段名1.

字段类型2反馈字段名2.动作文件结构

任务状态跟踪任务状态跟踪(等待、执行、完成等)进度反馈机制进度反馈机制。任务取消和抢占任务取消和抢占支持。结果返回和错误处理结果返回和错误处理。状态管理

机器人导航任务。机器人导航任务需要进度监控的复杂操作。复杂操作进度监控机械臂轨迹控制。机械臂轨迹控制长时间计算任务。长时间计算任务应用场景

开发流程05

在包中创建msg、srv或action目录。创建目录编写接口定义文件。编写文件配置package.xml添加依赖。配置package.xml配置CMakeLists.txt编译选项。配置CMakeLists.txt编译生成语言特定代码。编译生成代码在节点中使用自定义接口。在节点中使用创建自定义接口步骤

01添加依赖添加message_generation依赖。

添加message_runtime依赖。02配置编译规则配置接口文件编译规则。03设置依赖包关系设置依赖包关系。包配置要点

最佳实践06

接口简单专注保持接口简单和专注。有意义的字段名称使用有意义的字段名称。兼容性考虑考虑向前和向后兼容性。提供文档说明提供充分的文档说明。设计原则

避免缩写和模糊名称避免缩写和模糊名称。清晰的命名空间保持命名空间清晰。描述性消息名称使用描述性的消息名称。遵循ROS命名约定遵循ROS命名约定。命名规范

考虑兼容性接口变更时考虑兼容性。使用语义化版本控制使用语义化版本控制。提供迁移指南和示例提供迁移指南和示例。维护变更日志维护变更日志。版本管理

rosmsg:消息接口管理。

rossrv:服务接口管理。

rosaction:动作接口管理。命令行工具接口语法检查。

数据类型验证。

通信监控工具。

性能分析工具。验证和调试工具支持

总结07

促进代码复用和团队协作。支持复杂应用场景需求。提高系统模块化和可维护性。提供灵活的数据交换格式。灵活的数据交换格式支持复杂应用场景提高系统模块化和可维护性促进代码复用和团队协作核心价值

单向数据流单向数据流使用消息。简单请求-响应简单请求-响应使用服务。长时间任务长时间任务使用动作。根据需求选择根据需求选择合适的通信模式。选择指南

谢谢大家主讲

文档评论(0)

学海无涯苦做舟 + 关注
实名认证
文档贡献者

职业教育

1亿VIP精品文档

相关文档