type
status
date
Oct 24, 2024 02:04 AM
slug
summary
tags
category
icon
password
mqtt_bridge 和 mqtt_client
这两个都是可以搜索到的两个ros包。mqtt_bridge已经停止维护数年,使用python开发,基于paho-mqtt库。而mqtt_client是使用c++最新开发的一个高性能库。
它们并没有迭代关系,功能也有所不同。
mqtt_bridge
mqtt_bridge的作用主要是将MQTT消息和ROS topic消息互相转换,订阅MQTT消息,并以ROS topic消息发出,或者订阅ROS topic,并以MQTT消息发出。
mqtt_bridge适用于两端分别基于MQTT或ROS,中间通信使用MQTT(一般)的情况。
mqtt_client
mqtt_client的作用是将ROS topic消息序列化,使用MQTT协议发送和接收。
mqtt_client适用于两端基于ROS,而中间的通信需要转化成MQTT消息的情况。
需要注意的是,mqtt_client中间转换成的MQTT消息是经过编码无法直接解析的。
综上,使用mqtt_bridge来转换ros和mqtt消息。
vda5050_connector
vda5050_connector
tum-fml • Updated Oct 24, 2024
一个用于聚合和生成vda_5050标准消息的包,工作方式如下:
消息流转:
调整MQTT协议版本
在
mqtt_bridge.yaml
中,找到client字段:在这里,
protocol
代表了创建client的协议版本,4代表v3.1.1,5代表v5。mqtt_bridge软件包默认支持v3.1.1,这里我们改成5。运行软件包,出现报错
开调式定位问题,发现是在paho-mqtt库创建完client后,
on_connect
回调函数签名发生了变化。在 MQTT 3.1.1 中,
on_connect
回调函数接收 4 个参数:其中:
client
:客户端实例
userdata
:用户自定义数据
flags
:响应标志
rc
:连接结果代码
但是,在 MQTT 5 中,
on_connect
回调函数接收 5 个参数:其中,第 5 个参数
properties
是新增的,它包含与 MQTT 5 协议相关的连接属性。在
app.py
末尾加上传入properties
即可。随后启动软件包,看broker显示的log,以
mosquitto
为例:(p5, c1, k60)
中的p5代表了连接的client版本号为v5。ㅤ | ㅤ | ㅤ | ㅤ |
ㅤ | ㅤ | ㅤ | ㅤ |
ㅤ | ㅤ | ㅤ | ㅤ |
ㅤ | ㅤ | ㅤ | ㅤ |
/
- Author:NotionNext
- URL:https://tangly1024.com/article/1299b391-226a-8011-a9f0-e86804ffab24
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!
Relate Posts