目的:想在ROS里通过订阅和发布方式发送数据到服务器的主题,因此找到了
mqtt_bridge。

因为我用的是ubuntu18.04,所以要用ros-melodic版本,如果是ubuntu16.04就要安装ros-kinetic

代码地址

安装步骤:

  1. Prerequisites
$ sudo apt install python3-pip
$ sudo apt install ros-melodic-rosbridge-library
$ sudo apt install mosquitto mosquitto-clients

因为安装ros-melodic-rosbridge-library需要翻墙,否则会报404找不到IP。所以你要么在学校里面下载(学校有翻墙加成),要么自己搭梯子,都不行就只能修改ros 安装的源,这个源和pip的源不一样,ros有ros的安装源,所以不要以为改了pip的源就能下载成功了。

mosquitto-clients如果安装不了,即使更新源列表以及运行sudo apt-get updatesudo apt-get upgrade后还是下载不了,那只能下载deb包,然后再tar解压再installubuntu的包可以在这里面找

链接: https://pan.baidu.com/s/1ItOKv9QdcEqpiY9tci9Vaw 提取码: macc

  1. Install python modules
$ pip3 install -r requirements.txt
  1. launch node
$ roslaunch mqtt_bridge demo.launch

运行成功代表可以了。

  1. 期间会遇到no module name ‘rospkg’,用pip3安装就好了:
sudo pip3 install rospkg
  1. 之后的步骤看官网就行
  2. 以下是关于桥的原理和相关代码的修改:

mqtt_bridge原理是:

msg消息->发布到/echo主题->mqtt_bridge里面的echo->mqtt_bridged里面的back->mqtt_bridge的返回的/back

demo_params.yaml文件修改如下:
在这里插入图片描述

主程序调用时候就直接订阅就可以了,如下图所示:

在这里插入图片描述

期间会遇到ROS to mqtt时,mqtt上接收到的数据为��data�hello,(具体看这位博主如何解决)这个的话改bridge.py就好了。具体修改如下:

在这里插入图片描述

在这里插入图片描述
而且我也遇到了将string类型的json格式(去掉\n\t这些字符)发过去之后,订阅这个回调函数显示我发送的字符串数据是正常的,但通过rostopic echo /back输出的字符串是有’\’ 这个字符 的,这个应该是mqtt_bridge里面的/back 返回显示是那样定义的,但不影响我做判断就不管它了,如下图所示:
在这里插入图片描述

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