Ubuntu18.04 ROS安装mqtt_bridge
目的:想在ROS里通过订阅和发布方式发送数据到服务器的主题,因此找到了
mqtt_bridge。
因为我用的是ubuntu18.04,所以要用ros-melodic版本,如果是ubuntu16.04就要安装ros-kinetic
安装步骤:
- 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 update和sudo apt-get upgrade后还是下载不了,那只能下载deb包,然后再tar解压再install(ubuntu的包可以在这里面找)
链接: https://pan.baidu.com/s/1ItOKv9QdcEqpiY9tci9Vaw 提取码: macc
- Install python modules
$ pip3 install -r requirements.txt
- launch node
$ roslaunch mqtt_bridge demo.launch
运行成功代表可以了。
- 期间会遇到no module name ‘rospkg’,用pip3安装就好了:
sudo pip3 install rospkg
- 之后的步骤看官网就行
- 以下是关于桥的原理和相关代码的修改:
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 返回显示是那样定义的,但不影响我做判断就不管它了,如下图所示:
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)