• 安装 ROS 与mqtt_bridge 指北


    mqtt_bridge 官方介绍

    mqtt_bridge provides a functionality to bridge between ROS and MQTT in bidirectional.

    mqtt_bridge uses ROS message as its protocol. Messages from ROS are serialized by json (or messagepack) for MQTT, and messages from MQTT are deserialized for ROS topic. So MQTT messages should be ROS message compatible. (We use rosbridge_library.internal.message_conversion for message conversion.)

    This limitation can be overcome by defining custom bridge class.

     ROS官方提供了一个叫做mqtt_bridge的功能包,这个功能包提供了ROS与MQTT的双向通信功能。该包主要通过Python3 语言实现(这里划个重点),以下是官网地址:​​​​​​http://wiki.ros.org/mqtt_bridge

    整体流程图

    • 安装mqtt_bridge 和 mosquitto 模块
    • 通过mqtt_bridge 的 demo_params.yaml 配置文件可知Ros内部topic与外部的映射关系,我们想/echo发布数据

    一、功能介绍

    在ROS系统中我们希望通过mqtt的方式进行通信,在Topic中进行读写操作。我们采用的方式就是通过ROS官方推出的mqtt_bridge软件包实现。

    二、安装ROS

    安装ROS (非ROS2)        操作环境:Ubuntu 20.04.5

    一、前置操作:

    1. 查看本机版本号:cat /etc/issue
    2. 下载对应的ROS版本:ROS/Installation - ROS Wiki
    3. 设置国内镜像
      sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu/ `lsb_release -cs` main" > /etc/apt/sources.list.d/ros-latest.list'
    4. 设置密钥:
      1. sudo apt install curl # if you haven't already installed curl
      2. curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -
    5. 确保您的 Debian 软件包索引是最新的 
      sudo apt update

    二、安装

    我们无可视化图形界面,只需要ROS-Base即可

    sudo apt install ros-noetic-ros-base
    

    三、环境配置

    您必须在使用 ROS 的每个bash终端中获取此脚本。

    source /opt/ros/noetic/setup.bash

    或者将该语句写进.bashrc配置中,以至每次启动新shell时会自动获取此脚本

    1. echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
    2. source ~/.bashrc

    启动

    roscore

    三、安装mqtt_bridge

    一、前置条件 :

    1. sudo apt install python3-pip
    2. sudo apt install ros-noetic-rosbridge-library
    3. sudo apt install mosquitto mosquitto-clients

    二、安装mqtt_bridge

    从ROS官方安装软件包(因为本机服务器没有vpn所以无法去git下载项目)

    sudo apt install ros-noetic-mqtt-bridge

    三、环境配置

    安装完成之后,去配置 dev-requirements.txt 文件 (最新版将该文件删掉了)

    1. cd /opt/ros/noetic/share/mqtt_bridge
    2. vim /opt/ros/noetic/share/mqtt_bridge/requirements.txt
    1. # thanks to rospypi project, we can install ros packages in pure python
    2. # See: https://github.com/rospypi/simple
    3. --extra-index-url https://rospypi.github.io/simple/
    4. catkin-pkg
    5. geometry-msgs
    6. inject>=4.0
    7. mock
    8. msgpack-python>=0.4.8
    9. paho-mqtt>=1.2
    10. pymongo
    11. pytest
    12. pyyaml
    13. rosgraph
    14. rosgraph-msgs
    15. roslib
    16. rosmsg
    17. rospy<1.15 # 1.15 is for python3
    18. rostest
    19. sensor-msgs
    20. std-msgs

    四、安装Python模块

    pip3 install -r requirements.txt

    五、修正错误(当前版本有一层config/config/,会报错找不到文件)

    mv /opt/ros/noetic/share/mqtt_bridge/config/config/* /opt/ros/noetic/share/mqtt_bridge/config

    六、启动节点

    roslaunch mqtt_bridge demo.launch

    四、测试ROS内部Topic

    发布

    1. rostopic pub /ping std_msgs/Bool "data: true"
    2. rostopic pub /echo std_msgs/String "data: 'hello'"

     订阅

    1. rostopic echo /pong
    2. data: True
    3. ---
    4. rostopic echo /back
    5. data: hello
    6. ---

    五、启动shifu并编写mqtt配置文件

    五、报错解决

    若完全按照以上教程还是出现报错情况则有可能的情况

    一、安装mqtt_bridge时报错:       Python版本不一致

    主要原因是ros默认使用python2,而mqtt_bridge包使用的是python3编写的,因此需要用python3进行安装。解决办法如下:

    1. vim /root/.bashrc
    2. #末尾添加如下
    3. alias python=python3

    此时你还不一定能用,因为你的pip3不一定是最新版本,所以可能无法找到比较新的依赖,而mqtt_bridge包却又使用比较新的依赖。因此要更新pip3:

    sudo python3 -m pip install --upgrade pip

    二、安装ROS时报错 :  

    1.创建ROS工作空间

    1. $ mkdir -p ~/catkin_ws/src
    2. $ cd ~/catkin_ws/
    3. $ catkin_make

    刷新配置   : 

    source devel/setup.bash

    2.ROS的工具包初始化 : 有可能是因为一些工具包没有进行初始化而造成的报错

    安装依赖

    sudo apt install python3-rosdep python3-rosinstall python3-rosinstall-generator python3-wstool build-essential

    初始化 rosdep

    1. sudo apt install python3-rosdep
    2. sudo rosdep init
    3. rosdep update

  • 相关阅读:
    Typora 基本使用操作
    六、函数和变量的命名
    低代码之光!轻量级 GUI 的设计与实现
    【C语言】auto 关键字
    字符串拼接re.sub()用法
    知乎转发最高的 Java 面试成神笔记,GitHub 已下载量已过百万
    安装kubesphere3.3
    Linux 查看CPU架构及内核版本
    uniapp vue2、vue3 页面模板代码块设置
    YAGEO(国巨)旧电脑风扇制作风力发电机步骤详解 - 电动机控制电路图
  • 原文地址:https://blog.csdn.net/qq_48826531/article/details/127773685