固废AI分拣-GTP
目录
下面用工程可落地的方式讲清楚:
2D 相机 → 分割结果 → 机械臂抓取 的完整流程(实际工业机器人分拣线的标准做法)。
✅ 总体思路:2D 分割只能给“形状 + 轮廓”,抓取必须从 2D → 3D 映射
2D 图像本身没有深度信息,机械臂无法知道物体的高度、倾斜角、抓取点的世界坐标。
因此要解决两件事:
1)从 2D 分割轮廓 → 找到有效抓取点(像素坐标)
2)把像素坐标 → 转换到机械臂坐标系(世界坐标)
两个问题都解决后才能抓。
✨ 一、步骤 1:在 2D 分割结果中生成抓取点
常用算法 3 类:
① 边缘中点抓取(适用于规则物体:易拉罐、瓶子)
从分割 mask 中:
- 找出最长轮廓线
- 找到轮廓的中点
- 以法向量方向设置夹爪角度
🔧 用到的库:OpenCV + Mask(分割结果)
② 最大内接圆(适用于不规则垃圾)
在 mask 区域内求:
最大内接圆圆心 = 最稳定的抓取点
抓吸盘非常适合此方法。
③ 基于学习的抓取模型(强烈推荐)
如果物体杂乱堆叠,传统几何方法不好用,可用:
- GGCNN / GGCNN2
- GraspNet
- DexNet 2.0 (suction)
输入:分割 mask + 图像
输出:最佳抓取点 + 抓取角 + 抓取质量 q
这些模型本质是:
从 2D 图像预测最优抓取姿态
(即便堆叠严重也能抓)
✨ 二、步骤 2:从像素坐标 → 转到机械臂坐标(关键步骤)
2D 分割提供的是像素点 (u, v),但机械臂需要 3D:
(x, y, z, roll, pitch, yaw)
必须完成两个校准:
① 相机内参 + 外参标定
- 内参:焦距 fx, fy,主点 cx, cy
- 外参:相机坐标 → 机械臂坐标的 4×4 转换矩阵
使用:
- OpenCV 标定板
- ROS camera_calibration
得到矩阵:
T_cam_to_robot
② 确定 Z 值(深度)的方法
2D 相机没有深度,工业界三种解决方案:
**方案 A(最常见)
→ 固定高度场景,Z 值是常量**
如果物体都放在同一条输送带上:
z = 输送带高度 - 相机高度(固定值)
适用于:
- 易拉罐
- 玻璃瓶
- 大部分固废
这是最简单、最高效的工业做法。
**方案 B
→ 利用分割 mask 的面积估计深度(大致)**
如果相机高度固定:
面积 ∝ 1 / z²
面积越小 → 说明物体越远(z 越大)
但是精度有限。
**方案 C(最准确)
→ 用双目/结构光深度相机补充深度(最推荐)**
即:
- 用 2D 分割
- 用深度相机获取 z
- 2D + 深度 → 稳定抓取点
绝大多数工业分拣(玻璃/金属/碎片)最终都会换深度相机。
✨ 三、步骤 3:坐标变换
把像素点 (u, v) 转成相机坐标:
Xc = (u - cx) * Z / fx
Yc = (v - cy) * Z / fy
Zc = Z
再用外参:
P_robot = T_cam_to_robot * [Xc, Yc, Zc, 1]^T
就得到机械臂能执行的 3D 坐标。
✨ 四、步骤 4:机械臂抓取动作生成
抓取动作需要位置 + 姿态:
1) P = [x, y, z]
2) 抓取角度(来自最大内接圆法向量 or GGCNN预测)
3) 抓取前 → approach pose(上方 5–10 cm)
4) 夹取/吸取
5) 抬升 + 转运 + 放置
使用工具:
- ROS MoveIt (轨迹规划)
- 工业臂 SDK(遨博/遨智/UR 等)
📌 五、行业标准流程总结(可以用于 PPT)
- 2D相机拍照 → 分割 mask
- 在 mask 中找到抓取点(中点/最大内接圆/AI抓取模型)
- 像素坐标 → 相机坐标(利用内参)
- 相机坐标 → 机械臂坐标(利用外参)
- 执行抓取(MoveIt 轨迹规划)
⭐ 如果你愿意,我还能给你:
✔ 画一张 “2D相机分割 → 抓取”完整流程图(可用于方案汇报)
✔ 给出 代码模板(OpenCV + PyTorch + MoveIt)
✔ 给你评估 是否换深度相机更合适
✔ 给你配置 最低可行系统(硬件+软件)清单
你需要哪一块?

浙公网安备 33010602011771号