---
作業フォルダ: /Users/shimazueiichi/Robotics_UX/Robotics_UX_New
上限時間: 180
---
# mechArm の Unity（デジタルツイン）で、π0.5 の失敗した試行を横から見て、置き場所の候補を確かめる（2026-11-07）

## 背景

mechArm 270 Pi で動かしている π0.5 が、なぜ失敗しているのかがまだ分かっていない。上カメラ1台の録画だけでは、爪の高さ・箱との接触・持ち上げたあとの落下が見えない（Codex の検証 `PixelstoMotors/research/codex_report_r2r2r_to_pi05_20261107.md` の A2）。
実機の推論の記録には、実際に届いた関節角が 1 秒に 8 回前後残っている。これを Unity のアームで再生し、横から見て、失敗を「つかむ前」「つかんだ後」「箱に当たった」に分ける材料を作る。あわせて、次に実機で試す置き場所の候補を Unity で確かめる。

計画の全体：`PixelstoMotors/research/research_r2r2r_to_pi05_plan_20261107.md`（2026-11-07 に Codex の指摘を受けて書き直した版）

**この依頼は実機を動かさない。** Raspberry Pi・daemon・SSH・シリアルには触れない。

## 最初に確かめること（当たったら止めて報告）

- Unity の Editor でこのプロジェクトが開かれているなら（`Temp/UnityLockfile` があり、Unity のプロセスが動いている）、何もせずに止めて「決めてほしいこと」に書く。Editor を終わらせない
- KIOXIA（`/Volumes/KIOXIA`）がつながっていなければ止める
- Unity は `/Applications/Unity/Hub/Editor/2022.3.62f3/Unity.app`（ProjectSettings の版）。なければ止める

## 守ること

- 既にあるシーン・スクリプト・プレハブは変えない。とくに `Assets/Scenes/R2R2R-20260224.unity` と `Assets/Scripts/GridAngleScanner.cs` にはエイイチの書きかけの変更があるので、開いて保存もしない。新しく作るものは `Assets/TwinCheck/` の下にまとめる（必要ならシーンもそこに新しく作る。既存シーンを使うなら写しを作ってから）
- ArticulationBody の Stiffness（20,000）・Damping（2,000）は変えない（絶対ルール）。記録の関節角を再生するときは、ドライブの値を変えずに角度を直接置く形にする
- `fk_scan_motion_based_v2.csv` は読むだけ
- KIOXIA の `runs/`・`datasets/`・`mecharm_calibration/` は読むだけ。書いてよいのは `/Volumes/KIOXIA/r2r2r-data/lab/twin/20261107_失敗の再生と置き場所/` の中だけ（MASTER の保存先テーブルに 2026-11-07 に足した場所）
- git は自分が作ったファイルだけを1つずつ指定して add・commit する。今ある変更（.plastic・上のシーン・GridAngleScanner.cs）は含めない。`git add .`・`git clean` は使わない。Unity Version Control の `cm` が使えるなら、自分が作ったファイルだけをチェックインする。使えなければ、チェックインしてほしいファイルの一覧を報告に書く
- 画面なし（-batchmode）で動かし、画像はカメラから RenderTexture に撮って PNG にする。終わったら自分が起動した Unity を終わらせる

## A. 関節角と爪先の対応を合わせる（B・C の前提）

- `fk_scan_motion_based_v2.csv`（KIOXIA の `fk_tables/`、列は ee_x,ee_y,ee_z,j0〜j5。座標は Unity のメートル、高さは Y）を作った仕組み（`FKScanner_MotionBased.cs` など）と同じ関節の対応・向き・原点で、実機の関節角を Unity のアームに置く
- 正しく置けているかを、表の行を20行ほど無作為に選び、その関節角を置いたときの爪先の位置が表の ee と何 mm ずれるかで確かめる。ずれの最大と中央値を報告する。合わなければ B 以降に進まず止める

## B. 失敗した試行を再生して横から見る

