具身智能 101 with OpenVINO™(1):在 Intel® AI PC 上用 RealSense 实现分割+测距

过去几年,大家谈论最多的是“大模型”,但要让 AI 真正“动起来”,走向机器人和具身智能世界,感知(Perception) 是第一块要解决的基石:机器人必须能理解自己看到的是什么、在哪里、离自己多远。

这篇文章,我们就用一台 搭载 Intel® Ultra9 275HX处理器(代号Arrow Lake)的 AI PC,配合 Intel® RealSense™ D455 深度相机和 OpenVINO™ 工具套件,搭建一个简单但实用的 demo:

  • 前端:RealSense 采集 彩色 + 深度 图像

  • 模型:YOLOv8 分割模型(YOLOv8n-seg)

  • 推理:OpenVINO™ 在本地加速

  • 输出:分割每个物体,并估计距离(单位:米),叠加到画面上显示

这会是我“Robotics with OpenVINO™/具身智能101 with OpenVINO™”系列博客的第一篇,从最基础的视觉感知开始,后面再逐步扩展到控制、规划、多模态等方向。

1. 整体架构:一台 AI PC,就像一台迷你机器人脑

整个demo的 pipeline 如下:

  1) RealSense D455

  • 输出彩色图像(RGB)和深度图像(Depth)
  • 深度图每个像素存的是“离相机的真实距离”(米)

 2) Python+librealsensepyrealsense2

  • 从相机实时读取 RGB + Depth
  • 使用 rs.align 做对齐:把深度图坐标对齐到彩色图坐标

 3) OpenVINO™+YOLOv8 分割模型

  • 使用 Ultralytics YOLO 导出 yolov8n-seg 为 OpenVINO™ IR模型格式
  • 在 AI PC 上用 OpenVINO™ 加速推理(CPU / GPU / NPU)

 4) 后处理与可视化

  • 从 YOLO 输出中解析每个目标的检测框 + 分割 mask
  • 在检测框中心区域从深度图中取一块小窗口,计算中位数作为距离
  • 把分割区域用半透明颜色覆盖在画面上,并在目标旁显示:person:0.92 1.25m

从机器人视角看,这就是一个简化版的“场景理解模块”:知道前方有哪些物体、在什么位置、离自己有多远,已经具备做避障、抓取、导航等更高层行为的基础。

2. 环境准备:AI PC + RealSense + OpenVINO™

硬件

  • 一台 Intel AI PC

  • 一只 Intel RealSense D455 深度相机

  • USB 3.0 线,建议直连机器上的 USB3 口,避免不稳定的 HUB

软件

  • 安装 RealSense SDK

    • 从 GitHub 安装 librealsense(或者直接安装官方 MSI)

    • 安装完成后,使用 RealSense Viewer 确认:

      • RGB Camera 画面正常

      • Depth 流可以开启(Depth或Stereo Module)

    • 之后 跑脚本前记得关掉 Viewer,避免占用设备。

3. 创建虚拟环境及运行脚本

  • 创建Python虚拟环境

python -m venv ov_realsense_segov_realsense_seg\Scripts\activate      # Windows
import pyrealsense2 as rs
# 创建 pipeline 和配置pipeline = rs.pipeline()config = rs.config()
# 深度流:640x480, 30fps, z16 格式config.enable_stream(rs.stream.depth, 640, 480, rs.format.z16, 30)# 彩色流:1280x720, 30fps, BGR8 格式config.enable_stream(rs.stream.color, 1280, 720, rs.format.bgr8, 30)
# 把深度对齐到彩色坐标系align_to = rs.stream.coloralign = rs.align(align_to)
pipeline.start(config)
while True:    frames = pipeline.wait_for_frames()    aligned_frames = align.process(frames)    depth_frame = aligned_frames.get_depth_frame()    color_frame = aligned_frames.get_color_frame()    if not depth_frame or not color_frame:        continue       # color_frame -> OpenCV BGR 图像    color_image = np.asanyarray(color_frame.get_data())    # depth_frame 保留为 RealSense 对象,后面直接 get_distance()
  • 用深度图做测距:从 2D 框到 3D 距离

有了对齐后的 depth_frame,测距就非常自然了。在检测框中心区域,取一个小窗口(例如 5×5 像素),读取每个像素的 get_distance(x, y),过滤掉 0(无效值),取中位数作为该物体距离。具体实现代码如下:

def get_box_distance(depth_frame, x1, y1, x2, y2, window=5):    width = depth_frame.get_width()    height = depth_frame.get_height()       # 框中心    cx = int((x1 + x2) / 2)    cy = int((y1 + y2) / 2)      cx = max(0, min(cx, width - 1))    cy = max(0, min(cy, height - 1))      half = window // 2    xs = range(max(0, cx - half), min(width, cx + half + 1))    ys = range(max(0, cy - half), min(height, cy + half + 1))      depths = []    for yy in ys:        for xx in xs:            d = depth_frame.get_distance(xx, yy)  # 单位:米            if d > 0:                depths.append(d)      if not depths:        return None       return float(np.median(depths))

在绘制检测框时,只要多做一步:

distance = get_box_distance(depth_frame, x1, y1, x2, y2)if distance is not None and 0 < distance < 10.0:    label = f"{cls_name}:{score:.2f} {distance:.2f}m"else:    label = f"{cls_name}:{score:.2f}"
cv2.putText(vis, label, (x1, max(y1 - 5, 0)), ...)

这样,你的画面上就不只是“识别出椅子、电脑、人”,而是能显示:

person:0.94  1.28mchair:0.81  0.75mlaptop:0.90  0.62m

对于机器人来说,这比纯 2D 的分割信息有用得多,可以直接用于避障、抓取等任务。

整体运行效果如下:

4. 下一步:从感知走向具身智能

到这里,我们已经完成了一个最小闭环的具身视觉模块:

  • 利用 RealSense 获取 几何信息(Depth) 和 语义信息(Segmentation);

  • 用 OpenVINO™ 在 Intel AI PC 上本地加速推理,优化CPU/GPU/NPU上的推理性能;

  • 把每个物体的类别、位置、距离用直观方式叠加到画面上。

这只是“具身智能 101”的第一步。接下来可以做很多有趣的延伸:

  • 把距离信息接入一个简单的控制逻辑,实现“靠近/远离”目标;

  • 结合 3D 点云和相机内参,把目标投影到世界坐标系中;

  • 接入机械臂或移动机器人底盘,实现“看到目标 → 走过去 → 抓住它”的闭环。

在这个系列的后续文章中,我会继续基于 Intel AI PC + OpenVINO™ 的组合,探索:

  • 如何用 OpenVINO™加速模仿学习模型

  • 如何用OpenVINO™ 加速多模态大模型,让机器人“看图说话”;

  • 如何用本地 LLM + 视觉模型构建简单的机器人 Agent。

  • 如何实现3D重建

  • ……

如果你已经在自己的 AI PC 上把这个“分割 + 测距” demo 跑起来了,那恭喜你,你已经拥有了一个可用于实验的“机器人眼睛”。接下来,我们就可以开始思考:如何让这双眼睛,带动机器人的手脚和大脑,一起动起来。

延伸阅读

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值