Open Source Robotics

精选高质量开源机器人项目、工具和软件,推动机器人社区发展。

Perspective-n-Point

  • 又称: PnP
  • 类别: Sensing › Perception outputs
  • 标签: pose-estimation, computer-vision, projective-geometry, 3d-perception, localization

根据物体上 n 个已知 3D 点及其在图像中的 2D 投影,求已标定相机相对于该物体的位姿的问题。

定义

n 点透视(Perspective-n-Point,PnP)问题是:已知物体上 n 个点的 3D 坐标,已在图像中找到它们的 2D 像素位置,并且相机内参已知,求相机与物体之间的旋转和平移。由于 3D 点以度量单位表示,解是一个完整的度量位姿,没有尺度歧义,而且只需一幅图像。无论是相机根据地图对自身进行定位,还是估计其前方物体的位姿,出现的都是同一个问题。

三对对应点是最低要求。P3P 问题最多有四个有效解,因此需要用第四个点来选出正确的解。点更多时,问题是超定的,可以对噪声进行平均。Lepetit、Moreno-Noguer 和 Fua(2009)提出的 EPnP 把各点表示为四个虚拟控制点的组合,以与 n 成线性关系的时间求解一般情况。实际的处理流程通常把放在 RANSAC 中、用来剔除错误对应的最小求解器,与最终最小化重投影误差的非线性细化(例如使用 Levenberg-Marquardt)结合起来。OpenCV 的 solvePnP 和 solvePnPRansac 实现了这些步骤。

PnP 是学习型位姿估计器常用的后端。DOPE 等网络预测物体 3D 包围盒各角点和质心在图像中的位置,PnP 则利用物体的已知尺寸和相机内参,把这些关键点转换为 6-DoF 位姿。把几何计算留在网络之外,意味着同一个模型可以用于不同的相机。精度取决于点的分布范围和深度:当所有点都挤在一起,或位于远离相机的一个小平面上时,位姿就会变得病态,并可能在两个相似的解之间翻转,这是小型方形基准标记的一个已知歧义。

为何重要

PnP 是从 2D 检测到 3D 位姿的标准桥梁。基准标记跟踪、基于地图的视觉定位、增强现实,以及用于抓取的基于关键点的物体位姿估计,都依赖于它。

主要应用

  • 基于关键点的 6-DoF 物体位姿估计
  • 使用 AprilTag 和 ArUco 进行基准标记跟踪
  • 相机相对于 3D 地图的定位
  • 视觉里程计和 SLAM 的初始化
  • 增强现实叠加和相机跟踪

实际应用

一台抓取机器人使用一个在合成图像上训练的关键点网络,检测一个已知麦片盒的 3D 包围盒的八个角点和质心。对每次检测,九个预测像素以及由盒子尺寸得到的对应 3D 点,连同相机的内参矩阵一起,被传给一个 RANSAC PnP 求解器;它丢弃与其余点不一致的关键点,并通过最小化重投影误差来细化位姿。相机坐标系下的位姿借助手眼标定被变换到机器人基座坐标系,再发送给抓取规划器。团队会拒绝平均重投影误差超过几个像素的位姿,这能过滤掉大多数角点被遮挡而预测不准的情况。

常见误解

  • PnP 需要深度数据 — 只要已知 3D 点和内参,它就能从单幅 RGB 图像恢复度量位姿
  • 三个点就能给出唯一的位姿 — P3P 最多可能返回四个解,因此需要更多的点来消除歧义
  • 点越多总能弥补错误的对应 — 最小二乘求解器会被离群点带偏,因此需要 RANSAC 或鲁棒损失
  • PnP 就是 ICP — PnP 把 3D 点与 2D 图像观测对齐;ICP 对齐两组 3D 点集

谁需要了解

  • 计算机视觉和机器人感知工程师
  • 为抓取开发位姿估计的开发者
  • SLAM 和视觉定位研究人员
  • 使用基准标记的工程师

相关技术

  • EPnP
  • P3P
  • RANSAC
  • OpenCV solvePnP
  • AprilTag

相关术语

  • Camera Intrinsics
  • SE(3)
  • Extrinsic Calibration
  • Visual Odometry
  • Iterative Closest Point
  • SLAM

相关项目

  • Cartographer: Google's real-time 2D and 3D SLAM system for multi-platform robotics
  • Nav2: ROS 2 navigation stack with path planning and obstacle avoidance for mobile robots
  • pySLAM: Hybrid Python/C++ visual SLAM pipeline with classic and deep-learning front-ends
  • AprilTag: The standard visual fiducial marker system for robot localization and pose estimation
  • MRPT: Comprehensive C++ toolkit for mobile robotics, SLAM, and sensor-based navigation
  • GLIM: GPU-accelerated 3D lidar SLAM framework for any range sensor, from AIST

本网站需要 JavaScript 才能正常运行。请启用 JavaScript 以浏览我们的开源机器人项目。