> ## Documentation Index
> Fetch the complete documentation index at: https://kensou.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Learning forward reverse skills from a single unfi dissection

[//]: # "<!-- ontology-5axis
problem: n/a
representation: n/a
sensor: n/a
paradigm: hybrid
time: per-scene
ref: ../../cheat-sheet/ontology.md §5
\-->"

# 从单条未完成示教中同时学习前向与反向技能用于受约束操作 (Learning Forward & Reverse Skills from a Single Unfinished Demonstration for Constrained Manipulation Tasks)

> **发布时间**：2026-07-15（arXiv:2607.13882v1, cs.RO）
> **论文 / 模型名**：LfD-Screw（论文未给模型缩写；项目主页名 `LfD-Screw`）
> **核心定位**：把接触段示教拆成"常螺旋运动原语序列"，从而用**一条可能被截断的示教**同时得到前向"超出示教长度"的执行和**无需额外数据**的反向技能——比 DMP / DMP+admittance / DMP+twist+admittance 三种 one-shot 基线在 4 个受约束任务上成功率高。

导语：接触丰富（contact-rich）操作的传统 LfD 需要多条**完整**示教，而且只学"正向"；一条被安全约束或重复子动作截断的示教通常直接作废。本文的观察是——这类任务本质上是**分段常螺旋（constant screw）运动**，而螺旋结构对"走多远"不变，因此可以从半条示教里既外推出完整行程，又把 twist 取负得到反向技能。

***

## 🩻 X-Ray 开场

它解决的问题：接触丰富任务里示教贵、常常只有一条、而且因为安全/腕部限位/重复子动作而**没做完**；同时现有 LfD 方法学不出"反向技能"（会锁不会开锁）。
它提出的东西：一条 demo → 自由段用 DMP、接触段用**twist 方向分割**切成若干段 → 每段拟合一个 `π_n = {ŝ_n, q_n, h_n, θ_n^end}` 螺旋原语 → 执行时用 **6D admittance 位姿纠偏 + 1D admittance 进度调速**，进度 `θ` 不被示教长度限制；反向只需 `(ω,v) ↦ (−ω,−v)` 并把原语序列倒过来。
对 spatial AI 研究者的意义：这是一个"**用几何不变量替代数据量**"的干净样本——不训练网络、不做视觉闭环，只靠 SE(3) 结构与力反馈把 one-shot 泛化的自由度从"轨迹长度"换成"螺旋参数"，值得作为"结构化表示 vs 规模化数据"的对照锚点。

***

## 📍 研究全景时间线

```
 经典力/阻抗控制 [5,6,7]          可逆机器人程序 [18]
 任务专用约束建模                 装配-拆解序列 [19]
        │                                │
        ▼                                ▼
 ── 螺旋理论 Mozzi–Chasles ──► 螺旋 LfD [8,9,10] ──► 分段/技能分解
 (任意瞬时刚体运动=绕某轴         多用于自由空间复现       KTS [33] / AWE [31]
  旋转+沿轴平移)                  或"整段一个全局螺旋"      / HGS [10]
        │                                │                     │
        ▼                                ▼                     ▼
   DMP / GMM one-shot 轨迹复现  ──────────────────────►  ★ 本文 (2026-07)
   (自由空间强，接触段弱；                              一条示教 → DMP(自由) +
    假设示教完整；不支持反向)                            twist 方向分割 + 螺旋原语
                                                        + 双通道 admittance
                                                        → 前向可超出示教长度
                                                        → 反向免数据
        │
        └── 本文局限：① 假设每段接触是"常螺旋"（单轴单 pitch）
                       ② 每个关键接触阶段必须至少被部分观测
                       ③ 无视觉闭环，物体位姿只靠起始 AprilTag
                       ④ 螺旋拧紧需周期性 regrasp（~90°），stitching 误差累积
                       ⑤ 执行速度未做优化（作者自述）
```

***

## 1 · 核心架构 / 方法总览

### 1.1 系统组件对比表

| 模块 | 输入 | 输出 | 学习（离线）/ 执行（在线）差异 | | |
| - | - | - | - | - | - |
| 示教采集（kinesthetic） | 人拖拽 Franka Panda 末端 | 单条 `{T_i} ∈ SE(3)` 轨迹 + wrench | 仅离线一次；文中未报告采集频率 | | |
| DMP 编码 | **整条**示教轨迹 | DMP 参数 | 离线拟合；执行时**只跑到接触检测点**（前向），反向时用**时间反演**轨迹重学一个 DMP | | |
| 接触检测 | 实测 wrench | 接触相位切换信号 | 在线；阈值属安全阈值（论文称 task-dependent，正文未给数值） | | |
| Twist 方向分割 | 平滑后 SE(3) 轨迹 | 边界索引 `{(s_n, e_n)}` | 离线；参数 `B, τ_ω, τ_v, w_ω, w_v` 全任务固定（数值在项目主页，正文未给） | | |
| 螺旋原语拟合 | 单段位姿序列 | `π_n={ŝ_n,q_n,h_n,θ_n^end}` | 离线；低维优化 `(ŝ,q,h,s)`，Huber 加权最小二乘 | | |
| 6D admittance 纠偏 | 实测 wrench `w_ee` | `Δx_ee`（末端系位姿修正） | 在线；`M Δẍ + B Δẋ + K Δx = w_ee` | | |
| 1D 进度 admittance | 标量负载 `L`（Eq.12） | `θ̇ = θ̇_0 + v_θ` | 在线；`M_θ v̇_θ + B_θ v_θ = −L` | | |
| 反向技能生成 | 前向 `π_n` 序列 | `π̃_n` + 逆序序列 | **在线、零额外数据**；`(ω,v) ↦ (−ω,−v)` | | |
| 接触释放探测 | 螺旋轴正交方向的小圆 dither + wrench | 是否已脱离接触 | 在线；比较 \`median( | load | )\` 与阈值 |
| 重抓策略（仅拧螺丝） | 绕螺旋轴累计旋转量 | 松手 → 反向转 90° → 重抓 | 在线；>≈90° 触发 | | |
| 螺旋搜索（contact onset） | 接触点前后短窗方向余弦相似度 + 接触力 | 是否触发 spiral search | 在线；论文称细节在项目主页 | | |

### 1.2 关键机制

**⚡ Eureka Moment：接触丰富操作的运动段本质是"常螺旋"——而常螺旋结构对执行长度不变，所以"没做完的示教"不是缺陷，它已经足够定义整段任务；把 twist 取负、原语序列倒序，就免费得到反向技能。**

这个洞见一句话把三个痛点连起来解决：

1. **外推**：`T_des(θ) = T_0 exp(ξ̂θ)` 里 `θ` 是自由标量，"示教停在哪" 只是 `θ_n^end` 的一个**参考值**（论文明确：`θ_n^end` 只用于初始化执行速度，**不作终止条件**）。终止由 `θ̇` 持续低于阈值决定。
2. **反向**：螺旋参数 `(ŝ, q, h)` 描述的是一条几何约束轴，正向/反向共用同一条轴 → 反向不需要重新示教、不需要重新拟合。
3. **抗噪**：分割只看**方向**（6D 单位方向特征 + PCA 主方向 + 余弦相似度），不看速度/时间/dwell，因此对短而抖的接触段稳健——这是它与 KTS/AWE 类方法的正面差异。

### 1.3 信息流

```
            ┌────────────── 一次人类动觉示教 ───────────────┐
            │         {T_i} ∈ SE(3)（全段，可能被截断）        │
            └───────────────────┬─────────────────────────┘
                                │
                    ┌───────────▼────────────┐
                    │ 整段先编码成 DMP        │
                    └───────────┬────────────┘
                                │
   ═══════════ 执行期在线（前向） ═══════════
   机器人从起始位姿开始
        │
        ├─ DMP 复现自由空间运动 ──────────────► 直到 wrench 触发接触
        │                                          │
        │                          ┌───────────────▼────────────────┐
        │                          │ 接触 onset 检查：方向一致？力大？ │
        │                          │ 是 → 对齐后 spiral search        │
        │                          └───────────────┬────────────────┘
        │                                          │
   ══════ 离线（示教已采完后做一次）══════            │
        │                                          │
   接触段 → SE(3) 平滑 → 逐步 twist 方向特征 f_i ∈ R^6
        │                                          │
        ├─ 分块（长度 B）→ 块内 PCA 主方向 (μ^ω_j, μ^v_j)
        ├─ 分块扫描 + 双向余弦阈值 (τ_ω, τ_v) + j+1 二次确认 → 候选边界
        ├─ 块内样本级细化（argmin 方向一致性代价 Eq.4/5）
        ├─ 全局几何精修（相邻段方向相似 → 合并）
        └─ 短动作/dwell 清理（净位移+净旋转低于阈值 → 并入邻段）
                                │
                                ▼
                     每一段拟合螺旋原语 π_n
              min Σ ρ(‖[w_R r_i^ω; w_T r_i^v]‖₂)   ← Huber, 低维 (ŝ,q,h,s)
                                │
                                ▼
   ═══════════ 执行期在线（接触段） ═══════════
   for n = 1..N:
        ├─ 名义位姿 T_des(θ) = T_0 exp(ξ̂_n θ)      （局部系，T_0=本原语起始位姿）
        ├─ 6D admittance: M Δẍ_ee + B Δẋ_ee + K Δx_ee = w_ee  → 叠加纠偏
        ├─ 分解 wrench 到螺旋轴：F∥, τ∥, F⊥, τ⊥ → L = Σ k·(…)
        ├─ 1D admittance: M_θ v̇_θ + B_θ v_θ = −L → θ̇ = θ̇_0 + v_θ   （阻力大→自动减速）
        └─ 若 θ̇ < 阈值 且 持续 → 本原语完成，n ← n+1
                                │
                                ▼
   ═══════════ 反向执行（零额外数据） ═══════════
   π̃_n = (ω,v) ↦ (−ω,−v)，序列 {π̃_N, …, π̃_1}，同样 admittance
        ├─ 周期探测：螺旋轴正交方向小圆 dither → median|load| < 阈值 ⇒ 已脱离接触
        ├─ 脱离后：用**时间反演轨迹**学到的 DMP 复现剩余自由空间运动
        └─ 回到起始抓取位姿
```

***

## 2 · 数学核心

📌 **Napkin Formula**

```
一条示教  =  自由段(DMP)  +  Σ_n  常螺旋原语 π_n = {ŝ_n, q_n, h_n, θ_n^end}
执行:  T_des(θ) = T_0 · exp(ξ̂_n θ)        ← θ 无上界，示教长度只是参考
调速:  θ̇ = θ̇_0 + v_θ,  M_θ v̇_θ + B_θ v_θ = −L   ← 阻力 L 大 ⇒ 自动减速
反向:  (ω, v) ↦ (−ω, −v),  顺序 {π̃_N … π̃_1}      ← 免费，不重学
```

**① 目标：把段内位姿解释成"一个 twist + 一个进度标量"**

```
T_i^rel = T_0^{-1} T_i ≈ exp(ξ̂ θ_i)                                   (6)
```

* `T_0`：该段第一个位姿（**局部系**，所有原语参数都在这个系里）
* `ξ = (ω, v) ∈ R^6`：常 twist；screw 坐标形式 `ξ = [θ̇ŝ; −θ̇ ŝ×q + h θ̇ ŝ]`（Eq.2）
* `θ_i`：进度标量（旋转段≈累计转角；纯平移段≈沿轴位移）

**② 拟合：在 se(3) 里做加权 Huber 最小二乘**

```
r_i = log( exp(ξ̂θ_i)^{-1} · T_i^rel ) ∈ R^6                            (7)
min_{ŝ,q,h,{θ_i}}  Σ_i ρ( ‖ [ w_R r_i^ω ; w_T r_i^v ] ‖₂ )             (8)
```

* `ρ(·)`：Huber（抑制人示教的离群点）
* `w_R / w_T`：平衡旋转与平移误差
* **降维技巧**：不对每个样本优化独立 `θ_i`，而是 `θ_i = s · θ_i*`（`θ_i*` 是单调初始化序列，`s` 是全局尺度）→ 只优化 4 个量 `(ŝ, q, h, s)`。这是 one-shot 场景下"能算完"的关键。
* **纯平移特例**：段内累计旋转可忽略时 → `ω = 0, v = d̂`（`d̂` 由 PCA 给出），`θ_i` 变成沿轴位移。插入/推压类几何正好落在这里。

**③ 执行：名义螺旋 + 双通道 admittance**

```
T_des(θ) = T_0 exp(ξ̂_n θ)                                              (9)
M Δẍ_ee + B Δẋ_ee + K Δx_ee = w_ee                                     (10)   ← 6D 位姿纠偏
F∥ = F_ee^T ŝ_ee,  τ∥ = (τ_ee − q_ee × F_ee)^T ŝ_ee                    (11)   ← 沿轴分量
L  = k_F∥ F∥ + k_T∥ τ∥ + k_F⊥ F⊥ + k_T⊥ τ⊥                              (12)   ← 标量负载
M_θ v̇_θ + B_θ v_θ = −L,   θ̇ = θ̇_0 + v_θ                               (13)   ← 1D 进度调速
```

* 关键权重关系：`k_F⊥, k_T⊥ ≪ k_F∥, k_T∥`——**沿轴阻力调速度，侧向力交给 6D 纠偏**。这是"分工"，避免两个 admittance 互相打架。
* 终止条件：`θ̇` 持续低于阈值（而不是 `θ = θ_n^end`）。

**④ 反向**

```
π_n = {ŝ_n, q_n, h_n, θ_n^end}  →  π̃_n : (ω, v) ↦ (−ω, −v)              (IV-E)
序列 {π̃_N, …, π̃_1}，同一 admittance 控制器；接触释放用正交 dither 探测
```

直觉：`exp(ξ̂θ)^{-1} = exp(−ξ̂θ)`——同一条轴、反方向的进度。所以"锁紧"和"拧松"共享同一个几何约束，不需要第二次示教。

***

## 3 · 带数字走一遍（玩具设定，非论文数据）

**场景**：peg-in-hole，孔深 `2.5 cm`，示教被截断在 `θ^end = 2.0 cm`（对应论文 Fig.5 的"黑色点线截断"设定）。段内旋转可忽略 → 走**纯平移特例**：`ω = 0, v = d̂`，`d̂` 指向孔轴。

**离线**：分割后该段只有一个原语 `π_1 = {ŝ=任意, q=任意, h→∞ 等价, θ^end = 2.0 cm}`；`T_0` = 接触开始时的末端位姿。

**在线执行**（以下数值为玩具设定）：

| 时刻 | θ (cm) | 实测轴向负载 L | `v_θ = −L/B_θ`（取 B\_θ=2.0） | `θ̇ = θ̇_0 + v_θ`（取 θ̇\_0 = 3.0 cm/s） | 行为 |
| - | - | - | - | - | - |
| t₀ | 0.0 | 0.5 | −0.25 | 2.75 | 顺畅进入 |
| t₁ | 1.5 | 1.0 | −0.50 | 2.50 | 正常 |
| t₂ | **2.0** | 1.2 | −0.60 | 2.40 | 已越过示教终点，**继续走**（DMP 基线在这里会停） |
| t₃ | 2.4 | 12.0 | −6.0 | **−3.0** | 触底/卡住 → `θ̇` 变负 |
| t₄ | 2.4 | 12.5 | −6.25 | −3.25 | `θ̇ < 阈值`（如 0.2 cm/s）持续 0.3 s → **原语完成** |

结果：插入深度 ≈ 2.4 cm ⇒ 满足论文的成功判据 `> 2.3 cm`。同一示教下 DMP-only 会停在 `2.0 cm` ⇒ 不满足判据 —— 这与 Table II 中 DMP 前向 peg `0/5` 的失败模式一致（**方向一致，不是数字一致**）。

**反向**（同一 `π_1`）：`(0, d̂) ↦ (0, −d̂)` ⇒ `θ` 增大即沿 `−d̂` 退出。执行开始即在接触中，每短周期做一次正交小圆 dither，比较 `median(|L|)` 与阈值；当 peg 完全脱出，`median(|L|)` 掉到阈值以下 ⇒ 接触释放 ⇒ 交给"时间反演 DMP"跑完剩余自由空间。

**分割侧玩具**：设 `B = 10` 样本，`τ_ω = 0.9`、`τ_v = 0.95`（论文正文未给这些数值，此处纯示范）。若块 `j` 的 `⟨μ_j^v, g^v⟩ = 0.62 < τ_v`，且 `j+1` 也不全大于阈值 ⇒ 判 `j` 为过渡区；块内用 Eq.4 扫 `k` 取方向一致性代价最小者作样本级边界。人手的微抖（`⟨·⟩ = 0.93`）不会越过阈值 ⇒ 不会被切碎，这正是它相对速度/dwell 方法抗噪的原因。

***

## 4 · 工程视角

| 维度 | 论文报告的内容 | 备注 |
| - | - | - |
| 机器人 | Franka Emika Panda | 7-DOF，论文明确"wrist joint limits"是拧螺丝必须 regrasp 的原因 |
| 力/力矩传感 | 腕装 SCHUNK FT-AXIA80 | **硬前置**：接触检测、6D admittance、1D 进度、反向接触释放全部依赖 wrench |
| 示教方式 | kinesthetic teaching | 需要人能拖动机械臂 |
| 执行期感知 | **仅末端位姿 + wrench**；AprilTags **只用于初始物体位姿估计**，执行中**无视觉反馈** | ⇒ 视觉延迟/闭环完全不在控制回路里，但也没有视觉纠错能力 |
| 控制延迟 / 控制周期 | **论文未报告** | — |
| FPS / 吞吐 / 推理时间 | **论文未报告**（无学习网络，"推理"即解 Eq.9–13） | 只在结论中说 "Execution speed was not optimized" |
| 内存 / 显存 | **论文未报告**（方法不涉及 GPU 训练） | — |
| 优化开销 | 只声明降维 `(ŝ,q,h,s)` "substantially improving the computational efficiency"，**未给毫秒数/迭代数** | UNVERIFIED：给不出定量 |
| 拧螺丝的机械开销 | 累计旋转 `>≈90°` 触发一次 松手→反向转 90°→重抓 | 多圈任务的固定 overhead；也是误差累积来源 |
| 安全 | 所有任务强制 wrench safety limits；安全阈值 + Eq.12 的 load 权重是**唯一任务相关**参数 | 分割参数全任务固定 |
| 触发式搜索 | 接触 onset 若"方向一致 + 接触力显著" ⇒ 对齐后 spiral search | 说明系统承认初始位姿不够准，需要兜底 |

**Trade-off 读法**：

1. **用几何换数据**：换来的是"一条示教 + 无训练"，付出的是"必须存在一个常螺旋段"这个结构性前提 + 一个 F/T 传感器。
2. **用 admittance 换精度**：6D admittance 让执行能在接触中"漂"，但也正是它（sustained Cartesian admittance offsets）被作者列为拧螺丝轴/pitch 偏移的来源之一。**纠偏机制本身是误差源**——这是本文最诚实的工程取舍。
3. **不用视觉换确定性**：没有视觉 servoing ⇒ 没有检测抖动 ⇒ 但物体一旦被移动/初始 AprilTag 位姿有偏，只能靠 admittance 吸收，1 mm 级间隙下余量极小。

***

## 5 · 数据与评测

**数据组成（逐字来自正文）**

* 每个任务 **只使用一条示教**（"only one single demonstration is used to learn both forward and reverse skills"），动觉示教采集，机器人 Franka Emika Panda + 腕装 SCHUNK FT-AXIA80。
* **未完成示教**的构造方式："generated by directly truncating the contact phase of the full demonstration"（即从完整示教中直接截断接触段，见 Fig. 5 黑点线）。
* 分割评测额外采 **5 demonstrations per task**，"resulting in 20 trajectories in total"（4 任务 × 5 = 20）。

**任务与成功判据（逐字）**

| 任务 | 设置 | 成功判据（forward / reverse） |
| - | - | - |
| Peg-in-hole insertion | 矩形 peg 插入固定孔，间隙 **approximately 1 mm** | forward: insertion depth **> 2.3cm**（max 2.5cm）；reverse: 完整拔出且不超 wrench limits |
| Battery insertion | **3 个连续接触阶段**：沿弹簧通道滑入 → 倾斜接触底面 → 最终就位平移 | forward: **≥ 75%** 电池左表面进入床内；reverse: 完整取出 |
| Lock opening | 预抓钥匙插入并旋转开锁，间隙 **less than 0.5 mm** | forward: 锁完全打开；reverse: 钥匙完整拔出 |
| Screw driving | 螺钉预拧入，间隙 **approximately 1 mm**，剩两扣；评测随机初始化为**剩 1–3 扣** | forward: 到达拧紧点并由方法自身机制停止；reverse: 退到最后一扣（螺钉失去自支撑）为止 |

**评测规模（逐字）**："4 methods are evaluated on **5 randomized trials per task** in both forward and reverse settings learned from both complete and unfinished demonstrations. With 4 tasks, this results in **80 trials per method** in total."

**主结果 —— 完整示教（Table I，逐字复制）**

| Method | Fwd Peg | Bat | Lock | Scr | Fwd Total | Rev Peg | Bat | Lock | Scr | Rev Total |
| - | - | - | - | - | - | - | - | - | - | - |
| **Ours** | 5/5 | 5/5 | 5/5 | 5/5 | **20/20** | 5/5 | 5/5 | 5/5 | 5/5 | **20/20** |
| DMP | 5/5 | 3/5 | 5/5 | 2/5 | 15/20 | 5/5 | 5/5 | 4/5 | 0/5 | 14/20 |
| DMP+Adm | 5/5 | 5/5 | 0/5 | 2/5 | 12/20 | 5/5 | 5/5 | 5/5 | 0/5 | 15/20 |
| DMP+Twist+Adm | 5/5 | 5/5 | 5/5 | 0/5 | 15/20 | 5/5 | 5/5 | 0/5 | 0/5 | 10/20 |

**主结果 —— 未完成（截断）示教（Table II，逐字复制）**

| Method | Fwd Peg | Bat | Lock | Scr | Fwd Total | Rev Peg | Bat | Lock | Scr | Rev Total |
| - | - | - | - | - | - | - | - | - | - | - |
| **Ours** | 5/5 | 5/5 | 5/5 | 3/5 | **18/20** | 5/5 | 5/5 | 5/5 | 3/5 | **18/20** |
| DMP | 0/5 | 0/5 | 0/5 | 2/5 | 2/20 | 5/5 | 5/5 | 5/5 | 0/5 | 15/20 |
| DMP+Adm | 0/5 | 0/5 | 0/5 | 2/5 | 2/20 | 5/5 | 5/5 | 5/5 | 0/5 | 15/20 |
| DMP+Twist+Adm | 5/5 | 5/5 | 4/5 | 0/5 | 14/20 | 5/5 | 5/5 | 0/5 | 0/5 | 10/20 |

注意方向性事实：DMP / DMP+Adm 在截断示教下 forward 塌到 `2/20`（"lack the mechanism to extend forward contact motion"），但 reverse 仍是 `15/20`——因为它们的 reverse 是把**已观测到的那段**倒放回去，恰好能穿出。这解释了为什么"反向能力"必须由截断示教的 forward 结果来判定。

**分割评测（Table III，逐字复制）**
Baseline：HGS（Human-Guided Screw Planning \[10]，按螺旋运动重构误差）、KTS \[33]（时序信号变化）、AWE \[31]（waypoint 重构误差）。指标：boundary F1 at `τ ∈ {0.2, 0.5, 0.8 s}`、Variation of Information (VI)、segment count error (Cnt.)。为公平比较，所有方法都加 dwell clean-up。

| Method | F1\@.2 | F1\@.5 | F1\@.8 | VI | Cnt. |
| - | - | - | - | - | - |
| **Ours** | **0.67 ± 0.44** | **0.92 ± 0.24** | **0.98 ± 0.07** | **0.29 ± 0.32** | 0.05 ± 0.22 |
| HGS | 0.6 ± 0.48 | 0.75 ± 0.41 | 0.91 ± 0.25 | 0.39 ± 0.43 | **0.00 ± 0.00** |
| KTS | 0.65 ± 0.46 | 0.90 ± 0.26 | 0.94 ± 0.23 | 0.32 ± 0.36 | 0.05 ± 0.22 |
| AWE | 0.56 ± 0.38 | 0.67 ± 0.31 | 0.79 ± 0.23 | 0.72 ± 0.56 | 2.50 ± 3.68 |

读法：`F1@.2` 只有 `0.67 ± 0.44`（大标准差）⇒ **细时间尺度上的边界定位仍不稳**；优势主要在 `τ ≥ 0.5 s` 与 VI。HGS 的 Cnt. 为 `0.00` 最好（段数从不错），但边界不稳——作者自己点了这个互补关系。

**泛化（Fig.6，无数字）**：对"不同尺寸 + 不同目标位置"的新物体，用**同一条示教**学到的螺旋原语 + 只给新目标位置，四个任务全部完成。作者结论：方法捕捉的是"task-consistent motion structure"。⚠️ 论文未报告该实验的量化成功计数，只写 "All four tasks are successfully completed"。

***

## 6 · 能力与失败模式

### 能做（有证据）

| 能力 | 证据 |
| - | - |
| 单条**截断**示教完成全行程 | Table II forward：peg/battery/lock 各 5/5（DMP 系 0/5） |
| **免数据**反向技能 | Table I/II reverse 均为同类最高；反向只用 `(ω,v) ↦ (−ω,−v)` + 倒序 |
| 多接触阶段串联 | battery insertion 明确 3 个连续接触阶段 |
| 亚毫米间隙 | lock opening \< 0.5 mm；peg ≈ 1 mm |
| 短/抖接触段的稳健分割 | Table III：`F1@.5 = 0.92 ± 0.24`、VI `0.29 ± 0.32` 全 baseline 最优 |
| 拧紧的**自终止** | 判据即"由方法自身机制停止"（`θ̇` 低于阈值），不靠外部传感器确认 |
| 换物体尺寸/目标位置迁移 | Fig.6，四个任务全成（无量化计数） |

### 不能做 / 会失败（论文自述 + 可推导）

| 失败模式 | 机制 | 论文证据 |
| - | - | - |
| **拧螺丝误差累积** | 轨迹 stitching（Eq.14）+ 周期性 regrasp，初始位姿误差与 pitch 偏差随多圈旋转累积 → 轴失配 | 未完成示教下 screw 只有 `3/5`（前向与反向均是），"mainly caused by initial pose errors and pitch deviations from trajectory stitching" |
| **缺失的接触阶段不会被推断** | "each task-critical contact phase must be at least partially observed; the method extrapolates observed primitives but does not infer absent phases" | 明确写在 IV-A |
| **只泛化到相似接触拓扑的物体** | "generalization mainly to objects with similar contact topology" | 结论 |
| **admittance 自身引入轴偏移** | "possible axis/pitch misalignment from sustained Cartesian admittance offsets during screw-driving motions with regrasping" | 结论 |
| **常螺旋假设被破坏时（jamming/柔性/曲面滑动）** | 段内被迫用**单** twist 拟合；若真实运动轴在段内漂移，`r_i` 无法被 Huber 吸收 | 推导自 Eq.6–8（论文未做该消融） |
| **细粒度边界定位** | 见 `F1@.2 = 0.67 ± 0.44` | Table III |

### 隐含假设 (Hidden Assumptions)

1. **每个接触段是"常螺旋"**：单一 `ŝ, q, h` 在段内不变。⇒ 卡滞（jamming）导致的有效轴漂移、柔性件、曲面滑动都会让拟合残差系统性偏大。论文没有报告 `r_i` 的残差分布，无法据此判定"何时不该用螺旋原语"。
2. **准静态、低速**：admittance（Eq.10/13）没有惯性/摩擦/振动建模。⇒ 高速或高刚度接触下 `M, B, K` 的稳定性未被论证（论文亦自述执行速度未优化）。
3. **wrist wrench ≈ 任务负载**：`L` 是 `F∥, τ∥, F⊥, τ⊥` 的加权标量（Eq.12），隐含"工具重力/偏置已妥善补偿、且这四个分量足以刻画阻塞"。⇒ 换末端工具需重调 `k`（作者承认 load 权重 task-dependent）。
4. **"停下"= "到位"**：完成判据是 `θ̇` 持续低于阈值。⇒ 卡死与到位在信号上不可区分 → **静默假成功**风险（见 §8 P2）。
5. **原语起始位姿可复现**：`T_des(θ) = T_0 exp(ξ̂_n θ)` 中 `T_0` 是**本原语开始时**的实际末端位姿。⇒ 若上一原语在 admittance 偏移下结束，`T_0` 已不是示教时的 `T_0`，整条螺旋轴随之整体平移——这正是"累积误差"的结构性来源。
6. **物体在执行中不动**：只有起始 AprilTag 位姿，无视觉 servoing。⇒ 接触力把物体推开、或人碰到物体，只剩 admittance 的毫米级吸收能力。
7. **示教在 SE(3) 平滑后是几何可信的**：分割只用方向、并做 dwell 清理，隐含"手的微抖被滤掉后不携带任务信息"。⇒ 若某任务的关键转换本身就是"极短微动"（低于 dwell 幅度阈值），会被清理掉。

***

## 7 · 与相关工作对比

| 方法族 | 代表 | 表示 | 需几条示教/是否需完整 | 支持反向 | 受约束接触段表现 | 与本文差异 |
| - | - | - | - | - | - | - |
| 轨迹型 LfD | DMP \[3,4]、GMM \[14–17] | 轨迹/概率 | one-shot，假设完整 | ✗ | 弱（本文 baseline 前向截断示教 2/20） | 无显式几何约束，`θ` 有界 |
| 力/阻抗控制 | \[5,6,7]、\[20–24] | 任务专用约束 | 不需示教 | 需另行设计 | 强但需先验 | 不从示教推断接触结构 |
| 螺旋理论用于 LfD | \[27,28,10]、\[9,29] | 螺旋 | 多为自由空间或**整段一个全局螺旋** | ✗ | 中 | 本文做**分段**螺旋，捕获多阶段约束 |
| 分割/技能分解 | KTS \[33]、AWE \[31]、HGS \[10] | 时序/waypoint/螺旋 | — | — | 短接触段不稳 | 本文只用**方向**，`F1@.5 0.92` vs KTS `0.90` / HGS `0.75` / AWE `0.67` |
| 可逆性（高层） | 可逆机器人程序 \[18]、装配-拆解 \[19] | 程序/零件序列 | — | ✓（离散层） | — | 本文在**连续技能层**做可逆 |
| **本文** | LfD-Screw | DMP + 分段螺旋 + 双 admittance | **一条、可截断** | **✓（零额外数据）** | 完整示教 20/20、截断 18/20 | — |

> **面试 Tip**：被问"为什么不直接用 DMP 或 diffusion policy？"——**别答"因为我们更好"，答"因为自由度放错了地方"**。一句话："DMP 把泛化自由度放在**时间/相位**上，所以相位走完就停，示教截断即失败；我们把自由度放在**螺旋进度 θ** 上，而 θ 没有上界、且示教终点只用来初始化速度——所以'没做完的示教'在表示层就已经是完整的。代价是我必须假设接触段是常螺旋，并且需要腕部 F/T。" 然后补一句边界："如果任务里接触轴在段内漂移（柔性件、卡滞），这个假设就破了，那时应该退回力控或加在线原语自适应（作者也把这条列为 future work）。"

***

## 8 · GitHub-validated pitfalls (atlas 联动, 2026-10-25)

**repo 状态核实**：全文只出现项目主页 `https://tuwien-asl.github.io/LfD-Screw/`（`github.io` 为 GitHub Pages 主页，**不是代码仓库**），**正文未出现任何 `github.com/<org>/<repo>` 形式的代码仓库链接**。因此：**无官方代码 repo 信号，无 issue/commit 可核对**。以下 3+ 条 pitfall **由 §6 失败模式 + 方法约束推导，未经 issue 验证**。

### P1 · 缺腕部 F/T 传感器 ⇒ 整条 pipeline 不可用（非降级，是失效）

* **推导链**：§6 隐含假设 3（wrist wrench ≈ 任务负载）+ 方法约束"接触检测 / Eq.10 6D admittance / Eq.12 标量负载 `L` / Eq.13 1D 进度 / 反向 `median(|load|)` 释放探测全部以 `w_ee` 为唯一输入" ⇒ 若平台只有关节电流估计力矩（多数低成本协作臂），`F⊥, τ⊥` 噪声会把 `L` 淹没，`θ̇` 在"该减速"时不减速。
* **工程后果**：不是精度下降，而是**接触检测与终止判据同时失效**（`θ̇` 永不越过阈值 → 原语永不完成）。移植前先确认：是否有 6 轴 F/T，且采样率足以支撑 admittance 阻尼项 `B Δẋ`。

### P2 · 终止判据 = "速度持续低于阈值" ⇒ 卡死与到位不可区分（静默假成功）

* **推导链**：§6 失败模式"`θ̇` 持续低于阈值即视为完成"（IV-D 原文："considered complete when the effective progress velocity remains below a threshold for a sustained duration"）⇒ 任何**非任务完成的阻塞**（孔内有毛刺、螺纹错扣、物体被夹偏）都会产生同样的 `θ̇ → 0`。
* **工程后果**：系统会报告"原语 N 完成"并切到 N+1，最终结果是**错误位姿上的"成功"**，且日志里没有任何异常。若要上产线，必须在 `θ̇` 判据之外加一个独立完成校验（视觉/外部到位开关/扭矩签名比对）——论文本身没有提供。

### P3 · 拧螺丝的周期性 regrasp 让误差随圈数线性累积，不 scale

* **推导链**：§6 失败模式 1（表 II screw `3/5`，归因"initial pose errors and pitch deviations from trajectory stitching, which accumulate over multiple rotations and lead to axis misalignment"）+ 方法约束 Eq.14 的 stitching（`T'_k = T'_{last} ΔT_k`）与"累计旋转 >≈90° 就松手→回退 90°→重抓"⇒ 每圈至少 4 次重抓，每次重抓都在链上再叠一次 pose 误差，而 `ŝ, q, h` 是**离线固定、不再更新**的。
* **工程后果**：1–3 扣（论文评测范围）尚可，扣数越多越差；且误差是**单调累积**而非随机，重复执行不会自愈。作者的缓解方向写在结论里（screw-aware admittance / online primitive adaptation），即当前版本没有。

### P4 · "示教必须覆盖每个关键接触阶段" ⇒ 截断位置决定可用性

* **推导链**：§6 失败模式 2（IV-A 原文："each task-critical contact phase must be at least partially observed; the method extrapolates observed primitives but does not infer absent phases"）+ 方法约束：分割与拟合都是在**已观测到的段**上做的，`π_n` 的 `ŝ, q, h` 没有任何外推来源。
* **工程后果**：截断在 battery 的"阶段 1 之后、阶段 2 之前"⇒ 只学到一个原语，执行到阶段 1 结束就停（且因为 P2 的判据，可能还报"完成"）。部署时必须做一次**离线可观测性检查**：把示教的接触段切出来的原语数量和人工标注的阶段数对比，不等就拒绝上线。

### P5 · 分割/负载的阈值与权重绝大多数是超参，正文未给值

* **推导链**：方法约束——分割需要 `B, τ_ω, τ_v, w_ω, w_v`（IV-B），拟合需要 `w_R, w_T`（Eq.8），执行需要 `k_F∥, k_T∥, k_F⊥, k_T⊥`（Eq.12）与 `M_θ, B_θ, θ̇_0` 及完成阈值；正文只声明"Segmentation parameters are fixed across all tasks; only safety threshold and scalar load weight in Eq. 12 are task-dependent"，并写"Full values are listed on the website"。⇒ **复现所需数值不在论文内**。
* **工程后果**：换 F/T 传感器量程或换末端工具后，`k` 的量纲平衡必然要重调；`τ_ω/τ_v` 与 `τ ∈ {0.2,0.5,0.8s}` 的边界定义耦合（`F1@.2 = 0.67 ± 0.44` 说明敏感）。任何"照论文默认值跑"的复现尝试都会先卡在这一步。

### P6 · 无视觉闭环 + 1 mm 级间隙 ⇒ 初始 AprilTag 位姿误差直接吃掉间隙预算

* **推导链**：§6 隐含假设 6（只做起始物体位姿估计、执行中无视觉）+ 任务约束（peg ≈ 1 mm、lock \< 0.5 mm）+ 系统约束（接触 onset 若"方向一致 + 力显著"就触发 spiral search）⇒ 位姿偏差并不被在线估计，只由 spiral search 与 admittance 兜底。
* **工程后果**：定位精度不足时表现为 **spiral search 反复触发**（时间开销，且作者自述执行速度未优化），间隙最紧的 lock（\< 0.5 mm）最先退化；若物体在执行中被推动，系统没有任何恢复路径。

***

[← Back to manipulation-lfd README](./README.md)

> **Status**：v0.1 · 基于 arXiv 全文（2607.13882v1）· 未在真机复现的数字标 `UNVERIFIED`。全文未报告控制周期 / FPS / 延迟 / 内存，相关表格项已如实标注「论文未报告」；§3 全部数值为标注过的玩具设定；§8 无代码 repo 可核对，pitfall 均由 §6 失败模式 + 方法约束推导。

[//]: # "<!-- source: https://arxiv.org/abs/2607.13882 -->"


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.