学習条件まとめ — 2mm / 5mm / 1cm とそのほか

Sawyer Task0(alphabet soup → basket)。先生向けの一覧。 精度ノイズ実験(proprio Gaussian = stategauss)と、open-loop / closed-loop の意味、 共通の学習・評価設定、そのほかの主要条件を1ページに整理。 更新: 2026-10-16(actnoise50 追記)。

いちばん重要な結果: clean50 Full FT + state ノイズでは 5mm だけ標準評価で 2%(1/50)。 同じ 5mm ckpt を学習デモと同じ初期配置で測ると 0%(near 38/50 · grasp 4)。 データ倍の clean100 + 5mm · 10k も標準・学習と同じ初期状態とも 0% (学習と同じ初期状態では grasp 22/100 まで改善)。 さらに steps を倍にした clean100 + 5mm · 20k も success 0% (中間指標も 10k より悪化)→ 詳細・動画: sg5mm_s20k。
追記: 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 FTLoRA(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 · 評価時ノイズなし。

条件 学習時ノイズ 成功率 neargrasplifttransportplace メモ
2mm xyz σ=0.002 · ori σ=0.005 rad 0% (0/50) 50/503/501/500/500/50 接近は全成功。掴みはわずかに出る
5mm(標準 eval 0–49) xyz σ=0.005 · ori σ=0.0125 2% (1/50) 31/503/503/502/501/50 Full FT clean50 系で唯一の非ゼロ
5mm · 学習と同じ初期状態 同上(学習デモと同じ初期置き方で closed-loop · 評価時ノイズなし) 0% (0/50) 38/504/503/503/500/50 closed-loop · 学習と同じ置き方でも success 0
5mm · clean100(標準 0–49) 同上 · デモ 100本(いずれも open-loop 成功) 0% (0/50) 47/504/503/501/501/50 データ倍でも SR 上がらず(baseline 2% を下回る)
5mm · clean100 · 学習と同じ初期状態 同上 · 100 inits · 評価時ノイズなし 0% (0/100) 97/10022/10017/10010/1003/100 grasp/lift は改善 · place/success は出ず
5mm · clean100 · 20k(標準 0–49) 同上 · steps=20000 0% (0/50) 7/501/501/501/500/50 step 倍でも SR 0 · 中間指標は 10k より悪化
5mm · clean100 · 20k · 学習と同じ初期状態 同上 · 100 inits · steps=20000 0% (0/100) 10/1001/1001/1001/1000/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/5010/5010/504/501/50 grasp↑ だが success は 0
対照: Full FT(ノイズなし) — 0% (0/50) 50/500/500/500/500/50 接近のみ · 掴み全滅
対照: FullLoRA(ノイズなし) — 8% (4/50) 50/5018/5018/5018/507/50 同じ clean50 で最も良い
対照: VisAct(ノイズなし) — 0% (0/50) 40/507/505/505/501/50 place 手前で終了しやすい
読み方: ノイズは「デモを汚す」のではなく、学習中の proprio 入力をわずかに揺らす。 評価は常にノイズなし closed-loop。 5mm で初めて成功が出た一方、action 側にもノイズを足すと success は消えて grasp だけ増える。 学習と同じ初期状態での評価 / clean100(2026-10-07 完了): データ量を倍にしても success は 0% のまま。 学習デモの初期配置でも接近〜掴みは改善するが place まで届かない → 「ep 数不足」より下流制御/リリース側の線が強い。 学習デモ自体(open-loop)は全成功。Gauss は学習時のみ。

3. 共通の学習・評価設定

robot / taskSawyer · libero_object task0(soup → basket)
controldelta OSC · 20 Hz · home_w30
configpi05_lora_b_object_sawyer(Full FT 時は freeze なし)
initpi05_libero_pytorch(上表の clean50 系)
Full FT batch2 GPU × BS 2 = 実効 4(誤設定だった 1GPU×BS2 は廃止)
LoRA batch1 GPU × BS 4
steps10000(旧 Full FT 誤設定の 5000 は比較から除外推奨)
lrpeak ≈ 5e-5(warmup あり)
evalclosed-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

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 は悪化
デモ再生(open-loop)はどの条件でもほぼ誤差ゼロ → データ自体は健全。 Full FT 系は closed-loop で接近後〜掴み付近から外れる、というのが共通の失敗モード。

6. そのほかの主要条件(reeval max1200)

osc_v8(~871)± DAgger。評価は同じ closed-loop · max_steps=1200 · 50 trials。 詳細・動画: reeval_max1200。

条件methoddatasteps成功率
libero FullLoRA DAgger r1FullLoRAscripted + DAgger r110k38%
libero FullLoRA DAgger r2FullLoRA+ r210k30%
libero VisAct DAgger r2VisAct+ r210k26%
base FullLoRA closefail_v2FullLoRAclosefail dagger10k22%
libero VisAct DAgger r1VisAct+ r110k8%
libero VisAct scriptedVisActosc_v8 87110k4%
libero FullLoRA scriptedFullLoRAosc_v8 87110k0%
libero Full FT subset50Full FTosc_v8 先頭505k0%

7. 関連ページ