AI 视觉机械臂 — 项目框架与实施流程
本文档依据毕业论文《AI 视觉机械臂》,并结合本仓库中的 Maixcam 与 Project 代码工程整理,用于说明系统分层、主流程步骤及所需技术栈。
https://github.com/pieceofApple/AI-vision-robotic-arm.git

1. 项目定位与目标
- 定位:基于边缘计算的「视觉感知 + 机械臂执行」一体化平台,在成本可控前提下实现物体识别、目标定位与抓取类任务。
- 论文方案:Maixcam(视觉与 AI 推理) + ESP32(运动控制与中继) + 4 轴机械臂(5 路 PWM 舵机驱动),视觉与控制器之间采用 UDP 实时通信。
- 核心链路:单目图像 → 目标检测 → 像素坐标到棋盘格世界坐标(透视变换)→ 将 ((x,y,z)) 等指令下发 ESP32 → 逆运动学 解算关节角 → PWM 驱动舵机;辅以梯形速度规划、线性插值轨迹以平滑运动。
2. 总体架构(三层)
| 层次 | 职责 | 论文对应 | 本仓库代码参考 |
|---|---|---|---|
| 感知层 | 采集图像、畸变校正、棋盘格角点、YOLO 检测、世界坐标换算 | 第三章 3.2 | Project/Maixcam/main.py、Maixcam/纸团-demo/main.py |
| 通信层 | Maixcam ↔ ESP32 的 UDP 文本指令(如坐标、rst、stop 等) |
3.1.3 | main.py 中 udp_communication;ESP 端 WiFiUDP |
| 执行层 | 逆运动学、工作空间校验、轨迹/速度规划、5 路 PWM | 3.3 | Project/robot_arm_5PWM/robot_arm_5PWM.ino |
说明:论文中视觉侧强调将训练好的 YOLOv5s 转为 int8 / cvimodel 以适配 TPU;当前工程中的在线推理多采用 Maix 官方 nn.YOLOv5 + .mud 模型(MaixHub 部署路径),原理一致,均为边缘侧 YOLO 推理。仓库 Maixcam/模型文件/ 下另有 YOLO11 OBB 等 .mud,可用于旋转框等扩展场景,与论文正文以 v5s 为主略有差异,选型时以实际任务为准。
3. 硬件框架
- Maixcam:GC4653 摄像头、Wi‑Fi/蓝牙;算力侧含 NPU(论文中用于加速 YOLO)。
- ESP32:连接同一局域网,监听 UDP;运行逆运动学与 PWM 输出。
- 机械臂:论文为 4 轴结构、5 路 PWM(多一路如夹爪);臂长参数见论文表 4.1(如 P、A1~A4),与
robot_arm_5PWM.ino中宏定义一致。 - 标定场地:棋盘格(论文示例 6×8 格、中心为原点);摄像头置于棋盘上方,视野覆盖工作区。
4. 软件模块与目录对应
| 模块 | 内容 | 路径提示 |
|---|---|---|
| 端侧视觉主程序 | 采集、lens_corr、棋盘格、getPerspectiveTransform、YOLO 检测、逆透视得世界坐标、UDP |
Project/Maixcam/main.py |
| 应用描述 | Maix 应用元数据 | Project/Maixcam/app.yaml |
| 纯检测 Demo | 无标定与网络,便于验模 | Maixcam/纸团-demo/main.py |
| PC 标定与可视化 | OpenCV 标定、坐标映射等(论文 PC 端标定) | Project/Maixcam/PC_cv2/*.py、论文代码/相机标定.py |
| 机械臂固件 | WiFi、UDP、逆运动学、状态机、PWM | Project/robot_arm_5PWM/robot_arm_5PWM.ino |
| 备份/试验 | 历史 UDP 测试等 | Project/save_backup/ |
5. 主流程步骤(建议实施顺序)
5.1 研发与标定阶段
- 数据集与训练(PC):按论文构建场景数据(如小纸团),用 YOLOv5s 训练;再按 Sophgo / Maix 工具链 导出为设备可用的 int8(论文)或按 Maix 流程导出
.mud(工程现状)。 - PC 相机标定(可选但推荐):用棋盘格求内参与畸变,与端上
lens_corr或粗略校正配合;参考PC_cv2/与论文 2.3、3.2.1。 - 部署模型到 Maixcam:将模型放到设备约定路径(如
main.py中的nn.YOLOv5(model=...))。
5.2 运行阶段(端侧闭环)
- 初始化:摄像头分辨率与模型输入一致;启动 目标检测线程 与 UDP 线程(
threading)。 - 每帧视觉:
- 读图 →
lens_corr; - 转 OpenCV 灰度 →
findChessboardCorners+cornerSubPix; - 成功则计算世界四角与图像四角 → 透视矩阵 M(异常时用上一帧
last_M兜底); - YOLO 检测 → 目标中心像素坐标 →
cv2.perspectiveTransform(配合 (M^{-1}))得到 世界坐标 (cm 级)。
- 读图 →
- 通信:ESP32 侧按协议发请求或接收指令;Maixcam 将
x,y,z,flag或论文表 3.1 所列格式发往 ESP32(具体字符串以固件解析为准)。 - 执行:ESP32 逆运动学 → 关节角 → 梯形规划 + 线性插值 → PWM;完成抓取/放置/复位等状态切换。
5.3 联调与测试
- 论文第四章:检测准确率、坐标映射误差、实时性、重复定位、整机拾放等;环境为稳定 Wi‑Fi、统一光照与棋盘摆放。
6. 技术栈汇总
| 类别 | 技术 |
|---|---|
| 视觉 / AI | Python 3(Maix 设备)、maix(camera、display、image、nn、app)、OpenCV(opencv-python)、NumPy;YOLOv5s 训练(PyTorch 生态,PC 端);模型部署:TPU/NPU 量化 int8(论文)或 Maix .mud(工程) |
| 几何与标定 | 棋盘格角点、透视变换 / 单应性、亚像素角点;可选传统相机标定 |
| 通信 | UDP(socket)、Wi‑Fi;多线程 threading、queue |
| 控制 | ESP32、Arduino 框架、WiFi / WiFiUDP、math;逆运动学(几何法)、梯形速度规划、线性插值轨迹、PWM 舵机 |
| 工具 | Arduino IDE + ESP32 板支持;PC 上 Python 标定脚本;可选 SolidWorks / 3D 打印(臂体,论文描述) |
7. 小结
本项目在论文层面是 「Maixcam 边缘视觉 + ESP32 实时控制 + 单目透视定位」 的完整闭环;在仓库层面,Project/Maixcam/main.py 与 Project/robot_arm_5PWM/robot_arm_5PWM.ino 分别对应感知通信与执行两大核心,Maixcam/纸团-demo 用于快速验证检测模型,PC_cv2 与 论文代码 支撑标定与坐标映射开发。实施时以论文第三章、第四章为理论依据,以当前工程中的 IP、端口、指令字符串和模型路径为运行配置依据。
