現場ごとに違う照明・床色にどう適応するか
答えは、スタックが2つの別モデルでできているという事実から導けます。照明・床色は 知覚(カメラ/YOLO)だけに効き、制御方策(RL)には効かない——対策は全部「検出器側」に寄せます。

核心知覚 vs 制御の分離
RL方策(出荷するONNX)
入力は34次元の状態ベクトル——物体姿勢(3)・関節・グリッパ・位相。画素は一切ないので、構造上すでに照明・床色に不変。床を見ることが物理的にできない。
YOLO検出器
照明と床を見る唯一の構成要素。カメラ→物体姿勢→方策の detected_puck へ。環境差はここに宿る。本当の問いは「現場の照明/床でもYOLOが正確な3数値を渡せるか」。
すでに持っているもの(DRの教科書レシピ)と、2つの穴
| レイヤ | ランダム化済み |
|---|---|
| YOLO合成データ | ドーム+平行光の強度/色/向き、物体・治具の色、カメラ位置・傾き(dataset.py) |
| YOLO学習 | HSVジッタ・反転・モザイク(Ultralyticsデフォルト) |
| RL方策 | PDゲイン・摩擦・質量±20%、姿勢ノイズσ=3mm/5mm |
⚠ 心配にピタリ一致する2つの穴
① 床・テーブル材質が明示的に未ランダム化(dataset.py:287 で除外と明記)=まさに「床の色」。最優先の修正。
② 露出/コントラストのランダム化がない(実カメラは自動露出するが合成データは固定)。
具体策(優先順)
| # | 策 | コスト |
|---|---|---|
| 1 | 床・テーブル材質のランダム化を dataset.py に追加(~20行)→ 再生成・再学習 | 最優先 |
| 2 | 露出/コントラスト/ブラーのランダム化(YOLO側なら再レンダリング不要) | 安い |
| 3 | 少量(50–200枚)の実写で微調整+実環境mAPを測定(simから得られない唯一の工程) | 要実写 |
| 4 | 方策の姿勢ノイズσを実測YOLO誤差に合わせて再学習 | 実測連動 |
| 5 | (任意)深度/ステレオ or 接触確認で最終mmの見た目依存を消す | 任意 |
正直な但し書き
これらはまだハードに繋がっていない。reactive_runtime.py の実機パスは NotImplementedError スタブ、カメラ→YOLO→ハンドアイ→detected_puck の知覚ブリッジはB6部品+TODOとしてのみ存在。本当の手順0はこの知覚ブリッジを作ること。実フレームで走るまで床色は「測定」でなく「予測」しかできない。