跳转至

通信综述

概述

机器人是一个分布式系统——传感器、控制器、执行器、上位机之间需要可靠的数据交换。通信协议的选择直接影响系统的实时性、可靠性和扩展性。

通信层次模型

机器人通信可分为四个层次:

graph TB
    subgraph 长距离通信
        A1[4G/5G]
        A2[LoRa]
        A3[遥控器 2.4GHz]
    end

    subgraph 无线局域通信
        B1[WiFi]
        B2[BLE蓝牙]
        B3[ESP-NOW]
    end

    subgraph 板间通信
        C1[UART串口]
        C2[CAN总线]
        C3[EtherCAT]
        C4[RS-485]
    end

    subgraph 板内通信
        D1[SPI]
        D2[I2C]
        D3[GPIO/PWM]
    end

    A1 & A2 & A3 --> B1 & B2 & B3
    B1 & B2 & B3 --> C1 & C2 & C3 & C4
    C1 & C2 & C3 & C4 --> D1 & D2 & D3

    style A1 fill:#f9f,stroke:#333
    style B1 fill:#bbf,stroke:#333
    style C2 fill:#bfb,stroke:#333
    style D1 fill:#ffb,stroke:#333

各层典型协议

板内通信(Intra-board)

芯片与外设之间的短距离通信,通常在同一块PCB上。

协议 速率 线数 拓扑 典型外设
SPI 1-100 MHz 4(+CS) 主从 IMU、显示屏、Flash
I2C 100k-3.4M 2 多主多从 传感器、OLED、EEPROM
GPIO/PWM - 1 点对点 LED、舵机、蜂鸣器

板间通信(Inter-board)

机器人不同模块/板子之间的通信。

协议 速率 距离 拓扑 典型应用
UART 115.2k-1M bps <15m 点对点 MCU间、GPS、总线舵机
RS-485 100k-10M bps <1200m 多点 工业传感器、Dynamixel
CAN 1M bps (CAN) / 8M (CAN FD) <40m@1M 总线 电机网络、汽车
EtherCAT 100M bps 100m/段 环形 工业机器人关节
USB 480M (2.0) / 5G (3.0) <5m 星形 相机、激光雷达

无线局域通信(Wireless LAN)

协议 速率 距离 功耗 典型应用
WiFi 2.4G 72-150 Mbps ~50m 图像传输、ROS2通信
WiFi 5G 433-866 Mbps ~30m 高带宽传感器
BLE 5.0 2 Mbps ~100m 极低 遥控、状态上报
ESP-NOW 1 Mbps ~200m ESP32对等通信

长距离通信(Long Range)

协议 速率 距离 特点
4G LTE 50-150 Mbps 覆盖区 高带宽,需SIM卡
5G 1-10 Gbps 覆盖区 超低延迟
LoRa 0.3-50 kbps 2-15 km 极低功耗,小数据量
遥控器(2.4G) ~100 kbps 1-2 km 实时控制,低延迟

带宽 vs 延迟 vs 可靠性

三角权衡

不同应用对通信的三个核心指标有不同侧重:

应用 带宽需求 延迟要求 可靠性要求
电机控制 低(几十字节) 极高(<1ms) 极高
IMU数据 低-中 高(<5ms)
激光雷达 高(MB级) 中(<50ms)
相机图像 极高(数十MB/s) 中(<100ms)
遥控命令 极低 高(<20ms)
远程监控 低(<1s)
地图数据

实时性分级

等级 延迟 抖动 协议
硬实时 <1ms <10μs EtherCAT, CAN
软实时 <10ms <1ms CAN, RS-485, UART
准实时 <100ms <10ms WiFi, USB
非实时 >100ms 不限 4G, LoRa, HTTP

机器人通信架构示例

小型轮式机器人

遥控器(2.4G/BLE)
      ↓
  主控(ESP32)
   ├── UART ──→ 激光雷达
   ├── I2C ───→ IMU + OLED
   ├── PWM ───→ 舵机 × 2
   └── GPIO+PWM → 电机驱动板 → 电机+编码器

六轴机械臂

上位机(PC/ROS2)
      │ EtherCAT / CAN
      ↓
  控制器(嵌入式Linux)
   ├── CAN ──→ 关节1驱动器 ──→ BLDC + 编码器
   ├── CAN ──→ 关节2驱动器 ──→ BLDC + 编码器
   ├── CAN ──→ ... (关节3-6)
   ├── RS-485 → 末端执行器
   └── Ethernet → 视觉系统

四足机器人

WiFi/4G ──→ 上位机(Jetson)
               ├── Ethernet ──→ 深度相机
               ├── USB ────────→ 激光雷达
               ├── SPI ────────→ IMU(高速)
               └── CAN总线
                    ├── 关节1(髋) CAN ID=0x01
                    ├── 关节2(膝) CAN ID=0x02
                    ├── 关节3(踝) CAN ID=0x03
                    └── ... (×4条腿 = 12个关节)

协议选择决策

graph TD
    A[通信需求] --> B{同一块板上?}
    B -->|是| C{速度要求?}
    C -->|高 >1MHz| D[SPI]
    C -->|低-中| E[I2C]
    B -->|否| F{有线还是无线?}
    F -->|有线| G{多少个节点?}
    G -->|2个点对点| H[UART]
    G -->|多个节点| I{实时性要求?}
    I -->|硬实时| J[EtherCAT]
    I -->|中等| K[CAN总线]
    F -->|无线| L{距离?}
    L -->|<100m| M{带宽需求?}
    M -->|高| N[WiFi]
    M -->|低| O[BLE/ESP-NOW]
    L -->|>1km| P[4G/LoRa]

    style D fill:#ffb,stroke:#333
    style E fill:#ffb,stroke:#333
    style H fill:#bfb,stroke:#333
    style J fill:#f9f,stroke:#333
    style K fill:#bfb,stroke:#333
    style N fill:#bbf,stroke:#333
    style O fill:#bbf,stroke:#333
    style P fill:#fbb,stroke:#333

通信安全考虑

常见问题

问题 影响 对策
数据丢失 指令未执行 CRC校验、重传机制
延迟抖动 控制不稳定 实时协议、优先级
电磁干扰 数据错误 差分信号(CAN/RS-485)、屏蔽线
信号衰减 通信中断 适当传输距离、信号增强
地线环流 信号偏移 光耦隔离、差分传输

错误处理策略

  • CRC校验:检测传输错误(CAN内置)
  • 超时重传:丢包后自动重发
  • 心跳机制:定期检测连接状态
  • 看门狗:通信中断后自动进入安全状态

小结

  • 机器人通信分为板内、板间、无线局域和长距离四个层次
  • 每层有对应的最佳协议选择
  • 电机控制需要硬实时(CAN/EtherCAT),传感器采集需要中等实时性
  • 带宽、延迟、可靠性三者需要权衡
  • 通信架构设计要与机器人整体架构匹配
  • 抗干扰和错误处理是实际系统可靠运行的关键

评论 #