学習条件まとめ — 2mm / 5mm / 1cm とそのほか
Sawyer Task0(alphabet soup → basket)。先生向けの一覧。 精度ノイズ実験(proprio Gaussian = stategauss)と、open-loop / closed-loop の意味、 共通の学習・評価設定、そのほかの主要条件を1ページに整理。 更新: 2026-10-16(actnoise50 追記)。
追記: actnoise50(action Gaussian + open-loop 成功のみ)Full FT も標準 eval 0%(near 50 · grasp 2)→ actnoise50。
注: 評価はすべて closed-loop。デモ自体は open-loop 全成功。Gauss は学習時 proprio のみ(actnoise はデモ側 action)。下の「評価のちがい」も参照。
1. 用語(open / closed など)
Open-loop デモ品質ゲート
記録した action をそのまま再生。ポリシーは使わない。
export 時 --require-open-loop で「再生しても lift+place できるデモ」だけ残す。
clean50 はここに通ったデモだけ。
Closed-loop 本番評価
その場の観測 → ポリシー → action → 環境。成功率表はすべてこれ。 「うまくいく保証」ではない。少しズレると誤差が積み上がって失敗する。
Teacher-force 診断
デモの観測を渡して action を予測(開ループ教師強制)。 「学習自体はできているか」を見る。smoke 図で使用。
Stategauss 精度ノイズ
学習時だけ EEF proprio(xyz / ori)に Gaussian を加算。 デモ本数は同じ clean50。評価時はノイズなし。 「状態が数 mm ずれても頑健か」を見るための摂動。
評価のちがい(標準 vs 学習と同じ初期状態)
どちらも同じ closed-loop 推論。違うのはスタート時の物体の置き方だけ。 「学習データでオフライン推論した」「デモを再生した」ではない(デバッグ用の対照実験)。
| 標準評価 | 学習と同じ初期状態 | |
|---|---|---|
| 推論のやり方 | closed-loop(同じ) | closed-loop(同じ) |
| 初期配置 | 決め打ち init 0,1,…,49 |
学習デモに記録された置き方 |
| 学習デモとの関係 | 同じではない | デモと同じスタートから測る |
| デモの作り方(参考) | — | 最大 120 init を試し、open-loop 成功した先頭 N 本(失敗は飛ばす) |
| 何がわかるか | いつものベンチ | 「学習で見た置き方なら動くか」(初期配置シフトの切り分け) |
読み方: 学習と同じ初期状態でも success 0% → 「評価用 init が難しいだけ」ではない。 途中まで行って place で落ちる → 方策自体(特に置く・離す)が弱い、という線が強い。
OSC (delta_osc) | 学習・評価の本線コントローラ(デルタ OSC · 20 Hz) |
|---|---|
IK (ik_set) | デモ収集時の把握ポーズ。あとで OSC に焼き直し(retrack) |
| FullLoRA / VisAct / Full FT | LoRA(vision+lang+action) / LoRA(vision+action) / 全パラメータ FT |
2. 精度条件の比較(clean50 · Full FT · closed-loop eval)
共通データ: libero_sawyer_scripted_obj0_osc_v8_clean50(open-loop 成功・approach_noise=0 · 50本)。
共通学習: init=pi05_libero · Full FT · steps=10000 · NPROC=2×BS=2(実効 BS=4)· lr peak≈5e-5。
共通評価: seed=7 · 50 trials · max_steps=1200 · closed-loop · 評価時ノイズなし。
| 条件 | 学習時ノイズ | 成功率 | near | grasp | lift | transport | place | メモ |
|---|---|---|---|---|---|---|---|---|
| 2mm | xyz σ=0.002 · ori σ=0.005 rad | 0% (0/50) | 50/50 | 3/50 | 1/50 | 0/50 | 0/50 | 接近は全成功。掴みはわずかに出る |
| 5mm(標準 eval 0–49) | xyz σ=0.005 · ori σ=0.0125 | 2% (1/50) | 31/50 | 3/50 | 3/50 | 2/50 | 1/50 | Full FT clean50 系で唯一の非ゼロ |
| 5mm · 学習と同じ初期状態 | 同上(学習デモと同じ初期置き方で closed-loop · 評価時ノイズなし) | 0% (0/50) | 38/50 | 4/50 | 3/50 | 3/50 | 0/50 | closed-loop · 学習と同じ置き方でも success 0 |
| 5mm · clean100(標準 0–49) | 同上 · デモ 100本(いずれも open-loop 成功) | 0% (0/50) | 47/50 | 4/50 | 3/50 | 1/50 | 1/50 | データ倍でも SR 上がらず(baseline 2% を下回る) |
| 5mm · clean100 · 学習と同じ初期状態 | 同上 · 100 inits · 評価時ノイズなし | 0% (0/100) | 97/100 | 22/100 | 17/100 | 10/100 | 3/100 | grasp/lift は改善 · place/success は出ず |
| 5mm · clean100 · 20k(標準 0–49) | 同上 · steps=20000 | 0% (0/50) | 7/50 | 1/50 | 1/50 | 1/50 | 0/50 | step 倍でも SR 0 · 中間指標は 10k より悪化 |
| 5mm · clean100 · 20k · 学習と同じ初期状態 | 同上 · 100 inits · steps=20000 | 0% (0/100) | 10/100 | 1/100 | 1/100 | 1/100 | 0/100 | 動画・Wandb: sg5mm_s20k |
| 1cm | xyz σ=0.01 · ori σ=0.025 | 未完了 | 評価 12/50 で中断(暫定 near≈8/12 · grasp 0) | 学習は完了 · eval 要再開 | ||||
| 5mm + act 1.5mm | state 5mm + action xyz σ=0.0015 | 0% (0/50) | 50/50 | 10/50 | 10/50 | 4/50 | 1/50 | grasp↑ だが success は 0 |
| 対照: Full FT(ノイズなし) | — | 0% (0/50) | 50/50 | 0/50 | 0/50 | 0/50 | 0/50 | 接近のみ · 掴み全滅 |
| 対照: FullLoRA(ノイズなし) | — | 8% (4/50) | 50/50 | 18/50 | 18/50 | 18/50 | 7/50 | 同じ clean50 で最も良い |
| 対照: VisAct(ノイズなし) | — | 0% (0/50) | 40/50 | 7/50 | 5/50 | 5/50 | 1/50 | place 手前で終了しやすい |
3. 共通の学習・評価設定
| robot / task | Sawyer · libero_object task0(soup → basket) |
|---|---|
| control | delta OSC · 20 Hz · home_w30 |
| config | pi05_lora_b_object_sawyer(Full FT 時は freeze なし) |
| init | pi05_libero_pytorch(上表の clean50 系) |
| Full FT batch | 2 GPU × BS 2 = 実効 4(誤設定だった 1GPU×BS2 は廃止) |
| LoRA batch | 1 GPU × BS 4 |
| steps | 10000(旧 Full FT 誤設定の 5000 は比較から除外推奨) |
| lr | peak ≈ 5e-5(warmup あり) |
| eval | closed-loop · seed=7 · 50 trials · max_steps=1200 · env_horizon=1260 |
| 成功判定 | lift≥8cm · transport≥8cm · place_near≤5cm(詳細は eval スクリプト) |
4. データの作り方(open-loop の位置づけ)
| データ | approach noise | 本数 | open-loop | 用途 |
|---|---|---|---|---|
…osc_v8_clean50 |
0 | 50 | 必須(120試行→OL ok 106→先頭50) | 精度ノイズ実験・clean50 比較の本線 |
…osc_v8(本流) |
≈1.5cm ×3 | ~871 | 必須 | DAgger 前の scripted 大セット |
| DAgger 合流(r1/r2 等) | (scripted 継承)+ takeover | ~1.3k–1.7k | expert 成功必須 | student は closed-loop → 失敗付近で OSC expert |
- デモ収集: scripted · grasp=
ik_set· path_step≈8mm · その後 OSC retrack - 「open-loop」はデータ品質フィルタ。「closed-loop」はポリシー評価と DAgger student
5. Open-loop / Closed-loop 診断(smoke)
同じ clean50 デモ ep0 で、teacher-force / open-loop 再生 / closed-loop を比較した診断。 成功率ではなく「どこでデモから外れるか」。詳細図は clean50_smoke。
| モデル | open-loop 再生 EEF 誤差 | closed vs open EEF 誤差 | teacher-force action L2 | verdict |
|---|---|---|---|---|
| Full FT(ノイズなし) | ≈0 | ≈0.120 | ≈0.204 | OL ok · CL weak |
| FullLoRA | ≈0 | ≈0.048 | ≈0.125 | OL/CL ともに比較的健全 |
| stategauss 5mm | ≈0 | ≈0.074 | ≈0.173 | OL ok · CL weak(改善は限定的) |
| 5mm + act 1.5mm | ≈0 | ≈0.051 | ≈0.259 | OL ok · CL weak · TF は悪化 |
6. そのほかの主要条件(reeval max1200)
osc_v8(~871)± DAgger。評価は同じ closed-loop · max_steps=1200 · 50 trials。 詳細・動画: reeval_max1200。
| 条件 | method | data | steps | 成功率 |
|---|---|---|---|---|
| libero FullLoRA DAgger r1 | FullLoRA | scripted + DAgger r1 | 10k | 38% |
| libero FullLoRA DAgger r2 | FullLoRA | + r2 | 10k | 30% |
| libero VisAct DAgger r2 | VisAct | + r2 | 10k | 26% |
| base FullLoRA closefail_v2 | FullLoRA | closefail dagger | 10k | 22% |
| libero VisAct DAgger r1 | VisAct | + r1 | 10k | 8% |
| libero VisAct scripted | VisAct | osc_v8 871 | 10k | 4% |
| libero FullLoRA scripted | FullLoRA | osc_v8 871 | 10k | 0% |
| libero Full FT subset50 | Full FT | osc_v8 先頭50 | 5k | 0% |
7. 関連ページ
- actnoise50 — action Gaussian + 成功デモのみ · Full FT(動画・曲線)
- clean50 gallery — FullLoRA / VisAct / Full FT の動画つき結果
- clean50 smoke — open/closed/teacher-force の軌跡図
- reeval max1200 — DAgger 含む12条件の正式 SR