安装 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. 设置密钥:
    sudo apt install curl # if you haven't already installed curl
    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时会自动获取此脚本

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

启动

roscore

三、安装mqtt_bridge

一、前置条件 :

sudo apt install python3-pip
sudo apt install ros-noetic-rosbridge-library
sudo apt install mosquitto mosquitto-clients

二、安装mqtt_bridge

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

sudo apt install ros-noetic-mqtt-bridge

三、环境配置

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

cd /opt/ros/noetic/share/mqtt_bridge
vim /opt/ros/noetic/share/mqtt_bridge/requirements.txt
# thanks to rospypi project, we can install ros packages in pure python
# See: https://github.com/rospypi/simple
--extra-index-url https://rospypi.github.io/simple/
catkin-pkg
geometry-msgs
inject>=4.0
mock
msgpack-python>=0.4.8
paho-mqtt>=1.2
pymongo
pytest
pyyaml
rosgraph
rosgraph-msgs
roslib
rosmsg
rospy<1.15  # 1.15 is for python3
rostest
sensor-msgs
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

发布

rostopic pub /ping std_msgs/Bool "data: true"

rostopic pub /echo std_msgs/String "data: 'hello'"

 订阅

rostopic echo /pong
data: True
---

rostopic echo /back
data: hello
---

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

五、报错解决

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

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

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

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

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

sudo python3 -m pip install --upgrade pip

二、安装ROS时报错 :  

1.创建ROS工作空间

$ mkdir -p ~/catkin_ws/src
$ cd ~/catkin_ws/
$ catkin_make

刷新配置   : 

source devel/setup.bash

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

安装依赖

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

初始化 rosdep

sudo apt install python3-rosdep

sudo rosdep init
rosdep update

  • 1
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
ros_arduino_bridge 是一个 ROS 软件包,它可以将 Arduino 板与 ROS 系统进行通信。下面是关于 ros_arduino_bridge安装和使用步骤: 安装: 1. 首先,在你的系统上安装 Arduino IDE。你可以从 Arduino 官方网站下载并安装适合你操作系统的版本。 2. 确保你的系统上已经正确安装ROS. 如果没有,请按照 ROS 官方网站的说明进行安装。 3. 在 ROS 中创建一个工作空间,可以使用以下命令: ``` mkdir -p ~/ros_arduino_bridge_ws/src cd ~/ros_arduino_bridge_ws/src catkin_init_workspace ``` 4. 将 ros_arduino_bridge 软件包克隆到你的工作空间中的 src 目录下: ``` git clone https://github.com/hbrobotics/ros_arduino_bridge.git ``` 5. 使用以下命令编译并安装软件包: ``` cd ~/ros_arduino_bridge_ws catkin_make source devel/setup.bash ``` 使用: 1. 首先,打开 Arduino IDE,并将你的 Arduino 板连接到电脑上。 2. 使用 Arduino IDE 打开 ros_arduino_bridge 软件包中的 Arduino 代码文件。代码文件位于 ros_arduino_firmware 文件夹中。 3. 在 Arduino IDE 中按下上传按钮将代码上传到你的 Arduino 板上。 4. 在终端中,使用以下命令启动 ros_arduino_bridge: ``` roslaunch ros_arduino_bridge arduino.launch ``` 5. 现在,你可以通过发布 ROS 消息来与 Arduino 板进行通信。例如,可以使用 rostopic 命令发布消息。可以通过查看软件包文档了解更多关于 ROS 消息和话题的信息。 以上就是关于安装和使用 ros_arduino_bridge 的简要步骤。通过这个软件包,你可以在 ROS 系统中与 Arduino 板进行通信并控制各种传感器和执行器。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值