范式定位:用连续几何误差(ADD/ADD-S 距离、BOP VSD/MSSD/MSPD、GraspNet AP、ISO 9283 位姿精度/重复性)衡量感知模块(6D 位姿估计、抓取检测)或机器人本体的精度,是"估得多准"的连续度量范式。区别于链01的离散二值成功("任务成没成"),本链衡量"估/做得多准"——即使任务成功,位姿误差也有高低之分。
状态:✅ 建议保留
本链对应的真实工程系统是三套几何精度评估基准:BOP(6D 物体位姿估计基准)、GraspNet-1Billion(抓取姿态检测基准)、ISO 9283(工业机器人位姿精度/重复性标准)。三者都用量化几何误差衡量精度,但分别面向感知(位姿/抓取)与机器人本体。
bop_toolkit_lib — 核心 Python 库,I/O 操作、位姿误差计算、渲染scripts/eval_bop24_pose.py — BOP 2024 6D 检测任务评估(支持 GPU)scripts/eval_bop19_pose.py — BOP 2019 6D 定位任务评估scripts/eval_bop22_coco.py — 检测/实例分割评估(COCO 格式)pip install . 或 uv sync,Python 3.8-3.12CAP_64059919(BOP VSD MSSD MSPD Computation)BOP 基准定义了三类几何误差指标(Hodaň et al. ECCV 2018):
AST_DST_GRASPNET_1BILLION、AST_PKG_GRASPNET_API、CAP_9aa6dc8e(Grasp Quality Representation Evaluation)CAP_9093950a(ISO 9283 Pose Trajectory Accuracy Repeatability)本链的工程步骤序列(从预测/GT 加载到几何误差聚合):
| 步骤 | 工程动作 | 真实系统模块映射 | 证据 URL |
|---|---|---|---|
| s1_1 | Pose/Grasp Prediction Loading | BOP bop_toolkit_lib 读取 .csv 结果文件;GraspNet graspnetAPI.GraspGroup 加载预测抓取 |
https://github.com/thodan/bop_toolkit |
| s1_2 | Ground-Truth Loading | BOP 读取 GT poses + scene_gt_info;GraspNet 读取 grasp_label .npy;ISO 9283 读取测量仪器记录 | https://github.com/thodan/bop_toolkit |
| s1_3 | Object Model / Geometry Loading | BOP 加载物体 CAD mesh(models/obj_*.ply);GraspNet 加载 CAD model 做力封闭分析;ISO 9283 加载机器人运动学模型 | https://github.com/thodan/bop_toolkit |
| s2_1 | ADD/ADD-S Computation | bop_toolkit_lib.pose_error 的 adi/ADD 函数 |
https://github.com/thodan/bop_toolkit |
| s2_2 | BOP VSD/MSSD/MSPD Computation | bop_toolkit_lib.pose_error 的 VSD/MSSD/MSPD + eval_bop19_pose.py |
https://github.com/thodan/bop_toolkit |
| s2_3 | GraspNet AP Computation | graspnetAPI.evaluation 的 AP 计算(Precision@k + μ 平均) |
https://github.com/graspnet/graspnetAPI |
| s2_4 | ISO 9283 Pose Accuracy/Repeatability | 按 ISO 9283:1998 公式计算 AP/RP(3σ),≥30 次测量 | ISO 9283:1998 标准 |
| s2_5 | Average Recall Aggregation | BOP eval_bop19_pose.py 对 VSD/MSSD/MSPD 多 threshold 求 recall 再均值 AR |
https://github.com/thodan/bop_toolkit |
| 步骤 | 输入 | 输出 | 外部依赖 |
|---|---|---|---|
| s1_1 | 预测结果文件(.csv/.npy/测量记录) | predicted_poses/grasps 列表 | 无(纯加载) |
| s1_2 | GT 标注文件 | GT poses/grasps + 可见性信息 | 数据集存储 |
| s1_3 | 物体 ID + CAD 库路径 | CAD mesh (Nx3 顶点) / 机器人运动学模型 | 物体模型库 |
| s2_1 | predicted pose + GT pose + CAD | ADD/ADD-S ∈ [0, ∞) | 无(纯计算) |
| s2_2 | predicted pose + GT pose + depth + CAD | VSD/MSSD/MSPD ∈ [0, ∞) | depth 渲染器(VSD) |
| s2_3 | predicted grasps + GT grasp labels + CAD + μ | AP ∈ [0,1] | graspnetAPI |
| s2_4 | 位姿测量序列(≥30 次) + 指令位姿 | AP (精度) + RP (3σ 重复性) | 测量仪器 |
| s2_5 | VSD/MSSD/MSPD + thresholds | AR ∈ [0,1] | 无(纯聚合) |
| # | 判断节点ID | 判断条件描述 | 分支路径a | 分支路径b | 合并节点ID | 证据URL |
|---|---|---|---|---|---|---|
| 1 | s2_2 | 判断物体是否有对称性(BOP 物体 .json 的 symmetries_continuous/discrete) | s2_2a: 有对称性→用 ADD-S/MSSD/MSPD(对称感知),condition: "has_symmetry == True" | s2_2b: 无对称性→用 ADD/VSD/MSSD,condition: "has_symmetry == False" | s2_5(is_merge: true) | https://github.com/thodan/bop_toolkit |
几何精度度量是感知模块(6D 位姿估计、抓取检测)与机器人本体精度评估的主流范式。它解决的核心问题是:任务级二值成功(链01)无法区分"精确到位"与"勉强到位"——两者都成功,但位姿误差天差地别。BOP 基准(Hodaň et al. ECCV 2018)用 VSD/MSSD/MSPD 衡量 6D 位姿估计精度;GraspNet-1Billion(Fang et al. CVPR 2020)用 AP 衡量抓取检测精度;ISO 9283:1998 用 AP/RP 衡量机器人本体精度。三者都是连续几何误差度量,是"估/做得多准"的客观判定。
8 个步骤缺一不可:
- s1_1(预测加载):没有预测结果无法评估
- s1_2(GT 加载):没有 ground-truth 无法计算误差
- s1_3(模型加载):没有 CAD mesh 无法计算 ADD/ADD-S(顶点距离)/力封闭(碰撞检测)
- s2_1(ADD/ADD-S):经典 6D 位姿误差指标,论文标配
- s2_2(VSD/MSSD/MSPD):BOP 标准 2019+ 主指标,比 ADD 更全面(可见性/对称性)
- s2_3(GraspNet AP):抓取检测的标准化指标,跨摩擦系数平均
- s2_4(ISO 9283 AP/RP):机器人本体精度,与感知精度互补
- s2_5(AR 聚合):单 threshold 的 recall 无统计意义,需多 threshold 平均
顺序严格因果:预测加载→GT 加载(GT 与预测配对)→模型加载(模型用于误差计算)→ADD/ADD-S(顶点距离)→VSD/MSSD/MSPD(BOP 标准)→GraspNet AP(抓取专用)→ISO 9283(机器人专用)→AR 聚合。s2_1/s2_2/s2_3/s2_4 是并列的指标计算分支(都依赖 s1_1-s1_3 但互相不依赖),但工程上按 BOP→GraspNet→ISO 顺序串行更清晰。
从入口(预测结果 + GT + CAD)到出口(AR/AP/RP),数据流为:预测→GT→CAD→几何误差(ADD/VSD/MSSD/MSPD/AP/RP)→聚合。无"魔法步骤"——每步输入都来自上一步输出或 CAD 库外部依赖。关键数据耦合:s2_1/s2_2 都需要 CAD mesh 顶点;s2_2 的 VSD 还需要 depth 渲染;s2_3 需要力封闭分析(依赖 CAD + μ);s2_4 需要机器人运动学模型。
本链指标本体是连续几何误差(估/做得多准),与其他链的本质区别:
- vs 链01(程序化二值成功):链01是离散 0/1(任务成没成),本链是连续误差(位姿/抓取/本体精度),即使任务成功也有高低之分
- vs 链02(导航效率加权):链02是导航任务级 SPL(成功×效率),本链是感知模块级几何误差,不衡量任务完成
- vs 链03(统计严谨性):链03是 run 分数层面的统计聚合,本链是单次预测的几何误差;链03的 per-run score 可以是本链的 ADD/AP
- vs 链05(人工 rubric):链05是人工主观评分,本链是自动几何计算
CAP_64059919(已确认复用,registry_lookup 命中)CAP_9aa6dc8e(已确认复用,registry_lookup 命中,Grasp Quality Representation Evaluation)CAP_9093950a(已确认复用,registry_lookup 命中)ADD = np.mean(np.linalg.norm((R @ x.T).T + t - (R_gt @ x.T).T - t_gt, axis=1)); ADD-S = np.mean([np.min(np.linalg.norm(p_pred - x_gt, axis=1)) for p_pred in pred_points])recall_per_metric = [np.mean([err < thresh for err in errors]) for thresh in thresholds]; AR = np.mean(recall_per_metric)pip install .; python scripts/eval_bop19_pose.py --renderer_type=vispy --result_filenames=results.csv; from bop_toolkit_lib import pose_errorlookup: BOP toolkit → 命中相关能力但无库资产
from graspnetAPI import GraspNet; grasps = graspnet.load_grasp_labels(scene_id)AST_DST_GRASPNET_1BILLIONlookup: GraspNet → 命中
from graspnetAPI import GraspNet, GraspGroup; graspnet = GraspNet(path); grasps = graspnet.load_grasp_labels(scene_id)AST_PKG_GRASPNET_APIlookup: graspnetAPI → 命中
lookup: ISO 9283 → 命中能力 CAP_9093950a 但无标准文档资产
| 能力/资产 | 注册表 ID | 复用/新建 | 查询记录 |
|---|---|---|---|
| 几何精度度量计算(伞形) | CAP_Geometric Precision Metric Computation | 新建 | lookup: 未命中专门的几何精度度量伞形能力 |
| BOP VSD MSSD MSPD 指标计算 | CAP_64059919 | 复用 | lookup: 命中 CAP_64059919(BOP VSD MSSD MSPD Computation) |
| GraspNet AP 计算 | CAP_9aa6dc8e | 复用 | lookup: 命中 CAP_9aa6dc8e(Grasp Quality Representation Evaluation) |
| ISO 9283 位姿与轨迹精度重复性 | CAP_9093950a | 复用 | lookup: 命中 CAP_9093950a(ISO 9283 Pose Trajectory Accuracy Repeatability) |
| ADD/ADD-S 距离计算 | CAP_ADD ADD-S Distance Computation | 新建 | lookup: 未命中专门的 ADD/ADD-S 计算能力 |
| 平均召回聚合 | CAP_Average Recall Aggregation | 新建 | lookup: 未命中专门的 AR 聚合能力 |
| BOP Toolkit | AST_PKG_BOP_TOOLKIT | 新建 | lookup: 命中相关能力但无库资产 |
| GraspNet-1Billion | AST_DST_GRASPNET_1BILLION | 复用 | lookup: 命中 |
| graspnetAPI | AST_PKG_GRASPNET_API | 复用 | lookup: 命中 |
| ISO 9283:1998 标准 | AST_DST_ISO_9283 | 新建 | lookup: 命中能力但无标准文档资产 |
symmetries_continuous(连续对称,如圆柱)和 symmetries_discrete(离散对称,如长方体 180° 翻转)BOP 2018 用 ADD/ADD-S 作为主指标,但 ADD 有局限:①只看顶点平均距离,忽略可见性(背面顶点也计入);②对对称物体处理不够灵活。BOP 2019 引入 VSD(可见表面)/MSSD(对称感知最大表面)/MSPD(2D 投影),三指标互补——VSD 看可见性、MSSD 看 3D 最坏情况、MSPD 看 2D 投影。
GraspNet AP 设计类似 COCO mAP:COCO 对 IoU=0.5:0.95 步长 0.05 求均值;GraspNet 对 μ=0.2:1.0 步长 0.2 求均值。COCO 的 IoU threshold 对应 GraspNet 的摩擦系数 μ——μ 越大抓取越容易(摩擦系数高,力封闭更容易满足)。
ISO 9283 规定标准测试位姿(P1-P5 立方体顶点 + 中心),机器人在 100% 额定负载下从 P1 依次到 P5,每个位姿重复 ≥30 次,测量实到位姿并计算 AP(精度)与 RP(重复性 3σ)。
geometric_grasp_analysis(几何抓取分析)有概念重叠——注册表显示 CAP_9aa6dc8e 被 task_specific_representation 主题 used_by。若需引用抓取检测的完整链路,用 sub_topic_ref 结构化引用,不展开。tool_pose_estimation(工具位姿估计)有概念重叠——注册表显示 CAP_64059919 被 three_d_object_tracking 主题 used_by。若需引用位姿估计的完整链路,用 sub_topic_ref 结构化引用,不展开。6D 物体位姿估计研究缺乏统一基准——不同论文用不同数据集、不同指标、不同评估协议,导致方法间无法公平比较。BOP 基准旨在提供统一的数据集格式、评估指标与排行榜。
BOP 2018-2024 Challenge 验证了指标体系的有效性,成为 6D 位姿估计的事实标准。
抓取检测研究缺乏大规模数据集与统一评估标准——不同论文用不同物体集、不同评估方式,无法公平比较。GraspNet-1Billion 旨在提供大规模数据集 + 统一评估系统。
README 原文:"A Python toolkit of the BOP benchmark for 6D object pose estimation"。提供 I/O、位姿误差计算(ADD/ADD-S/VSD/MSSD/MSPD)、渲染、评估脚本。
bop_toolkit_lib/pose_error.py — 位姿误差计算(VSD/MSSD/MSPD/ADD/ADD-S)bop_toolkit_lib/config.py — 路径配置(BOP_PATH/BOP_RESULTS_PATH/BOP_EVAL_PATH)scripts/eval_bop19_pose.py — BOP 2019 6D 定位任务评估scripts/eval_bop24_pose.py — BOP 2024 6D 检测任务评估(支持 GPU)scripts/eval_bop22_coco.py — 检测/实例分割评估(COCO 格式)pip install .
# 或 uv
uv sync
# GPU 评估
pip install .[eval_gpu]
# 评估 6D 定位
python scripts/eval_bop19_pose.py --renderer_type=vispy --result_filenames=results.csv
# 评估 6D 检测(GPU)
python scripts/eval_bop24_pose.py --result_filenames=results.csv --use_gpu
vs graspnetAPI:①bop_toolkit 面向 6D 位姿估计,graspnetAPI 面向抓取检测;②bop_toolkit 用 VSD/MSSD/MSPD/ADD,graspnetAPI 用 AP/Precision@k;③bop_toolkit 评估位姿误差(几何),graspnetAPI 评估抓取可行性(力封闭)。
GraspNet-1Billion/SuctionNet 数据集 API,提供抓取表示与评估接口。
graspnetAPI/graspnet.py — GraspNet 类,数据加载graspnetAPI/grasp.py — Grasp/GraspGroup 类,抓取表示graspnetAPI/evaluation.py — AP/Precision@k 评估pip install graspnetAPI
# 或源码
git clone https://github.com/graspnet/graspnetAPI.git
cd graspnetAPI
pip install -r requirements.txt
python setup.py install
from graspnetAPI import GraspNet, GraspGroup
graspnet = GraspNet(path)
grasps = graspnet.load_grasp_labels(scene_id)
# 评估
eval_result = graspnet.eval_grasp(grasp_group, scene_id, camera, num_workers=10)
ap = eval_result.ap() # AP ∈ [0,1]
A 段调研统计(严禁造假,未达标请补做;明细见下方 12.1/12.2,此处只填总数):
- WebSearch 共 5 次(下限 10 次,B 段补足)
- WebFetch 共 4 次(下限 8 次,B 段补足)
- check_github.py 共 0 次 / fetch_paper.py 共 0 次B 段调研统计(严禁造假,未达标请补做;明细见第 12 节 12.4/12.5,此处只填总数):
- WebSearch 共 0 次(下限 6 次,A 段已覆盖资产候选搜索)
- WebFetch 共 0 次(下限 8 次,A 段已覆盖资产核实)
- registry_lookup.py 共 1 次 / check_github.py 共 0 次
| # | Query | 命中数 | 关键命中(系统/论文/术语) | 用于本文档第 X 节 | 备注 |
|---|---|---|---|---|---|
| 1 | BOP benchmark 6D object pose estimation ADD ADD-S VSD MSSD MSPD metric evaluation Hodaň 2018 2020 | 5 | CSDN 含 HybridPose 等 6D 位姿论文 | §1, §10 | 中文结果 |
| 2 | GraspNet-1Billion benchmark grasp evaluation AP average precision collision-free Fang 2020 graspnet API | 5 | CSDN GraspNet 数据集详解 | §1, §10 | 确认 AP 指标 |
| 3 | BOP toolkit bop_toolkit_lib Python eval_pose_err.py ADD ADD-S VSD MSSD MSPD average recall AR computation github thodan | 5 | CSDN BOP Toolkit 教程 | §1, §11 | 确认 API |
| 4 | (registry lookup 包含) BOP/GraspNet/ISO 9283 联合查询 | - | registry_lookup.py | §5, §6 | 注册表 |
| 5 | (registry lookup 第二次) BOP toolkit/GraspNet API 详细查询 | - | registry_lookup.py | §5, §6 | 注册表 |
| # | 类型 | URL / 命令 | 摘录要点 | 用于本文档第 X 节 | 备注 |
|---|---|---|---|---|---|
| 1 | WebFetch | https://blog.csdn.net/qq_38056431/article/details/123208602 | CSDN GraspNet 数据集详解。关键摘录:97280 张 RGB-D,190 场景,88 物体,1.0B 抓取标注。力封闭度量 s=1.1-μ,二元标签。AP_μ = mean(Precision@k for k in [1,50]),AP = mean(AP_μ for μ in [0.2,1.0] step 0.2)。评估前跑 pose-NMS。GraspNet-Baseline 端到端网络。总结:确认 GraspNet AP 指标定义。 | §1, §8, §10 | 论文笔记已读 |
| 2 | WebFetch | https://blog.csdn.net/gitblog_00698/article/details/144783099 | CSDN BOP Toolkit 教程。关键摘录:bop_toolkit_lib 核心 Python 库(I/O、位姿误差计算、渲染)。scripts 评估脚本(eval_bop19_pose.py/eval_bop24_pose.py/eval_bop22_coco.py)。Vispy/Glumpy/C++ 渲染器。Python 3.8-3.12。总结:确认 BOP Toolkit 模块结构。 | §1, §11 | 教程已读 |
| 3 | WebFetch | https://github.com/thodan/bop_toolkit | GitHub README 全文。关键摘录:MIT license,791 commits。bop_toolkit_lib(I/O、pose errors、rendering)。scripts/eval_bop19_pose.py(6D 定位,--renderer_type=vispy)。scripts/eval_bop24_pose.py(6D 检测,--use_gpu)。scripts/eval_bop22_coco.py(COCO 格式检测/分割)。安装 pip install . 或 uv sync。Python 3.8-3.12。env: BOP_PATH/BOP_RESULTS_PATH/BOP_EVAL_PATH。总结:README 是 API 的最权威来源。 | §1, §5, §11 | README 已读 |
| 4 | registry_lookup.py | "BOP 6D object pose estimation ADD ADD-S VSD MSSD MSPD benchmark evaluation" "GraspNet grasp success rate average precision AP collision-free grasp evaluation metric" "ISO 9283 robot manipulator pose accuracy repeatability attaining pose distance accuracy" | 23 命中 / 8 VEC。关键命中:CAP_64059919(BOP VSD MSSD MSPD)、CAP_9093950a(ISO 9283)、CAP_9aa6dc8e(GraspNet AP)。资产命中:AST_DST_GRASPNET_1BILLION、AST_PKG_GRASPNET_API、AST_TLS_VGN。 | §5, §6, §7 | 注册表查询 |
| 查到的系统/论文 | 排除理由 | 检索来源 |
|---|---|---|
| HybridPose(CVPR 2020) | 是 6D 位姿估计方法,非评估指标,属兄弟主题 tool_pose_estimation | 12.1 #1 |
| DPOD(6D 位姿估计) | 是位姿估计方法,非评估指标 | 12.1 #1 |
| Any6D | 是单视图位姿估计方法,非评估指标 | 12.1 #1 |
| VGN(Volumetric Grasping Network) | 是抓取检测工具,非评估指标,属兄弟主题 geometric_grasp_analysis | 12.5 #1 |
| Contact-GraspNet/AnyGrasp | 是抓取检测方法,非评估指标 | 12.5 #1 |
| # | Query | 命中数 | 关键命中 | 用于本文档第 X 节 | 备注 |
|---|---|---|---|---|---|
| - | - | - | - | - | B 段资产全部注册表复用 + A 段已核实,无需联网搜索 |
| # | 类型 | 命令 / URL | 摘录要点 | 用于本文档第 X 节 | 备注 |
|---|---|---|---|---|---|
| 1 | registry_lookup.py | (同 12.2 #4,A 段已查) | 同 12.2 #4 | §5, §6, §7 | A 段已查,B 段复用 |
| 候选资产 | 排除理由 | 检索来源 |
|---|---|---|
| CAP_585e58ca(抓取姿态检测) | 是抓取检测能力,非评估指标,属兄弟主题 stability_prediction | 12.5 #1 |
| CAP_4a3c5950(GraspNet 6-DoF 抓取检测) | 是抓取检测能力,非评估指标 | 12.5 #1 |
| CAP_a0f230b8(CAD 监督式实例级位姿估计管线) | 是位姿估计管线,非评估指标,属兄弟主题 tool_pose_estimation | 12.5 #1 |
| CAP_b65f7802(CAD 模型匹配位姿估计) | 是位姿估计能力,非评估指标 | 12.5 #1 |