← 返回项目课程项目 · 2026 · 已交付

独立完成

ROS 视觉计算器与机械臂

YOLOv5 + TensorRT 的手写算式识别,相机标定坐标变换驱动 JetMax 机械臂自动抓取答案卡片,完成"看算式→算结果→拿答案"全流程。

ROS MelodicYOLOv5 / PyTorchTensorRTOpenCVJetson Nano / JetMax相机标定与视觉伺服

背景

《ROS 机器人应用开发实践》课程的综合作业,目标是让 HiWonder JetMax 机械臂(Jetson Nano 主控)完成一个完整的视觉任务:通过摄像头识别手写的四则运算算式(数字 0-9 与符号 +、-、*、/、=),自动计算结果,再控制机械臂用气动吸盘把对应的答案数字卡片抓起来,放到等号后面。

问题定义

难点不在任何单一环节,而在链路的完整性:手写体识别本身抖动大,算式识别错了后面全错;Jetson Nano 算力有限,检测必须实时;图像里识别的像素坐标要换算成机械臂能到达的世界坐标;抓取过程中机械臂一动,目标位置就变了,必须能自我纠偏。

方案

数据集与模型。用机械臂摄像头采集手写数字与符号图像,LabelImg 标注 15 个类别,旋转、缩放、亮度调整做数据增强,按 8:1:1 划分训练/验证/测试集。训练 YOLOv5(输入 160×160),再经 ONNX 导出为 TensorRT 引擎在 Nano 上推理,满足实时性要求。系统支持手写识别与卡片识别两个模型的切换。

算式解析。检测结果先做多级过滤:置信度阈值(卡片 0.5 / 手写 0.25)、面积阈值、IoU 0.4 的 NMS 去重;按 x 坐标排序拼成算式字符串,再验证合法性(必须以等号结尾、含运算符、无连续运算符等)。为避免识别抖动误判,要求连续 30 帧稳定识别到同一算式才计算结果。

坐标转换与抓取。利用相机内参矩阵与旋转向量、平移向量,把图像像素坐标反投影到世界坐标系。抓取采用 7 阶段分步策略:移动到目标上方 → 下降到检测高度做视觉确认(偏差超 10 像素则微调)→ 下降到抓取高度 → 吸盘吸附 → 抬升 → 移动到放置位 → 释放。多位答案重复该流程,抓取阶段自动切换到卡片识别模式。

我的角色

独立完成数据集制作、模型训练与 TensorRT 转换、ROS 节点开发、坐标转换与抓取逻辑的全部实现,并完成实践报告。

结果

系统稳定跑通全流程:识别算式、计算结果、抓取答案卡片放置到等号后方。调试中解决了四类典型问题——重叠检测框(IoU 去重)、手写识别不稳(降阈值 + 稳定帧数)、移动后抓取偏差(视觉微调)、模式切换误触发(500ms 冷却)。

复盘

这是第一次把深度学习、机器人控制和视觉伺服串成一个物理闭环。最大的体会是:真实世界里的“准确率”不只是模型指标,而是每一环误差的累积——所以每一环都要有自己的校验和纠偏机制。后来做手写数字识别训练平台时,MNIST 那套预处理与调试经验正好反哺了这里对手写体的理解。