pose6d-lab

6D object pose estimation on real RGB-D images (YCB-Video, BOP format), a classical baseline against FoundationPose, and the estimated pose driving a simulated Franka Panda grasp in MuJoCo. Code, scripts and raw JSON: https://github.com/pavanyadava007/pose6d-lab

Pose overlays on real test images (green = ground truth, orange = estimate)

pose overlay overlay_000049_000148.jpgpose overlay overlay_000050_000682.jpgpose overlay overlay_000057_001083.jpg

Pose to grasp in simulation

FoundationPose estimate on the simulated camera Franka Panda picking the object using the estimated pose

Data: YCB-Video, BOP'19 test targets, 300 real RGB-D images / 1374 object instances (25 images per scene from all 12 test scenes, seed 0). 2D input for both methods: BOP ground-truth mask_visib.

1. Pose accuracy on real images (same images, same masks)

MethodBOP ARAR_VSDAR_MSSDAR_MSPDADD(-S) < 0.1 dADD(-S) AUCADD-S AUCADD-S < 0.1 d (all objects)median rot. err (sym.-aware)median trans. err
FPFH + RANSAC + ICP (Open3D)42.766.033.428.731.949.991.688.1113.8 deg4.4 mm
FoundationPose (public weights)91.188.195.389.894.092.997.499.02.7 deg2.4 mm

All values in percent unless a unit is given. BOP AR from the official bop_toolkit (results/bop_<method>.json); ADD(-S), AUC and errors from scripts/eval_metrics.py (results/metrics_<method>.json). ADD-S is used for the five objects treated as symmetric in the PoseCNN convention; AUC uses the YCB-Video convention (0 to 10 cm).

2. Runtime per object instance (mask given, measured on one NVIDIA L4)

Methodmedianmeanp90max
FPFH + RANSAC + ICP (Open3D)0.04 s0.04 s0.07 s0.09 s
FoundationPose (public weights)2.46 s1.95 s2.49 s2.53 s

60 seeded instances after 5 warm-up runs, no other job of this project running (the host is shared); GPU NVIDIA L4, CPU AMD EPYC 7R13 Processor (the classical method runs on the CPU). Source: results/runtime.json.

3. ADD(-S) < 0.1 d recall by visible fraction of the object

visible fractionnFPFH + RANSAC + ICP (Open3D)FoundationPose (public weights)
0.0-0.380.00.0
0.3-0.6717.071.8
0.6-0.934432.091.9
0.9-1.095134.097.3

4. ADD(-S) < 0.1 d recall per object

objectnFPFH + RANSAC + ICP (Open3D)FoundationPose (public weights)
01_002_master_chef_can10015.071.0
02_003_cracker_box754.0100.0
03_004_sugar_box12530.4100.0
04_005_tomato_soup_can1496.794.6
05_006_mustard_bottle5028.096.0
06_007_tuna_fish_can1009.0100.0
07_008_pudding_box250.0100.0
08_009_gelatin_box250.0100.0
09_010_potted_meat_can7513.373.3
10_011_banana5028.0100.0
11_019_pitcher_base7574.7100.0
12_021_bleach_cleanser10034.0100.0
13_024_bowl5072.0100.0
14_025_mug5028.098.0
15_035_power_drill10046.0100.0
16_036_wood_block2596.0100.0
17_037_scissors2532.0100.0
18_040_large_marker5014.056.0
19_051_large_clamp5086.0100.0
20_052_extra_large_clamp5066.0100.0
21_061_foam_brick2596.0100.0

5. From pose to grasp: Franka Panda in MuJoCo (simulation)

pose sourcegrasp success03_004_sugar_box04_005_tomato_soup_can05_006_mustard_bottle09_010_potted_meat_canmedian grasp position errmedian grasp yaw errmedian pose time
ground-truth pose (executor upper bound)99/100 (99.0 %)24/2525/2525/2525/250.0 mm0.0 deg0.00 s
FoundationPose100/100 (100.0 %)25/2525/2525/2525/251.1 mm0.3 deg2.46 s
FPFH + RANSAC + ICP91/100 (91.0 %)17/2525/2525/2524/250.7 mm0.4 deg0.03 s
centroid only (position, fixed yaw)33/100 (33.0 %)7/253/2513/2510/2515.2 mm40.1 deg0.00 s

100 seeded layouts (seeds 0..99), each pose source sees the same layout and the same rendered RGB-D (640x480, fovy 45, Gaussian depth noise 1.5 mm, mask = simulator instance segmentation). Success = target lifted > 10 cm and still held after a 0.5 s hold. Grasp yaw error is meaningless for the round soup can. Source: results/grasp_sim.json.

Timings measured on one NVIDIA L4. The grasp numbers are simulation only.