対象：`/Volumes/KIOXIA/r2r2r-data/runs/pi05_policy/` のうち、`{run_stem}.json` の `judgments` に pick と place の人の判定が両方あるもの（Codex の数えでは 31 件。失敗 12 件・成功 19 件）。失敗は全部、成功は比べるために5件。

- 関節角は `recording/states.csv` の `event_type=actual` の行（j0〜j5）。爪の開け閉めは同じファイルの爪の行と `log.jsonl` の爪の命令から取る。補正（`stage` が correct など）の区間も分かるようにしておく
- ブロックと白箱の位置：上カメラの最初のコマ（`recording/top.mp4` か `frames/`）から赤いブロックと白い箱を見つけ、マットの上の位置に直す。直し方は `mecharm_calibration/teach_poses_LOG352/measure_*.json` のホモグラフィ（画像の点をマットの上の点に直す対応）を使ってよい。ただし箱の見つけ方は不安定と書かれているので、見つからなかった・怪しいものはそう記録する。箱の高さは仮に 43mm（本線のコメントの値）とし、仮の値だと明記する
- 試行ごとに次を出す
  1. 横から見た画像を3枚（爪を閉じる命令の瞬間・持ち上げたあと・箱にいちばん近づいたとき）。正面から1枚も足してよい。ブロック・箱・マットを置いて描く
  2. 表の1行：爪を閉じた瞬間の爪先の高さと、ブロックとの水平のずれ（mm）／持ち上げたあとの爪先の高さ／爪先・爪・前腕が箱の縁にいちばん近づいた距離と、箱の中に入り込んだか／補正の区間の有無
  3. 分類の候補：つかむ前に外れた・つかんだが持ち上げで落ちた（判断できる範囲で）・箱に当たった・分からない。どの数字から決めたかを書く
- Unity の関節角は実機とずれるので、数 mm の差で決めない。表の頭に、A で測ったずれの大きさを書いておく

## C. 次に実機で試す置き場所の候補を確かめる

候補：Unity の座標で X = 120・160・200 mm、Z = 180・220・260 mm の 9 点（Codex が FK テーブルで、肩 j1 ≤ 88° と高さ 10〜40mm の条件で表の中に近い行がある点として出したもの）。加えて、教えた5か所（`runs/experiments/record_teach_demo/20261019_LOG352/README.md` の教えた記録の PICK の関節角から A の対応で求めた位置）。

- それぞれ、肩 j1 ≤ 88° の条件で、ブロック真上 → つかむ → 持ち上げ → 白箱の上 の姿勢を表から選び、HOME（[0,0,0,0,0,-30]）からの道すじで前腕・爪が箱に当たらないかを見る
- 上カメラから見て、つかむ直前にブロックが腕や爪に隠れないかを見る（上カメラの位置は D で合わせたものを使う。合わせられなければ、合わせられなかったと書いて、真上から見た仮の位置で見る）
- 1点1行の表：選んだ姿勢、肩の角度、表の中での爪先のずれ、箱に当たるか、上から見えるか、使えそうか。画像は各点1枚

## D. Unity と実機の画を並べる

- Unity のカメラを実機の上カメラの位置・向き・画角に合わせる（ホモグラフィとマットの四隅・ブロックの見え方を手がかりに。合わせ方と残ったずれを書く）
- 同じ場面（アームが HOME、ブロックと箱が同じ位置）を、実機の1コマと Unity の1コマで、学習と同じ 384×216 にして横に並べた画像を1枚作る
- 色・光・模様は調整しない（今の Unity の素の見え方を知るため）

## 報告

- KIOXIA の `lab/twin/20261107_失敗の再生と置き場所/README.md` に、A〜D の結果・表・画像の一覧・使ったコード（`Assets/TwinCheck/` のファイル名）・やり直し方を書く。表は CSV でも置く
- 依頼箱の報告には、A のずれの大きさ、B の分類の数（つかむ前・つかんだ後・箱・分からない）、C で使えそうな点の数、D の画像のパスだけを書く
- 最後の1行に「判定：合格／止めた（決めてほしいことあり）／失敗」を書く
