过去几年,大家谈论最多的是“大模型”,但要让 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+librealsense(pyrealsense2)
- 从相机实时读取 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
-
运行OpenVINO™加速的YOLOv8n-seg分割模型,其中视频源为RealSense相机采集
-
运行OpenVINO™加速的YOLOv8n-seg分割模型,具体的环境搭建以及开源代码可以参考OpenVINO™ Notebooks中的实例 https://github.com/openvinotoolkit/openvino_notebooks/blob/latest/notebooks/yolov8-optimization/yolov8-instance-segmentation.ipynb
-
需要注意的是,视频源需要改为RealSense相机采集,这里需要初始化RealSense pipeline,同时采集深度信息和彩色图像信息并对齐 ,核心代码如下:
-
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 // 2xs = 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 Nonereturn 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 跑起来了,那恭喜你,你已经拥有了一个可用于实验的“机器人眼睛”。接下来,我们就可以开始思考:如何让这双眼睛,带动机器人的手脚和大脑,一起动起来。
延伸阅读
-
OpenVINO™加速YOLOv8系列模型的 Notebook代码示例:https://github.com/openvinotoolkit/openvino_notebooks/tree/latest/notebooks/yolov8-optimization
-
RealSense 与OpenVINO™集成阅读文档:https://dev.realsenseai.com/docs/openvino
-
RealSense安装指南: https://dev.realsenseai.com/docs/installation

被折叠的 条评论
为什么被折叠?



