Prefab混入との戦い
LOG89R2R2R2026/3/13

Prefab混入との戦い

firefighter PrefabにRobotArmControllerが混入していた問題を特定・解決。Robot_0_0単体でのPickAndPlace動作確認に取り組んだ。

※注釈:デジタルツイン学習(R2R2R)の検証プロセス 本プロジェクトは、AIの判断を物理的動作へ変換する設計を検証するものです。現実空間をデジタルツイン化し、仮想空間での大量試行(Real-to-Render)から得た最適解を、実世界のモーター駆動(to-Real)へ還元する「R2R2Rパイプライン」の実装過程を記録・考察します。

解決済み

firefighter Prefab混入問題

全ロボット(Robot_0_0〜Robot_4_1)にRobotArmControllerが毎回復活する問題。

  • 原因: firefighter PrefabにRobotArmControllerが含まれており、Apply Allのたびに全Robotに復元されていた

  • 解決: firefighter Prefabを直接編集してRobotArmControllerを削除

  • Robot_0_0にのみ手動でAdd Component → Inspector設定を全再構築

Start()の初期化修正

再生直後にPLACEステートへ即遷移する問題を修正。currentAnglesをInspectorの初期値で初期化するよう変更。

currentAngles[0] = link1TargetAngle;
currentAngles[1] = link2TargetAngle;

現在取り組み中

PLACEステートによる角度上書き問題

UpdatePlace()内でlink1TargetAngleとlink2TargetAngleを直接書き換えているため、再生後のInspectorが意図しない値(-20/55)になってしまう。

APPROACHとPLACEで目標角度を分離する設計に変更予定。次チャットでClineに指示する修正方針:

float targetL1 = (currentState == State.PLACE) ? placeLink1Angle : link1TargetAngle;
float targetL2 = (currentState == State.PLACE) ? placeLink2Angle : link2TargetAngle;

ログ観察

  • [APPROACH] dist=0.131〜0.139 で推移 → まだGrasp閾値0.06に届いていない

  • Link1/Link2 targetが対称値から発散 → PLACEステートの早期遷移が原因

  • [START] 全参照OK(graspTarget / handlePoint / placeTarget / EndEffector)

教訓

  • Prefab問題はOverridesドロップダウンで可視化できる

  • PLACEステートでlink1TargetAngleを直接書き換えるとcurrentAnglesの初期値にも波及する

  • ステートごとに目標角度を分離する設計が正しい

▶ LOG90へ

  1. APPROACHとPLACEの目標角度をLateUpdate内でState判定して切り替え

  2. UpdatePlace()内のlink1/link2TargetAngleへの直接代入を削除

  3. APPROACH→GRASP→PLACE→APPROACHの完全ループ確認

  4. デバッグログ削除

  5. PlaceTargetの最終位置をコーヒーメーカー上に調整