返回Glossary

点云

定义

点云是 3D 点的无序集合,其中每个点由其空间坐标 (x, y, z) 和可选的附加属性(如颜色 (RGB)、表面法向量、强度或语义标签)表示。点云是机器人学中的主要 3D 数据表示,提供 2D 图像无法提供的度量空间信息:到物体的实际距离、它们的 3D 形状以及它们与机器人的空间关系。

与体素网格或网格等结构化表示不同,点云不对表面连接或网格对齐做出假设。这使它们对于表示任意复杂的场景既灵活又内存高效,但也为神经网络处理带来了挑战,因为数据本质上是无序的且采样不规则。

来源:点云如何生成

几种传感器技术产生点云,每种都有不同的权衡:

  • RGB-D 摄像头(结构光)— Intel RealSense D435/D455、Microsoft Azure Kinect 和 Orbbec 摄像头投射红外图案并测量变形以计算深度。范围:0.2-10 米。分辨率:640x480 到 1280x720 深度像素。成本:150-400 美元。最适合近距离室内操纵。
  • 立体深度摄像头 — ZED 2、OAK-D 使用立体视觉(两个 RGB 摄像头)通过视差计算深度。在室外工作(不像结构光),并提供高分辨率颜色,但在无纹理表面上苦苦挣扎。范围:0.3-20 米。
  • LiDAR — 旋转或固态激光扫描仪(Velodyne、Ouster、Livox)测量激光脉冲的飞行时间。高精度(毫米级)和长距离(最多 200 米)。自动驾驶和大规模制图的标准。成本:500-10,000 美元以上。
  • 飞行时间 (ToF) 摄像头 — 发射调制光并测量相移以计算深度。快速(60+ fps),但分辨率和精度低于结构光。用于某些移动机器人和消费设备。

机器人学中的应用

抓取规划:点云是 6 自由度抓取预测的主要输入。GraspNet、Contact-GraspNet 和 AnyGrasp 等网络接收场景点云并预测按成功概率排列的夹爪姿态。3D 几何直接显示稳定抓取所需的表面法线、曲率和间隙。

物体检测和姿态估计:3D 物体检测器(VoteNet、PointPillars)和姿态估计器(DenseFusion、FoundationPose)使用点云来定位物体并估计其 6 自由度姿态以进行操纵。当物体部分遮挡或堆叠时,点云特别重要。

导航和制图:移动机器人使用 SLAM 算法(LOAM、LIO-SAM、KISS-ICP)从 LiDAR 点云构建占用地图。生成的 3D 地图实现自主导航和障碍物避免。

场景重建:来自不同视点的多个点云可以配准(对齐)以构建环境的完整 3D 重建。这用于数字孪生、模拟到真实环境建模和工作空间分析。

策略输入:某些学习的操纵策略直接使用点云作为观察。3D-Diffusion-Actor 和 DP3(3D Diffusion Policy)使用 PointNet 风格的编码器处理点云以预测动作,为需要精确深度理解的任务提供比基于 2D 图像的策略更好的空间推理。

处理库和工具

  • Open3D — 用于点云处理、可视化和 3D 重建的 Python/C++ 库。提供体素下采样、法线估计、ICP 配准、RANSAC 平面拟合和网格重建。机器人学研究中最受欢迎的库。
  • PCL(点云库)— 具有全面过滤、分割、配准和特征提取的 C++ 库。原始标准,在 ROS/ROS2 管道中广泛使用。比 Open3D 更成熟,但 Python 化程度较低。
  • 基于 NumPy 的处理 — 对于简单操作(裁剪、下采样、转换),原始 NumPy 数组操纵通常最快。点云只是 Nx3 或 Nx6 数组,许多操作简化为向量化数学。
  • PointNet / PointNet++ — 处理原始点云的神经网络架构。PointNet 使用每点 MLP 和最大池化来实现排列不变性。PointNet++ 添加分层分组以进行局部特征提取。所有学习的点云处理的基础。
  • ROS2 集成 — sensor_msgs/PointCloud2 消息类型是在 ROS2 中发布和订阅点云的标准。PCL 和 Open3D 都有 ROS2 转换实用程序。

压缩和传输挑战

单个 640x480 深度帧产生大约 300,000 个 3D 点。以 30 fps,那是每秒 900 万个点。多摄像头设置可以轻松生成每秒 3000-5000 万个点,造成带宽和存储挑战:

体素下采样:最常见的预处理步骤。体素网格(例如,5 毫米分辨率)用其质心替换每个体素内的所有点,将点数减少 10-100 倍,同时保留几何结构。

感兴趣区域裁剪:丢弃机器人工作空间外的点(例如,仅保留表格上 1 米 x 1 米 x 0.5 米的盒子)。仅这一项就可以减少 80-90% 的数据。

八叉树压缩:分层空间分割,支持渐进式细节级别流。由 PCL 的压缩模块和 Draco(Google 的开源 3D 压缩库)使用。

网络传输:对于遥操作和云机器人学,点云必须压缩以进行传输。ROS2 的 DDS 中间件为点云主题支持尽力而为的 QoS,以延迟换取可靠性。

实际要求

校准:深度摄像头需要内在校准(工厂提供)和外在校准(摄像头到机器人变换)。校准误差直接转化为点云定位误差,导致抓取失败。手眼校准精度通常为 1-2 毫米,足以进行桌面操纵。

噪声和伪影:深度传感器产生嘈杂的测量,特别是在深度不连续处(物体边缘)、反射表面(金属、玻璃)和透明材料处。统计异常值去除和双边过滤是标准预处理步骤。

计算:实时点云处理(30 fps)需要现代 CPU。GPU 加速处理(基于 CUDA 的 Open3D、cuPCL)实现高帧率实时应用的密集点云处理。

用于操纵的点云处理管道

RCSV 用于桌面操纵的标准点云处理管道遵循以下步骤:

  • 1. 捕获和转换 — 从校准摄像头(RealSense D435/D455、ZED 2)获取深度帧。应用外在校准以将点从摄像头框架转换为机器人基础框架。对于多摄像头设置,合并来自 2-3 个视点的点云以减少遮挡。
  • 2. 感兴趣区域裁剪 — 丢弃操纵工作空间外的点(通常是表格上方 0.6 米 x 0.6 米 x 0.4 米的盒子)。这消除了背景杂乱并将数据量减少 80-90%。
  • 3. 表面移除 — 使用 RANSAC 拟合平面并移除距拟合平面 5 毫米内的点。这将表格上的物体与表面本身隔离。
  • 4. 噪声过滤 — 统计异常值去除(移除其到 k 个最近邻的平均距离超过 2 个标准差的点)。这消除了深度传感器噪声和物体边缘处的飞行像素。
  • 5. 体素下采样 — 下采样到 3-5 毫米体素分辨率以进行抓取规划,或 1-2 毫米用于精密任务。这确保均匀的点密度并减少下游算法的计算。
  • 6. 物体分割 — 欧几里得聚类或学习分割(Mask3D、SAM-3D)以识别单个物体。每个集群成为抓取规划的候选。

Related terms