MQTT & micro-ROS:构建高效的机器人应用

什么是 micro-ROS?

在之前的 MQTT & FreeRTOS:打造你的远程控制实时应用 中,我们介绍了如何在 FreeRTOS 中构建你的 MQTT 应用。

FreeRTOS 主要应用在对实时性要求较高的场景中,但这类 RTOS 专注于提供实时任务调度和同步机制等基础功能,对于机器人应用需要的机器视觉、地图建模以及路径规划等高级功能缺少支持。

在机器人应用开发中,拥有丰富生态的开源机器人操作系统 ROS 通常是最佳的选择。但 ROS 往往运行在 Linux 或 Windows 上,无法提供严格的实时性保证。

于是 micro-ROS 由此诞生,它是 ROS 2 的一个子项目。它运行在 RTOS 之上,因此得以保证实时性。同时它支持所有主要的 ROS 概念,例如节点、发布/订阅、客户端/服务等,因此可以非常紧密地与 ROS 2 生态集成。

在这篇文章中,我们将继续探索,如何在 FreeRTOS 中运行 micro-ROS,并最终通过 MQTT 协议与 EMQX 集成。

使用 MQTT 与 micro-ROS 构建应用

这是一个典型的 micro-ROS 的应用场景:在一个包含多个机器人的系统中,一个主控制节点运行 ROS 2,负责高级任务调度和决策,而每个机器人各自运行一个 micro-ROS 节点,负责执行更低级别的任务,例如与传感器直接通信,以及驱动运动部件。

我们可以在本地直接操作主控制节点,但更多时候我们希望可以远程管理这个机器人系统。

例如在工业制造中,我们可以让运行 ROS 2 的主节点收集网络中所有 micro-ROS 节点的生产数据并传输至 MES 系统,用于生产工艺改进和设备故障预测等目的;也可以进一步结合 ERP 系统,根据订单、库存等信息生成新的生产计划和任务,然后远程下发给 ROS 2 节点,由 ROS 2 节点拆解为具体的子任务并分发给有不同职责的 micro-ROS 节点执行。

轻量、可靠且易于扩展的 MQTT,通常是连接 ROS 2 节点和 MES、ERP 系统的最佳选择。

01ros2toemqx.png

示例介绍

本文将通过一个简单的 Demo 来展示如何从零开始部署一个由 ROS 2 节点和 micro-ROS 节点组成的系统,并通过 MQTT 客户端工具 MQTTX 接收来自 micro-ROS 节点的 LED 色调、亮度等信息,以及向 micro-ROS 节点发送 MQTT 消息使其更改 LED 色调、饱和度和亮度。

我们将使用一块 ESP32-S3 开发板运行 micro-ROS 节点,底层的 RTOS 为 FreeRTOS。micro-ROS 节点与 ROS 2 节点之间通过 micro-ROS Agent 交换消息。

在本示例中,ROS 2 主节点的职责被大幅简化。它不负责拆解复杂任务,甚至也不负责实现 DDS 消息与 MQTT 消息之间的转换,而是借助了另一个 ROS 2 节点 mqtt_client 来实现 ROS 和 MQTT 之间的双向桥接。ROS 2 主节点仅仅实现了 DDS 消息在我们的自定义格式与 JSON 字符串之间的转换。因此这个 ROS 2 主节点被命名为 converter。简化职责的好处是降低了示例代码的复杂度,我们可以更加专注在整个流程上。

最后,我们还需要一个 MQTT 服务器来为 ROS 2 节点与 MQTTX 客户端提供消息服务,这里我们选择 MQTT 平台 EMQX 的 Serverless 版本。EMQX Serverless 提供了每月 100 万连接分钟的免费额度,因此非常适合用于验证这类小型 Demo。

02ros2toemqxserverless.png

micro-ROS 节点和 ROS 2 节点的示例代码已经上传至 GitHub:https://github.com/emqx/bootcamp

硬件准备

为了运行本示例,我们需要准备以下硬件:

  • 一块集成了 ESP32 系列芯片的开发板(ESP32、ESP32-C3、ESP32-S3 均可,本文基于 ESP32-S3 进行演示)。
  • 一个板载的由 WS2812 系列芯片驱动的 RGB LED 光源。

关于如何驱动此 LED,可参阅我们的另一篇博客:MQTT & FreeRTOS:打造你的远程控制实时应用

如果你的开发板上没有这样的 LED,你可以外接一个 LED 模块,或者稍后通过 Enable LED 配置项禁用示例中的 LED 代码。

软件准备

软件方面,EMQX Serverless 和 MQTTX 在简单部署后即可运行,本示例所需的 ROS 2 节点与 micro-ROS 节点则以源码形式提供,所以我们需要安装对应的构建系统以构建出最终可运行的节点。

部署 EMQX Serverless

EMQ 官网 创建账户后,就可以快速部署一个免费的 EMQX Serverless 实例。

03serverlessinstance.png

EMQX Serverless 强制启用 TLS 与用户名密码认证以提供最佳的安全性,所以我们还需要前往认证页面为客户端添加认证信息。

04authentication.png

安装 MQTTX

MQTTX 是一个同时支持 MQTT 3.1.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值