当前位置: 首页 > news >正文

【ROS2】 核心概念6——通信接口语法(Interfaces)

 古月21讲/2.6_通信接口

官方文档:Interfaces — ROS 2 Documentation: Humble documentation

官方接口代码实战:https://docs.ros.org/en/humble/Tutorials/Beginner-Client-Libraries/Single-Package-Define-And-Use-Interface.html

 ROS 2使用简化的描述语言,即接口定义语言( interface definition language,IDL)来描述这些接口。此描述使ROS工具可以轻松地以几种目标语言为接口类型生成源代码 (自动跨语言)。。不同通信接口,接口文件后缀不同

话题(.msg),

服务(.srv),

动作(.action)

接口语言定义语法

所有的语言,都有统一的内置类型(built-in-type)表示

可单独定义类型名称,例如“ geometry_msgs/posestamped”

内部固有类型 (与跨语言对应关系)

Type name

C++

Python

DDS type

bool

bool

builtins.bool

boolean

byte

uint8_t

builtins.bytes*

octet

char

char

builtins.int*

char

float32

float

builtins.float*

float

float64

double

builtins.float*

double

int8

int8_t

builtins.int*

octet

uint8

uint8_t

builtins.int*

octet

int16

int16_t

builtins.int*

short

uint16

uint16_t

builtins.int*

unsigned short

int32

int32_t

builtins.int*

long

uint32

uint32_t

builtins.int*

unsigned long

int64

int64_t

builtins.int*

long long

uint64

uint64_t

builtins.int*

unsigned long long

string

std::string

builtins.str

string

wstring

std::u16string

builtins.str

wstring

话题(topics  发布/订阅信息模型)

消息是ROS 2节点将网络上的数据发送到其他ROS节点的一种方式,而没有响应(单向信息传递)。例如,如果一个ROS 2节点从传感器读取温度数据,则可以使用温度消息在ROS 2网络上发布该数据。 ROS 2网络上的其他节点可以订阅该数据并接收温度消息。

每个字段由一个类型名称组成,被空格隔开,即

fieldtype1 fieldname1
fieldtype2 fieldname2

例如

int32 my_int
string my_string
带有默认值的示例
uint8 x 42
int16 y -2000
string full_name "John Doe"
int32[] samples [-200, -100, 0, 100, 200]

 常数示例,无法更改(有=号)

int32 X=123
int32 Y=-123
string FOO="foo"
string EXAMPLE='bar'

服务接口

在ROS软件包的 srv/ 路径中,在.srv文件中描述和定义了服务。

服务描述文件由请求和响应MSG类型组成,该类型由使用 --- 区分

语法

string str
---
string str

示例

# request constants
int8 FOO=1
int8 BAR=2
# request fields
int8 foobar
another_pkg/AnotherMessage msg
---
# response constants
uint32 SECRET=123456
# response fields
another_pkg/YetAnotherMessage val
CustomMessageDefinedInThisPackage value
uint32 an_integer

动作通信接口 

有三个参数需要定义

使用2个 ---  --- 区分

<request_type> <request_fieldname>
---
<response_type> <response_fieldname>
---
<feedback_type> <feedback_fieldname>

示例

int32 order
---
int32[] sequence
---
int32[] sequence

相关文章:

  • 【QGIS二次开发】地图编辑-07
  • LWIP的NETCONN接口
  • 生产级编排AI工作流套件:Flyte全面使用指南 — Data input/output
  • 【常用算法:查找篇】9.AVL树深度解析:动态平衡二叉树的原理、实现与应用
  • USB传输速率 和 RS-232/RS-485串口协议速率 的倍数关系
  • 备忘录模式
  • 类的加载过程详解
  • LINQ:统一查询语法的强大工具
  • 服务端HttpServletRequest、HttpServletResponse、HttpSession
  • 前端动画库 Anime.js 的V4 版本,兼容 Vue、React
  • 初始C++:类和对象(中)
  • 游戏引擎学习第293天:移动Familiars
  • 线程池核心线程永续机制:从源码到实战的深度解析
  • 继MCP、A2A之上的“AG-UI”协议横空出世,人机交互迈入新纪元
  • 学习黑客Active Directory 入门指南(五)
  • 32LED心形灯程序源代码
  • Java大师成长计划之第26天:Spring生态与微服务架构之消息驱动的微服务
  • 4:OpenCV—保存图像
  • Spring AI Alibaba集成阿里云百炼大模型应用
  • 05 部署Nginx反向代理
  • 优质文化资源下基层,上海各区优秀群文团队“文化走亲”
  • 技术派|威胁F-35、击落“死神”,胡塞武装防空战力如何?
  • 特朗普称即将与伊朗达成核协议,外交部:中方愿继续发挥建设性作用
  • 昆明公布3起经济犯罪案例:一人持有820余万假美元被判刑十年
  • 中国恒大披露清盘进展:要求债权人提交债权证明表
  • 国税总局上海市税务局通报:收到王某对刘某某及相关企业涉税问题举报,正依法依规办理