教師データ(実演)はどう作られているか
教師データは人手で集めたものではありません。特権スクリプト・エキスパート(手書きの状態機械)がIsaacで実演し、
成功したエピソードだけを .npz に記録したものです。

全体像教師データ → 生徒方策
左から:手書きエキスパートが実演 → Isaacで数百並列に走らせる → 成功(✓)だけ漏斗で残し失敗(✗)は捨てる → .npzに蓄積 → 生徒方策が模倣・強化学習。
① 特権スクリプト・エキスパート
教師データの源は、RLでも学習でもなく手書きの状態機械(ScriptedExpert)。真の物体姿勢を見て動き(特権)、記録する観測はノイズ入り(YOLO相当σ=3mm/5mm)——だから生徒は知覚ノイズに強くなる。
各フェーズの目標TCP姿勢を微分IK(FR5DiffIK)で関節目標に変換し、相対Δqの7次元アクションに落とす。コンベアは把持前にライブのパックを追従し、搬送脚で bin−(puck−tcp) のオフセット補正(84.8→92.2%のレバー)。
② 収録(成功フィルタ)と ③ 保存形式
収録:collect_*_demos.py がエキスパートをIsaacで並列に走らせ、成功終了したエピソードだけを保存。既定400 →「≥85%レシピ」で2,000–2,400件にスケール。
形式:圧縮NumPy .npz(demos/)。キー=observations(N,obs)・actions(N,7)・episode_starts・success・episode_lengths(Sortはclass追加)。obs=Pick 29 / Sort・Conveyor 34。報酬・doneは保存しない。
④ 学習での使われ方
bc_pretrain.py が .npz をMSE回帰して暖機 → train.py(BCRegPPO)が学習中のアンカーとしてデモを消費(BC-MSE か reverse-KL)。詳細は ① RLアプローチ。
docstring とコードは一致(2026-06-28 修正済み)
以前の「32次元」コメントと「ambush」docstringの食い違いはソース側を実装に合わせて修正済み(収録/env=34次元、conveyor=reactive-track+offset-correct)。sort_smoke_test.py の == 32 アサートも34へ(34次元envで失敗していた潜在バグ)。docstringを信頼して構いません。