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 以瀏覽我們的開源機器人專案。