1. 端侧 AI 是什么:模型下到设备,数据不出设备
端侧 AI(Edge AI / On-device AI)= 把训练好的模型部署到设备本地,推理在设备上完成,不需要把数据传云端再等结果。三个特征:
- 模型下到设备:几 KB~几 MB 的参数以代码/常量形式烧进固件;
- 推理在本地:传感器数据 → 模型前向计算 → 输出,全程不离开设备;
- 与云端互补:重模型(大语言模型、大规模训练)在云端,实时/敏感/离线任务在端侧。
对你的场景最贴切的一句话:关节模组里跑一个 20KB 的故障检测模型,和云端跑一个 8GB 的大模型,是两种完全不同的工程——本文只讲前者。
2. 为什么机器人要端侧 AI:延迟、带宽、离线
| 维度 | 云端推理 | 端侧推理 | 机器人的诉求 |
|---|---|---|---|
| 延迟 | 100ms 级(上传+排队+回传) | 1~10ms 级(本地前向) | 控制/避障要 ms 级响应 |
| 带宽 | 多关节×高速传感全上传,总线打爆 | 只上传"结论"(几字节) | CAN/EtherCAT 帧很贵 |
| 离线 | 断网即瘫 | 本地推理不受影响 | 产线/野外不容忍断网 |
| 隐私/安全 | 原始数据出境 | 数据本地消化 | 工艺数据不出厂 |
典型数字(示意):视觉抓取里"看到→决策→动"全链路,云端方案 200ms+,端侧 NPU 方案可以压到 20ms 以内——机械臂抓取飞跑的工件,差的就是这 180ms。
3. 端侧硬件分层:从 MCU 到应用处理器
| 层级 | 代表 | 算力 | 功耗 | 适合任务 |
|---|---|---|---|---|
| MCU(无 FPU/NPU) | Cortex-M0/M3 + CMSIS-NN | 几十~几百 MOPS | mW 级 | 轻量分类:故障检测、振动辨识 |
| RISC-V 高性能 MCU | 先楫 HPM(HPM6000/5300/6E00) | 200~816MHz 主频 + DSP 指令 | 百 mW~W 级 | 轻量 CNN、FOC + 故障检测一芯两用(第 9 节) |
| MCU(带 NPU) | STM32N6、瑞萨 RA8、国产 MCU+NPU | 0.1~几 TOPS | 百 mW 级 | 视觉检测、语音唤醒、姿态估计 |
| 应用处理器 | RK3588(6 TOPS NPU)、Jetson Orin Nano | 几~几十 TOPS | W 级 | 目标检测/位姿/分割等完整视觉 |
| FPGA/ASIC | 自定义数据流 | 按需 | 按需 | 超低延迟固定流水线 |
选型口诀:先在 MCU 上能不能压进 100KB 模型和 10ms 预算,压不进再往上一级——端侧的精髓是用最便宜的硬件完成刚好够用的任务,而不是越大越好。
4. INT8 量化:端侧最关键的"减重"技术
训练出来模型是 FP32(每个权重 4 字节);端侧 MCU 常用 INT8 量化(每个权重 1 字节):
工程事实:10 万参数的模型 FP32 要 400KB,INT8 只要 100KB——正好卡进主流 MCU 的 Flash 预算。这就是"能不能端侧"的分水岭。
5. 端侧 AI 在控制环路里的位置:不碰 FOC
最常见的误区是把 AI 塞进控制律。正确分层是AI 在外环,确定性控制在里环:
为什么:FOC 是 10kHz 级的确定性反馈,任何 AI 推理的 jitter 都会直接污染电流环;而AI 擅长的"看状态、做判断"恰恰是确定性算法不擅长的。各干各的,组合最优。
6. 典型任务 1:关节侧的端侧 AI(故障检测与辨识)
- 输入:一段电流/振动/编码器信号(如 128 点电流窗 + 转速 + 温度);
- 模型:1D CNN 或轻量 MLP(几万~几十万参数,INT8 后几十 KB);
- 输出:类别 + 置信度(正常/齿面磨损/润滑不足/匝间短路……);
- 部署点:关节模组 MCU 内,随每个控制周期采样、低速后台推理;
- 价值:把"坏了才发现"变成"趋势里提前告警",减速器磨损这类慢变量正合适。
注意区分:这类模型学习的是信号特征(频域/时域模式),不是控制对象——它输出的是"建议/告警",不直接进电流环。
7. 典型任务 2:机器人感知(视觉抓取与触觉识别)
- 视觉抓取:端侧 NPU 跑目标检测/6D 位姿估计 → 输出抓取点 → 送给运动学(第 30 篇的 IK)→ 执行。相机数据不出板,延迟从"云"压到"端";
- 触觉识别:灵巧手(第 28 篇)的阵列式触觉 → 端侧分类"抓没抓稳/什么材质/滑动趋势" → 反馈给阻抗控制;
- 语音唤醒:关节/整机上的关键词检测(几 KB 模型),MCU 上常开监听。
共同点:都是"传感→判断→给上层指令",输出量小、实时性要求高——端侧 AI 的天然主场。
8. 部署流程:训练 → 量化 → 转换 → 板端
| 步骤 | 做什么 | 常用工具 | 产出 |
|---|---|---|---|
| ① 训练 | 收集数据、训模型、验证精度 | PyTorch / TensorFlow | FP32 模型 |
| ② 量化 | PTQ(简单)或 QAT(精度敏感时) | torch.ao.quantization / TFLite Converter | INT8 模型 |
| ③ 转换 | 转成目标运行时格式/算子集 | TFLite Micro / ONNX Runtime / CMSIS-NN / 厂商 SDK(RKNN、STM32Cube.AI) | C 数组/模型文件 |
| ④ 板端部署 | 烧进固件、联调、回归验证 | MCU IDE / 板上脚本 | 可运行固件 |
两条硬约束:目标算子必须在目标运行时里存在(TFLite Micro 不支持某些层 → 换结构或手写算子);量化后必须重测(PTQ 掉点超 3% 就上 QAT 或换结构)。
9. 先楫 HPM:国产 RISC-V 上的端侧 AI 实战
国产平台里,先楫(HPMicro)HPM 系列是端侧 AI 与电机控制结合的代表——高性能 RISC-V MCU,多数不带 NPU,靠主频 + DSP/SIMD 指令把 INT8 推理跑进毫秒级:
| 系列 | 定位 | 主频/核 | 端侧 AI 相关 |
|---|---|---|---|
| HPM6000 系列(HPM6750 等) | 高性能通用 | 816MHz 双核 | 小 CNN/音频/视觉前处理 |
| HPM5300 系列 | 电机控制向 | 约 200MHz 双核 | FOC + 故障检测一芯两用 |
| HPM6E00 系列 | 运动控制 + 工业以太网 | 高主频实时核 | 内置 EtherCAT 从站控制器,AI 做感知/辨识 |
要点(参数以官方最新 datasheet 为准):
- 没有 NPU 怎么跑 AI:INT8 卷积本质是乘加——800MHz 级主频 + DSP 指令(对标 CMSIS-NN 的 RISC-V 算子库),几十 KB 模型毫秒级(示意)。选型看"乘加吞吐/主频",不必盯着 TOPS 数字;
- 软件生态:hpm_sdk 开源(GitHub HPMicro),VS Code + OpenOCD / SEGGER Embedded Studio / IAR;TFLite Micro 可移植,卷积算子换成 RISC-V DSP 实现即可;
- 与电机控制一芯两用:HPM5300 自带 3 组 PWM + 高精度 ADC + 编码器接口做 FOC,同核后台跑电流窗故障分类(第 6 节任务 1)——省一块芯片,也天然满足第 5 节"AI 不进电流环"的分层;
- 移植口径:第 11 节的 C 骨架直接可移植到 HPM(把 CMSIS-NN 类算子换成 RISC-V DSP 版本,其余结构不变)。
10. 案例:关节故障分类的小模型长什么样
一个能进 MCU 的最小模型(示意参数):
这个规模说明一件事:端侧 AI 不都是"大模型"——关节故障分类这种"窄任务、强特征"的问题,模型小到可以手写进代码。
11. 可编译 C 代码:INT8 推理骨架
完整可编译:INT8 对称量化的一维卷积 + 全连接推理,纯 C 无依赖,就是第 9 节模型的前向实现:
这段代码就是"模型进 MCU"的最小闭环:训练出的权重变成 C 数组,前向计算就是纯整数乘加——没有浮点卷积、没有运行时依赖,Cortex-M 上几个微秒到几毫秒跑完。
12. 交互演示:部署流水线 + 量化收益对比
左边推进部署五步,右边看同一个模型 FP32 vs INT8 的体积与推理延迟差距——这就是"能不能上 MCU"的决策依据(示意数据):
- ① 训练 → ② PTQ 量化 → ③ 转换 TFLite Micro/CMSIS-NN → ④ 板端部署 → ⑤ 回归验证——逐步推进看每步产物。
- 右侧柱状:FP32 模型 400KB / INT8 100KB,Cortex-M4 推理 8ms / 2ms——量化是"进不进得了 MCU"的分水岭(第 4 节)。
13. 常见坑与工程建议
| 坑 | 现象 | 对策 |
|---|---|---|
| PTQ 掉点超预期 | 量化后精度崩 5%+ | 换 QAT 量化感知训练;或先查权重范围/激活离群点 |
| 算子不支持 | 转换报 "unsupported op" | 查目标运行时算子表;换结构(如用 GAP 代替 flatten)或手写算子 |
| 内存峰值超 SRAM | 板端跑飞/复位 | 看激活内存峰值;减小 batch/输入窗;分层推理 |
| 把 AI 塞进电流环 | FOC 抖动、不稳定 | AI 只做感知/辨识/告警,控制律保持确定性(第 5 节) |
| 只看精度不看延迟 | 模型太大跑不完 | 一开始就定延迟/内存预算,按预算反推模型规模 |
| AI 输出没有置信度 | 误判直接执行 | 输出 softmax 概率,低置信度走"人工/保守路径" |
| 固件空间不足 | 模型塞不进 Flash | INT8 + 剪枝/蒸馏,或模型存外部 Flash 按需加载 |
先问三个问题:① 任务真的需要 AI 吗(规则/查表能不能凑合)?② 输出进不进实时环(进环就危险)?③ 模型最小能做到多少(先定预算再训模型)?——三个都答对,端侧 AI 才不是噱头,而是把"故障提前发现、抓取更快、触觉更准"变成真价值。
一句话收尾:端侧 AI = 小模型 + INT8 量化 + 确定性控制不动。模型几 KB 到几百 KB,推理毫秒级,做感知、辨识、告警——把这三件事做好,比硬塞一个大模型进关节有意义得多。