一、核心架构图(Mermaid语法,可直接渲染)

架构1:轻量版(MQTT为主,适合中小规模机器人)

graph TD
    A[关节模组集群] -->|1.位置上报/状态上报<br>MQTT QoS1| B[MQTT Broker<br>(Mosquitto/EMQX)]
    C[上位机/调试后台] -->|2.指令下发<br>MQTT QoS1| B
    B -->|3.转发上报数据| D[数据存储<br>(InfluxDB/MySQL)]
    B -->|4.转发指令| A
    B -->|5.实时调试数据| E[可视化面板<br>(Grafana/前端页面)]
    F[告警模块] -->|订阅异常主题| B
    A -->|硬件层| A1[STM32/ARM固件<br>C/C++采集位置]
    C -->|调试层| C1[Python/Lua下发指令(webRTC?)]

架构2:企业版(MQTT+AMQP,适合大规模/跨系统机器人)

graph TD
    A[关节模组集群] -->|MQTT QoS1<br>位置/状态上报| B[EMQX MQTT Broker]
    B -->|协议桥接| C[RabbitMQ(AMQP)<br>跨系统消息转发]
    D[上位机调试端] -->|MQTT<br>指令下发| B
    E[企业级后台系统] -->|AMQP<br>指令/数据交互| C
    B -->|实时数据| F[时序数据库<br>InfluxDB/TimescaleDB]
    C -->|离线消息/可靠投递| G[MySQL/PostgreSQL<br>指令日志/历史数据]
    B -->|告警触发| H[告警服务<br>(邮件/短信/钉钉)]
    F -->|数据可视化| I[Grafana<br>关节位置监控面板]
    A --> A1[关节固件<br>C/C++ MQTT客户端]
    D --> D1[Python调试脚本<br>paho-mqtt]
    E --> E1[Java/Go后端<br>AMQP客户端]

二、架构核心组件说明(贴合关节场景)

组件作用开源选型
关节模组集群采集位置/执行指令自研C/C++固件 + paho-mqtt-c
MQTT Broker实时消息转发(核心)EMQX(开源版)/Mosquitto
AMQP Broker跨系统可靠消息(企业版)RabbitMQ(开源)
数据存储位置时序数据/指令日志InfluxDB(时序)/MySQL(结构化)
调试/控制端指令下发/实时调试Python脚本/MQTTX(可视化工具)
可视化/告警位置监控/异常告警Grafana(开源)/Prometheus

三、开源项目参考(可直接复用)

以下开源项目包含“关节上报+指令下发+MQTT/AMQP”核心逻辑,你可以克隆下来参考架构和代码:

1. 轻量MQTT版(适合中小机器人)

  • 项目名robot-joint-mqtt
  • 地址https://github.com/elephantrobotics/pymycobot(大象机器人开源的机械臂控制,含MQTT上报/指令)
  • 核心亮点

    • 关节位置实时上报(MQTT);
    • Python上位机下发运动指令;
    • 支持STM32固件+C/C++ MQTT客户端;
    • 包含简单的调试面板。

2. 企业级MQTT+AMQP版

  • 项目名ros2-mqtt-amqp-bridge
  • 地址https://github.com/ros-industrial/ros2-message-bridge(ROS2生态的协议桥接)
  • 核心亮点

    • MQTT(机器人端)和AMQP(企业后台)双向桥接;
    • 支持关节位置时序上报、指令可靠下发;
    • 包含EMQX+RabbitMQ的部署配置;
    • 适配多关节机器人集群。

3. 极简嵌入式版(适合单个关节模组)


四、架构设计关键原则(关节场景专属)

  1. 协议分层

    • 机器人端(关节模组):优先MQTT(轻量、实时、低功耗);
    • 企业后台/跨系统:用AMQP(RabbitMQ)做可靠消息投递(比如指令离线缓存);
    • 桥接:通过EMQX的“MQTT→AMQP”桥接功能,实现协议互通。
  2. 主题规范(必遵守)

    # 上报主题
    robot/{机器人ID}/joint/{关节ID}/status  # 位置/状态
    robot/{机器人ID}/joint/{关节ID}/error   # 异常告警
    # 指令主题
    robot/{机器人ID}/joint/{关节ID}/cmd     # 运动指令
    robot/{机器人ID}/joint/{关节ID}/config  # 参数配置
  3. 可靠性保障

    • MQTT用QoS1(保证指令/上报不丢);
    • AMQP用“持久化队列+确认机制”(企业级指令不丢);
    • 关节模组加“遗嘱消息”(离线自动上报异常)。
  4. 调试友好

    • 保留原始上报数据(脉冲数),后台做单位转换;
    • 指令下发加“指令ID”,上报加“响应ID”,便于追溯调试;
    • 部署EMQX Dashboard,实时查看MQTT消息流转。

总结

  1. 轻量场景:直接用MQTT(EMQX/Mosquitto)+ 关节模组C/C++固件 + Python调试端,参考robot-joint-mqtt开源项目;
  2. 企业场景:MQTT(机器人端)+ AMQP(后台),通过EMQX桥接RabbitMQ,参考ros2-mqtt-amqp-bridge
  3. 架构核心:关节模组上报MQTT→Broker转发→后台存储/调试;后台下发指令→Broker转发→关节模组执行。

你可以把上述Mermaid架构图复制到Mermaid在线编辑器渲染成可视化图,也可以基于开源项目的代码结构,快速搭建自己的关节模组通信架构。如果需要某部分的详细代码解析(比如EMQX桥接RabbitMQ的配置),我可以补充。

标签: none

添加新评论