YOLO-3D + 双目相机 (RGB + 深度 + 点云) → 3D 位置 + 抓取姿态

工业可直接用、能部署到 ModelZoo、能对接机械臂的全套方案,包含:原理、训练、推理、3D 解算、抓取姿态生成,全程一步到位。

一、核心方案(最稳、最常用)

硬件

双目工业相机 / 深度相机(输出:RGB 图 + 深度图 + 点云)

模型

YOLO-3D / YOLOv8-3D(检测物体 + 输出 3D 框中心)

输出

物体 3D 坐标 (X,Y,Z) + 抓取姿态 (Roll,Pitch,Yaw) + 夹爪宽度直接发给机器人抓取。


二、整体流程(5 步搞定)

  1. 双目相机输出 RGB + 深度图 + 点云
  2. YOLO-3D 识别物体,输出 2D 框 + 3D 中心偏移
  3. 深度图 / 点云获取物体真实 Z 距离
  4. 相机内参 + 外参 → 解算 3D 世界坐标
  5. 计算最优抓取姿态(角度 + 方向 + 夹爪宽度)

三、训练 YOLO-3D 模型(生成 ModelZoo 推理模型)

1. 安装环境

bash

运行

复制代码
pip install ultralytics  # YOLOv8-3D 官方支持

2. 数据集(双目 / 深度相机采集)

每张图需要:

  • RGB 图像
  • 对应深度图
  • 标注:物体类别 + 2D 框 + 3D 中心点

数据集格式(YOLO-3D)

plaintext

复制代码
images/
  train/001.jpg
labels/
  train/001.txt
格式:class_id x y z w h d (x,yz为3D中心相对值)

3. 训练 YOLO-3D

python

运行

复制代码
from ultralytics import YOLO

# 加载YOLOv8-3D预训练模型
model = YOLO("yolov8-3d.pt")

# 训练
model.train(
    data="your_3d_data.yaml",
    epochs=100,
    imgsz=640,
    batch=4,
    device=0
)

4. 导出 ModelZoo 推理模型

python

运行

复制代码
model.export(format="onnx", simplify=True, imgsz=640)  # 导出ONNX通用模型

得到 yolo3d.onnx → 可在相机、地平线、嵌入式直接推理。


四、推理:获取物体 3D 真实坐标(核心代码)

python

运行

复制代码
import cv2
import numpy as np
from ultralytics import YOLO

# ======================
# 1. 加载模型 + 相机参数
# ======================
model = YOLO("yolo3d.onnx")
fx, fy = 500, 500      # 相机内参
cx, cy = 320, 240

# ======================
# 2. 读取双目/深度相机数据
# ======================
rgb = cv2.imread("rgb.jpg")
depth = cv2.imread("depth.png", cv2.IMREAD_UNCHANGED)  # 16位深度图

# ======================
# 3. YOLO-3D 推理
# ======================
results = model(rgb)
boxes_3d = results[0].boxes_3d  # 3D检测框

# ======================
# 4. 解算真实3D坐标
# ======================
for obj in boxes_3d:
    # 像素中心
    u, v = obj.center[0], obj.center[1]
    
    # 深度Z(单位:米)
    Z = depth[int(v), int(u)] / 1000.0
    
    # 3D坐标(相机坐标系)
    X = (u - cx) * Z / fx
    Y = (v - cy) * Z / fy
    
    print(f"3D位置:X={X:.3f}, Y={Y:.3f}, Z={Z:.3f}")

五、自动生成抓取姿态(机械臂直接可用)

抓取姿态 = 3D 位置 (XYZ) + 旋转角 (RPY)

python

运行

复制代码
# ======================
# 生成抓取位姿(最终可发给机器人)
# ======================
def get_grasp_pose(X, Y, Z, obj_w, obj_h):
    """
    输入:物体3D坐标 + 宽高
    输出:抓取位姿 XYZ + RPY + 夹爪宽度
    """
    # 抓取点(物体中心上方5mm)
    grasp_x = X
    grasp_y = Y
    grasp_z = Z + 0.005

    # 姿态(垂直向下抓取,可根据物体调整角度)
    roll = 0.0
    pitch = 3.14159
    yaw = 0.0

    # 夹爪开合宽度(物体宽度 + 5mm余量)
    gripper_width = obj_w + 0.005

    return [grasp_x, grasp_y, grasp_z, roll, pitch, yaw, gripper_width]

六、最终输出(机器人可直接执行)

plaintext

复制代码
抓取位姿:
X: 0.235 m
Y: 0.120 m
Z: 0.450 m
Roll: 0.0°
Pitch: 180°
Yaw: 0.0°
夹爪宽度: 0.08 m

七、这套方案优势

双目相机 + YOLO-3D = 工业最稳组合 ✅ 输出3D 坐标 + 抓取姿态 ,直接抓✅ 模型导出 ONNX,可放入 ModelZoo ✅ 支持 相机 / 地平线 / 嵌入式 部署✅ 抗干扰、速度快、精度高

相关推荐
齐翊17 分钟前
怎么确认 AI 看懂了你的提示词?
人工智能·github·ai编程
饼干哥哥42 分钟前
Reddit VOC调研太慢?搭一个AI专家团队半小时洞察任何品类|以猫用饮水机为例
人工智能·算法·ai编程
以和为贵1 小时前
前端也能搞懂 RAG:用 JS 手写一条最小检索增强链路
前端·人工智能·面试
地平线开发者2 小时前
Transformer模型部署之性能优化指南
算法
武子康2 小时前
调查研究-192 AI Agent 之间也需要“信任“:把多 Agent 信任变成可测指标
人工智能·openai·agent
地平线开发者2 小时前
人在途中:从“编译失败”到“模型可落地”——CUDA 自定义算子
算法·自动驾驶
Smoothcloud_润云2 小时前
Hermes Agent 的上下文记忆机制:一个开源 Agent 是怎么"记住"你的
人工智能·agent·gpu
早点睡啊2 小时前
精读 LangChain 官方文档(一)总览、安装与快速开始:从 create_agent 跑通第一个智能体
人工智能
牛奶3 小时前
AI时代裁员后:清零是君子豹变
人工智能·程序员