フィジカルAI研究室を作る Log#28 | 50本で学んだ π0.5 をアームで試し、位置2 で外れた

この記事の素材(コード・ログ・データ 5ファイル・まとめてダウンロードあり)
AIで読む ChatGPT・Claude などで、この記事に質問できます

位置ごとに10本そろえたお手本50本で一から学習した Physical Intelligence の π0.5(ロボット用の AI のモデル)を、実物の小型アーム mechArm 270 で動かすと、位置1 のブロックは3回とも人の直しなしでつかめましたが、位置2 では4回ともつかむ姿勢まで届きませんでした。位置2 で π0.5 が向かったのは、位置2 のお手本の姿勢(肩 j1 87.9°・肘 j2 −33.9°)ではなく、位置1 寄りの途中(肩 j1 約68〜72°・肘 j2 約 −7〜−11°)でした。

この回でやったことで、次のことが分かるようになりました。

  • 良くなること:π0.5 がつかみに行った姿勢を、お手本50本で爪を閉じた瞬間の姿勢と同じ物差し(関節の角度の差)で比べるスクリプトを作りました。どの位置で、どの関節が、何度ずれたかを、映像の印象ではなく数字で言えます
  • もたらされること:位置2 のお手本は、50本の中でただ1つ、肩 j1 が上限の 88° に張り付き、肘 j2 を −34° まで曲げてつかむ形でした。ほかの4か所とは形が大きく違います(いちばん近い位置1 とも、6つの関節の差で 46.5°)。次はこの形の違いが外れの原因かを確かめます
  • 時間と費用:Runpod で借りた GPU(NVIDIA A40)は51分・約80円でした(1時間 0.59 ドル・1ドル=158円)。実機は 11:10〜11:45 に9回動かしました。そのうち約10分は、モデルの取り込みが止まって立ち上げ直した時間です

前の回(LOG480)で学習したモデル deep1 は、浅くつかんだお手本を外し、位置1〜5 を10本ずつにそろえたデータだけで、π0.5 の元の重みから学習したものです。データをそろえた効き目が実機に出るかを、位置ごとに確かめるのがこの回のねらいでした。

位置1 では π0.5 だけで下りきってつかめたのに、位置2 では毎回、位置1 と位置2 の間の高い所で止まりました。 位置2 の4回目の途中で、こちらで打ち切りました。

2の位置がかなりずれていたので一旦終了

やったことの全体は次のとおりです。

時刻やったこと結果
10:53
アームを HOME に戻し、上カメラの写り方をお手本に合わせた
dy +1.6・dx −0.1(OK)
10:54〜11:04
lab_start.sh で A40 を借りて deep1 を立ち上げた
モデルの取り込みで止まり、Ctrl+C で止めた
11:04〜11:10
同じ Pod につなぎ直して立ち上げ直した
取り込み 133秒・uv sync 55秒・サーバーの起動 44秒
11:10〜11:17
1回目(位置5)。最初の推論は 58.1秒
つかんで運ぶ途中でゲームパッドで直し、成功
11:23〜11:31位置1 を3回
2回成功(直しなし)。1回は箱に入れたあとに直しへ入って結果なし
11:34〜11:44位置2 を4回
2回失敗・2回結果なし。4回とも、つかむ前にゲームパッドで直した
11:45Pod を消した51分・約80円
11:50〜
つかむ姿勢をお手本と比べた(grasp_pose_compare.py)
位置2 の4回は、位置2 のお手本から 33〜36° 離れていた

次は2つです。位置2 で π0.5 の出す関節の角度がどこからずれ始めるかを、お手本10本の動きと1コマずつ比べます。それと並べて、位置3〜5 も同じように動かし、外れるのが位置2 だけかを確かめます。

GPU を買うか借りるかの判断は、Runpod で実際に借りて学習・推論した費用をもとに、別のページにまとめています。

導入比較ガイドロボットAIの学習用GPU、買うか借りるか実際に借りて学習させた費用と、損益分岐の計算機で決められます

この回の作業は、Claude(手順と数字の確かめを一緒に進めた AI)と進めました。アームの操作と、ブロックを置く・ゲームパッドで直す・打ち切るの判断はこちらで行いました。ここから下は、端末の出力・各回の記録・比べたスクリプトとその出力を全量で載せた作業ログです。数字は記録から数えたもので、見込みのものは見込みと書いています。鍵(アクセストークンなど)は、どこにも載せていません。Pod の IP とポートは、記録の時点で <POD_IP>:<SSH_PORT> に置き換えてあります。

作業ログ ― deep1 を実機で立ち上げ、位置1・位置2 で動かして比べるまで

この回で使う言葉

言葉意味
実機推論
学習したモデルに上カメラの画とアームの関節の角度を渡し、次の動きを答えさせて、その答えで実物のアームを動かすこと
チャンク
モデルが1回の推論で返す、この先の動きのまとまり。このシリーズでは10ステップ(約1秒分)。端末の [003] のような番号は、何回目の推論かを表す
関節 j0〜j5
mechArm 270 の6つの関節。j0 は根元の回転、j1 は肩、j2 は肘、j3〜j5 は手首。爪(グリッパー)は別
つかむ姿勢
爪を閉じた瞬間の j0〜j5 の角度。お手本では、爪の値が初めて「閉じる」になったコマの角度
位置1〜5
お手本でブロックを置いた5か所。学習データは各位置10本ずつ
位置合わせ
実機推論の前に、上カメラの今の画にお手本の1枚目を半透明で重ね、写り方がずれていないかを確かめる画面(camera_align.py)。重なったブロックに実物を合わせれば、お手本と同じ場所に置ける
ゲームパッドの補正
推論の途中で p を押し、PS4 型のゲームパッドで関節を手で動かして直すこと。□ で推論に戻る
安全範囲
モデルが出した関節の角度をそのまま送ってよい範囲。お手本の関節の範囲の外側 10° まで。肩 j1 だけは 88° で切る(それを超える指令はアームが黙って捨てるため)

Runpod は、GPU を時間単位で借りられるクラウドのサービスです。借りたマシンを Pod と呼び、推論のサーバーはこの Pod の中で動きます。Hugging Face は、AI のモデルとデータを置いて配るサービスです。deep1 は非公開のリポジトリ(PixelstoMotors/pi05-mecharm-deep-even10-lora-v1)にあり、Pod は立ち上げのときにそこから取ってきます。

上カメラの位置を出してから、lab_start.sh で deep1 を立ち上げた

上カメラはふだん使いのスマホを付け外ししているので、実機の前に毎回、写り方をお手本に合わせます。アームを HOME に戻し、位置合わせの画面(位置5 のお手本 run_0001_20261019_194818 の1枚目)で OK が出るまでスマホを動かしました。最後の値は dy +1.6・dx −0.1・似ている度合い 0.942 です。

そのあと、立ち上げのスクリプトを1行で動かしました。

cd ~/r2r2r-scripts && ./lab_start.sh --model deep1 --log Log28

lab_start.sh は、Pod を借りる → スクリプトとモデルを Pod に入れる → 推論のサーバーを起動する → Mac とのトンネルを張る → HOME・爪を開く・位置合わせ → 実機推論、までを順に行います。安全範囲は deep1 の学習に使った50本から、位置合わせの基準は trim2(前のデータ)の画から取る形で、前の回の直し(依頼135・依頼137)のとおりに動いています。

[RANGE ] 安全範囲 (学習データ ±10°) は /Volumes/KIOXIA/r2r2r-data/datasets/mecharm_redblock_box_deep_even10_v1/raw_episodes から (--model deep1)
[FRAME ] 写り方の確かめの基準画像は /Volumes/KIOXIA/r2r2r-data/datasets/mecharm_redblock_box_teach_v1_trim2/raw_episodes の最初のエピソードから (位置合わせと同じ trim2. 依頼 137)
[SAFE  ] 安全範囲 (学習 50 本 ±10°): j0[-72,+55]  j1[-9,+88]  j2[-45,+52]  j3[-18,+27]  j4[-87,+10]  j5[-51,-15]

モデルの取り込みが約8分止まり、Ctrl+C で止めて立ち上げ直した

1回目の立ち上げは、3c(Hugging Face からモデルを取る)で止まりました。10:56 に始まり、11:04 まで何も出ませんでした。前に別のモデル(corr2、ほぼ同じ大きさ)を取ったときは32秒で終わっています(研究室 Log22 の立ち上げの記録)。

Ctrl+C で止めて、同じ1行で立ち上げ直しました。lab_start.sh は、記録にある Pod が動いていれば、新しく借りずにその Pod へつなぎ直します。二度目の 3c では、次のように出ました。

Fetching 34 files:   0%|          | 0/34 [00:00<?, ?it/s]Still waiting to acquire lock on /workspace/ckpt/deep_v1_2999/.cache/huggingface/download/params/ocdbt.process_0/d/4540a892ee6f3e107c5e7c3ea55c1583.lock (elapsed: 10.0 seconds)
...
Fetching 34 files: 100%|██████████| 34/34 [02:10<00:00,  3.82s/it]
✓ Downloaded

二度目の取り込みは、ファイルの鍵(lock)が空くのを120秒待ってから終わりました。Mac で Ctrl+C を押しても、Pod の中の1回目の取り込みは止まらずに続いていて、それが終わるのを待っていたと読めます。1回目がなぜ遅かったのかは、出力が出ていないので分かっていません。

  • ねらい:Pod を借り直さずに、止まった所から続ける
  • 変わったこと:Pod の中を確かめ、モデル・openpi・.venv のないものだけを入れ直した。サーバーの起動まで 6分(3a 76秒・3c 133秒・uv sync 55秒・サーバーの起動 44秒ほか)
  • 見込める効果:借り直していれば、Pod の立ち上げと 3a からやり直しになる。つなぎ直しで済んだので、止まっていた時間の分だけで済んだ。3c で止まったときの見分け方(Pod の中で取り込みが続いているか)は、まだ lab_start.sh にない

最初の推論は 58.1秒かかり、2回目からは約0.6秒だった

サーバーが動き、位置合わせで OK を見て閉じると、最初の推論が返ってくるまで 58.1秒かかりました。最初の1回だけ、Pod の中でモデルの計算を組み立てる(コンパイルする)ためです。2回目からは 0.55〜1.77秒で返っています。

[000] 推論 58134ms  10ステップ先  Δ= +2.3 +14.1  +7.4  -1.7 -19.5  +1.8

1回目は、位置合わせの画面のお手本(位置5)のままブロックを置いて動かしました。π0.5 はつかみ(推論5〜6)、箱へ運ぶ途中(推論14 のあと)で、ゲームパッドで83秒直してから箱に入れました。結果は成功です。

位置ごとのお手本を、別の窓で重ねてブロックを置いた

立ち上げのスクリプトが開く位置合わせの画面は、いつも位置5 のお手本を重ねます。ほかの位置に置くときの目安になりません。そこで、もう1つの端末のタブで、置く位置のお手本を重ねる位置合わせを開き、そこにブロックを合わせてから、lab_start の画面を閉じる手順にしました。

cd ~/r2r2r-scripts
D=/Volumes/KIOXIA/r2r2r-data/datasets/mecharm_redblock_box_deep_even10_v1/raw_episodes
python3 pi05/camera_align.py --raw-dir $D --episode run_0001_20261109_094839 --scale 5 --alpha 0.7
位置
重ねたお手本(2026-11-09 に撮った深いお手本)
1
run_0001_20261109_094839
2
run_0001_20261109_102109
3
run_0001_20261109_123848
4
run_0001_20261109_130542
5
run_0001_20261019_194818(lab_start の画面と同じ)

位置3・4 は 11月9日に教え直したので、10月のお手本とはブロックの場所が少し違います。lab_start.sh の --episode で選べるのは10月の trim2 の画だけなので、11月9日の画を重ねるには別の窓が要りました。

この手順は、窓が2つ開くので分かりにくく、途中で lab_start 側の窓が後ろに隠れて、推論が始まらないように見える場面がありました(その窓で q を押すか、端末で Ctrl+C を押すと進みます)。lab_start.sh が位置の番号を聞き、その位置の11月9日のお手本を重ねる形にする直しを、次に Claude Code に頼む予定です。

2回目(111726)は、ブロックを位置1 に置き直すため、最初の推論の答えを送らずに q で終えました。

位置1 は3回とも π0.5 が自分で下りきってつかんだ

位置1 の3回は、どれもつかむまで直しなしでした。爪を閉じた姿勢は、位置1 のお手本10本の平均(j0 −40.7°・j1 +80.6°・j2 +0.2°)から 1.2〜3.9° の所です。

回結果直し爪を閉じた姿勢 j0〜j5お手本の平均との差
112346成功なし
−40.5 +80.8 +0.0 +1.4 −76.5 −29.9
1.2°
112639結果なし箱に入れたあと
−40.6 +82.6 −2.3 +2.0 −76.7 −30.1
3.7°
112924成功なし
−40.7 +78.6 +3.3 +1.1 −76.7 −29.8
3.9°

112639 は、π0.5 がつかんで箱に入れ(推論10〜11 で爪を開いた)、HOME へ戻る途中(推論13 のあと)にゲームパッドへ入り、Ctrl+C で終えたので、結果が付いていません。つかんで箱に入れるところまでは、ほかの2回と同じ流れでした。

1回の推論から次の推論までは、Enter で1回ずつ送っています。112346 は推論18回、112924 は推論17回で、HOME 近くへ戻りました。

位置2 は4回とも、つかむ姿勢まで届かなかった

位置2 では、4回とも、推論3〜4 のあとでブロックの真上からずれているのが見え、ゲームパッドで直しました。直す前に π0.5 がいた姿勢を、お手本と比べました。

回結果直した時間
π0.5 がいた姿勢 j0・j1・j2
位置2 の平均との差位置1 の平均との差
113433結果なし12.8秒
−37.7・+72.8・−9.8
32.9°19.4°
113600失敗14.1秒
−38.7・+68.5・−8.1
35.5°22.1°
113741失敗88.5秒
−39.6・+68.5・−7.0
36.1°21.9°
114106結果なし91.8秒
−36.6・+68.1・−8.4
34.8°23.6°
位置2 のお手本10本の平均
−34.9・+87.9・−33.9
046.5°

差は、6つの関節の角度の差を二乗して足し、平方根を取ったものです(単位は度)。4回とも、位置2 のお手本より位置1 のお手本に近い所にいました。

113433 は、推論4 の答えを送らずにゲームパッドへ入りました。その答えは、肩 j1 78.6°・肘 j2 −18.0°・根元 j0 −37.6° まで下ろして、爪を閉じるものでした。位置2 のお手本は j1 87.9°・j2 −33.9°・j0 −34.9° です。

  • 肩 j1 は約9°浅い
  • 肘 j2 は約16°曲げが足りない
  • 根元 j0 は約3°位置1 の側へ回っている

この答えのまま閉じていれば、ブロックの手前の高い所で爪を閉じていたはずです(送っていないので確かめてはいません)。

ゲームパッドで直したあとに推論へ戻った回では、113741 で、肩 j1 の指令が安全範囲の上限 88° で切られました。

       [LIMIT] j1 安全範囲でクランプ +89.9→+88.0
       [LIMIT] step 2: j1 安全範囲でクランプ +89.4→+88.0
       [LIMIT] step 5: j1 安全範囲でクランプ +89.9→+88.0

直して位置2 に近づくと、π0.5 は肩を上限より先へ下ろそうとしています。

位置1 の1回と位置2 の4回で、推論ごとの答え(10ステップ先の目標)を並べると、位置1 と位置2 の違いは推論2〜4 で出ていました。

回推論2 の答え j0・j1・j2推論3 の答え j0・j1・j2
推論4 の答え j0・j1・j2・爪
112924(位置1)
−40.2・+64.9・+3.6
−40.7・+70.7・+3.0
−40.6・+77.3・+2.1・閉じる
113433(位置2)
−37.6・+69.5・−10.0
−37.8・+71.7・−11.3
−37.6・+78.6・−18.0・閉じる
113600(位置2)
−38.9・+67.7・−9.6
−39.6・+72.4・−11.4
(直しへ)
113741(位置2)
−39.4・+67.6・−8.8
−39.5・+70.6・−9.9
(直しへ)
114106(位置2)
−36.7・+67.1・−10.1
−37.4・+73.3・−13.7
(直しへ)

位置2 でも、π0.5 は肘 j2 をマイナスへ曲げ始めていて、位置1 とは違う動きを出しています。ただ、曲げ方が小さく、肩も下りきらないうちに爪を閉じようとしました。

位置2 のお手本は、肩が上限 88° に張り付く唯一の形だった

比べてみて目立ったのは、位置2 のお手本の形です。

位置
つかむ姿勢の平均 j0・j1・j2
肩 j1 の範囲(10本)肘 j2 の範囲(10本)
1
−40.7・+80.6・+0.2
+80.5〜+80.6+0.1〜+0.4
2
−34.9・+87.9・−33.9
+87.9〜+87.9−34.0〜−33.8
3
−25.9・+68.1・+10.1
+63.7〜+69.4+9.1〜+14.1
4
−60.4・+62.5・+12.3
+62.3〜+62.7+9.9〜+14.8
5
+13.4・+60.7・+20.0
+60.0〜+61.6+18.5〜+22.1

位置2 の10本は、どれも肩 j1 が 87.9° で、上限の 88° に張り付いています。肘 j2 がマイナス(−34°)なのも位置2 だけです。肩をこれ以上下ろせないので、肘を逆向きに曲げて爪をブロックへ届かせている形です。ほかの4か所のつかむ姿勢は、肩 60〜81°・肘 0〜+20° の間にまとまっています。

位置2 は、肩が上限に張り付いて肘を逆に曲げる、50本の中で1か所だけの形でした。π0.5 は、その形まで出しきれず、ほかの位置に近い形との間の答えを出しています。 これが外れの原因かは、まだ確かめていません。考えている見立ては次の3つです。

見立て確かめ方
位置2 の形が、ほかの4か所と離れすぎていて、学習で出しきれていない
位置2 のお手本10本を、推論の答えと1コマずつ比べる(オフラインの答え合わせ)。お手本の画を渡しても位置2 の形が出ないなら、学習の側
置いたブロックが、お手本の位置2 と少しずれていて、画が位置1 に寄って見えている
4回の1枚目の画と、お手本の1枚目の画で、ブロックの場所を画素で比べる
肩の上限 88° の近くは、学習の正規化で端になり、出しにくい
学習データの j1 の分布と正規化の値を見る

位置1 は3回とも下りきり、位置5 の1回もつかむところまでは直しなしだったので、データをそろえた deep1 が、少なくともこの2か所ではつかめることは言えます。位置3・4 はまだ動かしていません。

Pod を消し、51分・約80円だった

./lab_stop.sh --log Log28

lab_stop.sh は、Pod の中の serve.log を持ち帰ってから Pod を消し、API で消えたことを確かめます。借りていた時間は 10:54:21〜11:45:35 の 51分14秒、費用は約0.50 ドル(約80円)でした。

項目値
GPU
NVIDIA A40(46,068 MiB)
借りていた時間51分14秒(0.85時間)
費用
約0.50 ドル(約80円・1時間 0.59 ドル・1ドル=158円)
そのうち立ち上げ
1回目 約10分(3c で止めた)・2回目 約6分・3回目 1分35秒(サーバーが動いていたので準備を飛ばした)
実機を動かした回
9回(成功3・失敗2・結果なし4)
推論の時間(2回目から)0.55〜1.77秒

位置2 で π0.5 がいた姿勢を、お手本のつかむ姿勢と比べたスクリプト

この記事のコード・ログ・データは、1ファイルずつ下に置いています。全文はリンク先にあります。

ファイルの一覧(5本)

01_grasp_pose_compare.py.txt ― grasp_pose_compare.py(KIOXIA の lab/Log28/analysis/)・4,529字

02_sec11.txt ― 2回目の立ち上げと実機推論 2回(lab_start_20261110_110430.txt)・58,404字

03_sec11.txt ― 3回目の立ち上げと実機推論 7回(lab_start_20261110_111950.txt)・165,431字

04_sec11.txt ― Pod の中の推論のサーバーのログ(serve.log)・4,041字

05_sec12.json ― pi05_20261110_111034.json(1回目・位置5・成功(運ぶ途中にゲームパッドで直した))・3,420字

比べたスクリプトは KIOXIA の lab/Log28/analysis/ に置きました。お手本50本の episode.npz と、各回の recording/states.csv・log.jsonl を読むだけで、元のデータは変えません。

grasp_pose_compare.py(KIOXIA の lab/Log28/analysis/)

01_grasp_pose_compare.py.txt4,529字・107行・python
#!/usr/bin/env python3
"""LOG484 / 研究室 Log28: deep1 の実機推論で、アームがどこをつかみに行ったかを、お手本の位置ごとのつかむ姿勢と比べる.

- お手本: mecharm_redblock_box_deep_even10_v1 の 50 本. 位置は pi05/count_by_position.py の出力 (2026-11-10) のとおり.
  つかむ姿勢 = state の爪 (7 列目) が初めて 1 になったコマの j0〜j5.
- 実機推論: runs/pi05_policy/pi05_20261110_*/.
  爪を閉じた姿勢 = recording/states.csv で, 初めて gripper_cmd が 1 (閉じる) になった直前の actual の j0〜j5.
  AI が行った所 = 閉じる前にゲームパッドの補正があれば, その補正の最初の measured_before (人が直す前の姿勢).
別のタブで開く保存

grasp_pose_compare.py の出力(grasp_pose_compare_out.txt)

お手本 50 本の, 位置ごとのつかむ姿勢 (平均 / 最小〜最大)
位置 | j0 | j1 | j2 | j3 | j4 | j5
1 | -40.7 (-41.0〜-40.4) | +80.6 (+80.5〜+80.6) | +0.2 (+0.1〜+0.4) | +0.8 (+0.6〜+1.0) | -75.6 (-75.7〜-75.5) | -29.9 (-30.0〜-29.5)
2 | -34.9 (-35.7〜-34.7) | +87.9 (+87.9〜+87.9) | -33.9 (-34.0〜-33.8) | +6.7 (+6.4〜+7.1) | -46.3 (-46.5〜-45.9) | -34.5 (-34.6〜-34.3)
3 | -25.9 (-27.8〜-25.3) | +68.1 (+63.7〜+69.4) | +10.1 (+9.1〜+14.1) | -2.4 (-7.7〜-1.0) | -65.8 (-67.8〜-61.4) | -29.3 (-30.0〜-27.3)
4 | -60.4 (-61.7〜-59.2) | +62.5 (+62.3〜+62.7) | +12.3 (+9.9〜+14.8) | +0.6 (-0.3〜+1.5) | -57.7 (-60.8〜-55.2) | -31.0 (-32.4〜-29.9)
5 | +13.4 (+12.6〜+14.7) | +60.7 (+60.0〜+61.6) | +20.0 (+18.5〜+22.1) | -2.9 (-3.6〜-2.1) | -63.3 (-65.3〜-61.5) | -27.0 (-27.6〜-26.5)

位置どうしの, つかむ姿勢の平均の距離 (度)
1 | 0.0 | 46.5 | 24.0 | 34.4 | 62.3
2 | 46.5 | 0.0 | 53.8 | 60.1 | 80.1
3 | 24.0 | 53.8 | 0.0 | 36.1 | 41.3
4 | 34.4 | 60.1 | 36.1 | 0.0 | 74.6
5 | 62.3 | 80.1 | 41.3 | 74.6 | 0.0

2026-11-10 の実機推論 (deep1)
run | 置いた所 | 結果 | 補正 | AI が行った所 j0〜j5 | 近い位置 (距離) | 位置ごとの距離 1〜5 | 爪を閉じた姿勢 j0〜j5
111034 | 1回目(位置なし) | success | 1 | +14.7 +62.3 +19.6 -2.2 -66.2 -27.4 | 5 (3.7) | 62.3 80.6 42.1 76.0 3.7 | +14.7 +62.3 +19.6 -2.2 -66.2 -27.4
112346 | 位置1 | success | 0 | -40.5 +80.8 +0.0 +1.4 -76.5 -29.9 | 1 (1.2) | 1.2 46.8 24.6 35.2 62.5 | -40.5 +80.8 +0.0 +1.4 -76.5 -29.9
112639 | 位置1 | interrupted | 1 | -40.6 +82.6 -2.3 +2.0 -76.7 -30.1 | 1 (3.7) | 3.7 45.0 26.8 37.0 64.0 | -40.6 +82.6 -2.3 +2.0 -76.7 -30.1
112924 | 位置1 | success | 0 | -40.7 +78.6 +3.3 +1.1 -76.7 -29.8 | 1 (3.9) | 3.9 49.8 22.4 33.0 61.0 | -40.7 +78.6 +3.3 +1.1 -76.7 -29.8
113433 | 位置2 | interrupted | 1 | -37.7 +72.8 -9.8 +6.3 -62.6 -32.5 | 1 (19.4) | 19.4 32.9 25.5 34.2 61.3 | 閉じていない | 補正の前
113600 | 位置2 | failure | 1 | -38.7 +68.5 -8.1 +6.7 -60.4 -32.1 | 1 (22.1) | 22.1 35.5 24.7 31.1 60.7 | -33.5 +79.9 -12.1 +6.2 -62.8 -32.3 | 補正の前
113741 | 位置2 | failure | 1 | -39.6 +68.5 -7.0 +5.9 -59.7 -31.8 | 1 (21.9) | 21.9 36.1 24.3 29.6 60.9 | -33.8 +88.8 -26.9 +5.5 -58.9 -32.0 | 補正の前
114106 | 位置2 | completed | 1 | -36.6 +68.1 -8.4 +6.7 -59.1 -32.1 | 1 (23.6) | 23.6 34.8 24.3 32.6 59.1 | -33.0 +85.2 -22.0 +6.6 -59.1 -32.2 | 補正の前

記録の全量 ― 端末の出力・各回の記録・Pod の記録

端末の出力は、lab_start.sh が KIOXIA の lab/Log28/ に残したものです。Python のゲームパッドの部品(pygame)と画像の部品(OpenCV)が同じ SDL を読むために出る objc[…] Class … is implemented in both … の警告も、そのまま載せています。各回の記録は、KIOXIA の runs/pi05_policy/pi05_20261110_*/ にあります(上カメラの録画 top.mp4・関節の実測 states.csv・電流 currents.csv・推論ごとの答え log.jsonl)。

立ち上げ前の HOME と位置合わせ(端末の出力)

(base) shimazueiichi@shimadzueiichinoMacBook-Pro ~ % cd ~/r2r2r-scripts
python3 dynamic_tracking_limits/place/place_modules/08_home_from_anywhere.py
python3 pi05/camera_align.py --raw-dir /Volumes/KIOXIA/r2r2r-data/datasets/mecharm_redblock_box_teach_v1_trim2/raw_episodes --episode run_0001_20261019_194818 --scale 5 --alpha 0.7
[INIT] daemon 接続中...
  [Pi] fresh_mode=1
[INIT] fresh_mode=1
[PRE]  現在姿勢: [0.08, 92.37, 2.37, -6.06, -97.11, -30.32]
[SEND] HOME へ移動指令
[WAIT] t=0.5s  max_err=82.88°
[WAIT] t=1.1s  max_err=67.06°
[WAIT] t=1.6s  max_err=51.41°
[WAIT] t=2.1s  max_err=36.38°
[WAIT] t=2.6s  max_err=21.35°
[WAIT] t=3.2s  max_err=6.41°
[WAIT] t=3.7s  max_err=1.23°
[DONE] HOME 到達 max_err=1.23°
[POST] 最終姿勢: [0.17, 1.23, 1.23, -0.52, 1.23, -30.32]
  [Pi] fresh_mode=0
[EXIT] fresh_mode=0, socket close
[REF   ] 基準画像: /Volumes/KIOXIA/r2r2r-data/datasets/mecharm_redblock_box_teach_v1_trim2/raw_episodes/run_0001_20261019_194818/frames/000000.jpg
[REF   ] お手本 run_0001_20261019_194818 (つかんだ瞬間の j0 = +13.2°)
[REF   ] 重なった画像のブロックに実物のブロックを合わせると, お手本と同じ位置に置ける
[ALIGN ] |dy| <= 20 なら OK. アームは HOME に置いた状態で合わせる. q または Esc で終了 (ファイルには何も書かない)
[ALIGN ] dy=  -2.5  dx=  -2.4  response=0.981  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)
[ALIGN ] dy=  -0.5  dx=  +5.3  response=0.882  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)
[ALIGN ] dy=  +0.6  dx=  +4.3  response=0.819  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)
[ALIGN ] dy=  +2.3  dx=  -0.8  response=0.928  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)
[ALIGN ] dy=  +4.9  dx=  -1.4  response=0.877  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)
[ALIGN ] dy=  +9.0  dx=  +0.2  response=0.938  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)
[ALIGN ] dy= +12.0  dx=  +0.4  response=0.904  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)
[ALIGN ] dy= +10.9  dx=  -0.5  response=0.953  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)
[ALIGN ] dy=  +5.7  dx=  +0.3  response=0.984  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)
[ALIGN ] dy=  +1.6  dx=  -0.1  response=0.942  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)
[DONE  ] 終了 (何も書いていません)

1回目の立ち上げ(lab_start_20261110_105418.txt)

[RANGE ] 安全範囲 (学習データ ±10°) は /Volumes/KIOXIA/r2r2r-data/datasets/mecharm_redblock_box_deep_even10_v1/raw_episodes から (--model deep1)
[FRAME ] 写り方の確かめの基準画像は /Volumes/KIOXIA/r2r2r-data/datasets/mecharm_redblock_box_teach_v1_trim2/raw_episodes の最初のエピソードから (位置合わせと同じ trim2. 依頼 137)
[LAB   ] 2026-11-10 10:54:18  GPU=NVIDIA A40  episode=run_0001_20261019_194818  log=/Volumes/KIOXIA/r2r2r-data/lab/Log28  
[MODEL ] --model deep1: π0.5 base から deep_even10_v1 で新しく学習した 2999 (依頼 133. decay_steps 5000)
         PixelstoMotors/pi05-mecharm-deep-even10-lora-v1 → /workspace/ckpt/deep_v1_2999  設定 pi05_mecharm_deep_even10_lora  assets local/mecharm_redblock_box_deep_even10_v1

=== 1. Pod を作る
[POD   ] 作った: id prm86xv997s945  GPU=NVIDIA A40  1時間 0.59 ドル  (記録 /Volumes/KIOXIA/r2r2r-data/lab/Log28/pod/lab_pod.json)
    (3 秒)

=== 2. Pod が立ち上がるまで待つ
[POD   ] SSH の IP とポートを API から受け取った (<POD_IP>:<SSH_PORT>)
[POD   ] 入れた: 291dbe7c1015
NVIDIA A40, 46068 MiB
    (17 秒)

=== 3a. スクリプトを送る
    (75 秒)

=== 3b. huggingface_hub を入れ, 鍵を渡す
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager, possibly rendering your system unusable. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv. Use the --root-user-action option if you know what you are doing and want to suppress this warning.
Hint: The `hf-cli` skill is not installed. Run `hf skills add -g` to teach your AI agents how to use the `hf` CLI.
✓ Logged in
  user: PixelstoMotors
    (11 秒)

=== 3c. モデルを取る (hf download PixelstoMotors/pi05-mecharm-deep-even10-lora-v1)
^C
[STOP  ] 「3c. モデルを取る (hf download PixelstoMotors/pi05-mecharm-deep-even10-lora-v1)」で止まりました: Ctrl-C で止めました
[STOP  ] Pod は残っています (id prm86xv997s945). 消すなら ./lab_stop.sh --log Log28

=== かかった時間  モデル deep1 (PixelstoMotors/pi05-mecharm-deep-even10-lora-v1)
  1. Pod を作る                      3 秒
  2. Pod が立ち上がるまで待つ     17 秒
  3a. スクリプトを送る         75 秒
  3b. huggingface_hub を入れ, 鍵を渡す     11 秒

2回目の立ち上げと実機推論 2回(lab_start_20261110_110430.txt)

02_sec11.txt58,404字・959行・text
[RANGE ] 安全範囲 (学習データ ±10°) は /Volumes/KIOXIA/r2r2r-data/datasets/mecharm_redblock_box_deep_even10_v1/raw_episodes から (--model deep1)
[FRAME ] 写り方の確かめの基準画像は /Volumes/KIOXIA/r2r2r-data/datasets/mecharm_redblock_box_teach_v1_trim2/raw_episodes の最初のエピソードから (位置合わせと同じ trim2. 依頼 137)
[LAB   ] 2026-11-10 11:04:31  GPU=NVIDIA A40  episode=run_0001_20261019_194818  log=/Volumes/KIOXIA/r2r2r-data/lab/Log28  
[MODEL ] --model deep1: π0.5 base から deep_even10_v1 で新しく学習した 2999 (依頼 133. decay_steps 5000)
         PixelstoMotors/pi05-mecharm-deep-even10-lora-v1 → /workspace/ckpt/deep_v1_2999  設定 pi05_mecharm_deep_even10_lora  assets local/mecharm_redblock_box_deep_even10_v1

=== 1. Pod を作る
[POD   ] Log28 の Pod (id prm86xv997s945) につなぎ直します (状態 RUNNING  GPU=NVIDIA A40  1時間 0.59 ドル  作った時刻 2026-11-10 10:54:21)
別のタブで開く保存

3回目の立ち上げと実機推論 7回(lab_start_20261110_111950.txt)

03_sec11.txt165,431字・1,777行・text
[RANGE ] 安全範囲 (学習データ ±10°) は /Volumes/KIOXIA/r2r2r-data/datasets/mecharm_redblock_box_deep_even10_v1/raw_episodes から (--model deep1)
[FRAME ] 写り方の確かめの基準画像は /Volumes/KIOXIA/r2r2r-data/datasets/mecharm_redblock_box_teach_v1_trim2/raw_episodes の最初のエピソードから (位置合わせと同じ trim2. 依頼 137)
[LAB   ] 2026-11-10 11:19:50  GPU=NVIDIA A40  episode=run_0001_20261019_194818  log=/Volumes/KIOXIA/r2r2r-data/lab/Log28  
[MODEL ] --model deep1: π0.5 base から deep_even10_v1 で新しく学習した 2999 (依頼 133. decay_steps 5000)
         PixelstoMotors/pi05-mecharm-deep-even10-lora-v1 → /workspace/ckpt/deep_v1_2999  設定 pi05_mecharm_deep_even10_lora  assets local/mecharm_redblock_box_deep_even10_v1

=== 1. Pod を作る
[POD   ] Log28 の Pod (id prm86xv997s945) につなぎ直します (状態 RUNNING  GPU=NVIDIA A40  1時間 0.59 ドル  作った時刻 2026-11-10 10:54:21)
別のタブで開く保存

Pod の片付け(lab_stop_20261110_114527.txt)

[STOP  ] Log28 の Pod: id prm86xv997s945  GPU=NVIDIA A40  作った時刻 2026-11-10 10:54:21
[LOG   ] serve.log を持ち帰った → /Volumes/KIOXIA/r2r2r-data/lab/Log28/serve.log (45 行)
[STOP  ] Terminate を送った (11:45:35)
[STOP  ] Pod (id prm86xv997s945) が消えたことを API で確かめた
[COST  ] 借りていた時間 51 分 14 秒 (0.85 時間) × 1時間 0.59 ドル = 約 0.50 ドル (約 80 円. 1ドル=158円)
[TUNNEL] 8000 番のトンネルは残っていません

Pod の中の推論のサーバーのログ(serve.log)

04_sec11.txt4,041字・45行・text
INFO:root:Loading model...
INFO:2026-11-10 02:09:59,643:jax._src.xla_bridge:925: Unable to initialize backend 'rocm': module 'jaxlib.xla_extension' has no attribute 'GpuAllocatorConfig'
INFO:jax._src.xla_bridge:Unable to initialize backend 'rocm': module 'jaxlib.xla_extension' has no attribute 'GpuAllocatorConfig'
INFO:2026-11-10 02:09:59,647:jax._src.xla_bridge:925: Unable to initialize backend 'tpu': INTERNAL: Failed to open libtpu.so: libtpu.so: cannot open shared object file: No such file or directory
INFO:jax._src.xla_bridge:Unable to initialize backend 'tpu': INTERNAL: Failed to open libtpu.so: libtpu.so: cannot open shared object file: No such file or directory
INFO:absl:orbax-checkpoint version: 0.11.13
INFO:absl:Created BasePyTreeCheckpointHandler: use_ocdbt=True, use_zarr3=False, pytree_metadata_options=PyTreeMetadataOptions(support_rich_types=False), array_metadata_store=<orbax.checkpoint._src.metadata.array_metadata_store.Store object at 0x7098fbba6a10>
INFO:absl:Restoring checkpoint from /workspace/ckpt/deep_v1_2999/params.
別のタブで開く保存

Pod の記録(pod/lab_pod.json)

{
  "id": "prm86xv997s945",
  "gpu": "NVIDIA A40",
  "log": "Log28",
  "costPerHr": 0.59,
  "created_epoch": 1794275661,
  "created_at": "2026-11-10 10:54:21",
  "model": "deep1",
  "model_repo": "PixelstoMotors/pi05-mecharm-deep-even10-lora-v1",
  "terminated_epoch": 1794278735,
  "terminated_at": "2026-11-10 11:45:35",
  "rented_sec": 3074
}

各回の記録のまとめ(runs/pi05_policy/pi05_20261110_/pi05_20261110_.json)

各回の終わりに run_policy_client.py が書いた記録です。結果(outcome)・終え方(end_reason)・直しの回数(corrections)・引数(args)が入っています。

pi05_20261110_111034.json(1回目・位置5・成功(運ぶ途中にゲームパッドで直した))

05_sec12.json3,420字・184行・json
{
 "script": "run_policy_client.py",
 "source": "pi05_policy",
 "run_stem": "pi05_20261110_111034",
 "run_dir": "/Volumes/KIOXIA/r2r2r-data/runs/pi05_policy/pi05_20261110_111034",
 "recording_enabled": true,
 "end_reason": "h",
 "result": "completed",
別のタブで開く保存

pi05_20261110_111726.json(2回目・ブロックを置き直すため最初の答えを送らずに終えた)

{
 "script": "run_policy_client.py",
 "source": "pi05_policy",
 "run_stem": "pi05_20261110_111726",
 "run_dir": "/Volumes/KIOXIA/r2r2r-data/runs/pi05_policy/pi05_20261110_111726",
 "recording_enabled": true,
 "end_reason": "q",
 "result": "completed",
 "exit_code": 0,
 "outcome": null,
 "rewinds": 0,
 "corrections": 0,
 "history_left": [],
 "args": {
  "host": "localhost",
  "port": 8000,
  "execute": true,
  "auto": false,
  "steps_per_chunk": 10,
  "max_chunks": 60,
  "max_move_deg": 20.0,
  "raw_dir": "/Volumes/KIOXIA/r2r2r-data/datasets/mecharm_redblock_box_deep_even10_v1/raw_episodes",
  "framing_raw_dir": "/Volumes/KIOXIA/r2r2r-data/datasets/mecharm_redblock_box_teach_v1_trim2/raw_episodes",
  "prompt": "put the red block in the white box",
  "model": "deep1 (PixelstoMotors/pi05-mecharm-deep-even10-lora-v1)",
  "record": false,
  "ignore_framing": true,
  "state_from_target": true,
  "via_stride": 3,
  "settle_tol": 1.0,
  "settle_retries": 0,
  "dry_keys": false,
  "send_wait": 0.0,
  "grip_wait": 0.8,
  "grip_open_wait": 0.0,
  "settle_wait": 0.8
 },
 "ended_at": "2026-11-10T11:17:49.049683"
}

pi05_20261110_112346.json(位置1・成功(直しなし))

{
 "script": "run_policy_client.py",
 "source": "pi05_policy",
 "run_stem": "pi05_20261110_112346",
 "run_dir": "/Volumes/KIOXIA/r2r2r-data/runs/pi05_policy/pi05_20261110_112346",
 "recording_enabled": true,
 "end_reason": "h",
 "result": "completed",
 "exit_code": 0,
 "outcome": "success",
 "rewinds": 0,
 "corrections": 0,
 "history_left": [
  {
   "kind": "chunk",
   "chunk": 0,
   "correction_id": null,
   "grip_changed": false
  },
  {
   "kind": "chunk",
   "chunk": 1,
   "correction_id": null,
   "grip_changed": false
  },
  {
   "kind": "chunk",
   "chunk": 2,
   "correction_id": null,
   "grip_changed": false
  },
  {
   "kind": "chunk",
   "chunk": 3,
   "correction_id": null,
   "grip_changed": false
  },
  {
   "kind": "chunk",
   "chunk": 4,
   "correction_id": null,
   "grip_changed": false
  },
  {
   "kind": "chunk",
   "chunk": 5,
   "correction_id": null,
   "grip_changed": true
  },
  {
   "kind": "chunk",
   "chunk": 6,
   "correction_id": null,
   "grip_changed": false
  },
  {
   "kind": "chunk",
   "chunk": 7,
   "correction_id": null,
   "grip_changed": false
  },
  {
   "kind": "chunk",
   "chunk": 8,
   "correction_id": null,
   "grip_changed": false
  },
  {
   "kind": "chunk",
   "chunk": 9,
   "correction_id": null,
   "grip_changed": false
  },
  {
   "kind": "chunk",
   "chunk": 10,
   "correction_id": null,
   "grip_changed": false
  },
  {
   "kind": "chunk",
   "chunk": 11,
   "correction_id": null,
   "grip_changed": true
  },
  {
   "kind": "chunk",
   "chunk": 12,
   "correction_id": null,
   "grip_changed": false
  },
  {
   "kind": "chunk",
   "chunk": 13,
   "correction_id": null,
   "grip_changed": false
  },
  {
   "kind": "chunk",
   "chunk": 14,
   "correction_id": null,
   "grip_changed": false
  },
  {
   "kind": "chunk",
   "chunk": 15,
   "correction_id": null,
   "grip_changed": false
  },
  {
   "kind": "chunk",
   "chunk": 16,
   "correction_id": null,
   "grip_changed": false
  }
 ],
 "args": {
  "host": "localhost",
  "port": 8000,
  "execute": true,
  "auto": false,
  "steps_per_chunk": 10,
  "max_chunks": 60,
  "max_move_deg": 20.0,
  "raw_dir": "/Volumes/KIOXIA/r2r2r-data/datasets/mecharm_redblock_box_deep_even10_v1/raw_episodes",
  "framing_raw_dir": "/Volumes/KIOXIA/r2r2r-data/datasets/mecharm_redblock_box_teach_v1_trim2/raw_episodes",
  "prompt": "put the red block in the white box",
  "model": "deep1 (PixelstoMotors/pi05-mecharm-deep-even10-lora-v1)",
  "record": false,
  "ignore_framing": true,
  "state_from_target": true,
  "via_stride": 3,
  "settle_tol": 1.0,
  "settle_retries": 0,
  "dry_keys": false,
  "send_wait": 0.0,
  "grip_wait": 0.8,
  "grip_open_wait": 0.0,
  "settle_wait": 0.8
 },
 "ended_at": "2026-11-10T11:25:35.850742",
 "judgments": {
  "pick": {
   "human_verdict": "yes",
   "verdict": "yes",
   "source": "human"
  },
  "place": {
   "human_verdict": "yes",
   "verdict": "yes",
   "source": "human"
  }
 }
}

pi05_20261110_112639.json(位置1・結果なし(箱に入れたあとに直しへ入った))

{
 "script": "run_policy_client.py",
 "source": "pi05_policy",
 "run_stem": "pi05_20261110_112639",
 "run_dir": "/Volumes/KIOXIA/r2r2r-data/runs/pi05_policy/pi05_20261110_112639",
 "recording_enabled": true,
 "end_reason": "ctrl_c",
 "result": "interrupted",
 "exit_code": 0,
 "outcome": null,
 "rewinds": 0,
 "corrections": 1,
 "history_left": [
  {
   "kind": "chunk",
   "chunk": 0,
   "correction_id": null,
   "grip_changed": false
  },
  {
   "kind": "chunk",
   "chunk": 1,
   "correction_id": null,
   "grip_changed": false
  },
  {
   "kind": "chunk",
   "chunk": 2,
   "correction_id": null,
   "grip_changed": false
  },
  {
   "kind": "chunk",
   "chunk": 3,
   "correction_id": null,
   "grip_changed": false
  },
  {
   "kind": "chunk",
   "chunk": 4,
   "correction_id": null,
   "grip_changed": true
  },
  {
   "kind": "chunk",
   "chunk": 5,
   "correction_id": null,
   "grip_changed": false
  },
  {
   "kind": "chunk",
   "chunk": 6,
   "correction_id": null,
   "grip_changed": false
  },
  {
   "kind": "chunk",
   "chunk": 7,
   "correction_id": null,
   "grip_changed": false
  },
  {
   "kind": "chunk",
   "chunk": 8,
   "correction_id": null,
   "grip_changed": false
  },
  {
   "kind": "chunk",
   "chunk": 9,
   "correction_id": null,
   "grip_changed": false
  },
  {
   "kind": "chunk",
   "chunk": 10,
   "correction_id": null,
   "grip_changed": true
  },
  {
   "kind": "chunk",
   "chunk": 11,
   "correction_id": null,
   "grip_changed": false
  },
  {
   "kind": "chunk",
   "chunk": 12,
   "correction_id": null,
   "grip_changed": false
  },
  {
   "kind": "correction",
   "correction_id": 1,
   "chunk": null,
   "grip_changed": true
  }
 ],
 "args": {
  "host": "localhost",
  "port": 8000,
  "execute": true,
  "auto": false,
  "steps_per_chunk": 10,
  "max_chunks": 60,
  "max_move_deg": 20.0,
  "raw_dir": "/Volumes/KIOXIA/r2r2r-data/datasets/mecharm_redblock_box_deep_even10_v1/raw_episodes",
  "framing_raw_dir": "/Volumes/KIOXIA/r2r2r-data/datasets/mecharm_redblock_box_teach_v1_trim2/raw_episodes",
  "prompt": "put the red block in the white box",
  "model": "deep1 (PixelstoMotors/pi05-mecharm-deep-even10-lora-v1)",
  "record": false,
  "ignore_framing": true,
  "state_from_target": true,
  "via_stride": 3,
  "settle_tol": 1.0,
  "settle_retries": 0,
  "dry_keys": false,
  "send_wait": 0.0,
  "grip_wait": 0.8,
  "grip_open_wait": 0.0,
  "settle_wait": 0.8
 },
 "ended_at": "2026-11-10T11:28:56.045829"
}

pi05_20261110_112924.json(位置1・成功(直しなし))

{
 "script": "run_policy_client.py",
 "source": "pi05_policy",
 "run_stem": "pi05_20261110_112924",
 "run_dir": "/Volumes/KIOXIA/r2r2r-data/runs/pi05_policy/pi05_20261110_112924",
 "recording_enabled": true,
 "end_reason": "h",
 "result": "completed",
 "exit_code": 0,
 "outcome": "success",
 "rewinds": 0,
 "corrections": 0,
 "history_left": [
  {
   "kind": "chunk",
   "chunk": 0,
   "correction_id": null,
   "grip_changed": false
  },
  {
   "kind": "chunk",
   "chunk": 1,
   "correction_id": null,
   "grip_changed": false
  },
  {
   "kind": "chunk",
   "chunk": 2,
   "correction_id": null,
   "grip_changed": false
  },
  {
   "kind": "chunk",
   "chunk": 3,
   "correction_id": null,
   "grip_changed": false
  },
  {
   "kind": "chunk",
   "chunk": 4,
   "correction_id": null,
   "grip_changed": true
  },
  {
   "kind": "chunk",
   "chunk": 5,
   "correction_id": null,
   "grip_changed": false
  },
  {
   "kind": "chunk",
   "chunk": 6,
   "correction_id": null,
   "grip_changed": false
  },
  {
   "kind": "chunk",
   "chunk": 7,
   "correction_id": null,
   "grip_changed": false
  },
  {
   "kind": "chunk",
   "chunk": 8,
   "correction_id": null,
   "grip_changed": false
  },
  {
   "kind": "chunk",
   "chunk": 9,
   "correction_id": null,
   "grip_changed": false
  },
  {
   "kind": "chunk",
   "chunk": 10,
   "correction_id": null,
   "grip_changed": false
  },
  {
   "kind": "chunk",
   "chunk": 11,
   "correction_id": null,
   "grip_changed": true
  },
  {
   "kind": "chunk",
   "chunk": 12,
   "correction_id": null,
   "grip_changed": false
  },
  {
   "kind": "chunk",
   "chunk": 13,
   "correction_id": null,
   "grip_changed": false
  },
  {
   "kind": "chunk",
   "chunk": 14,
   "correction_id": null,
   "grip_changed": false
  },
  {
   "kind": "chunk",
   "chunk": 15,
   "correction_id": null,
   "grip_changed": false
  }
 ],
 "args": {
  "host": "localhost",
  "port": 8000,
  "execute": true,
  "auto": false,
  "steps_per_chunk": 10,
  "max_chunks": 60,
  "max_move_deg": 20.0,
  "raw_dir": "/Volumes/KIOXIA/r2r2r-data/datasets/mecharm_redblock_box_deep_even10_v1/raw_episodes",
  "framing_raw_dir": "/Volumes/KIOXIA/r2r2r-data/datasets/mecharm_redblock_box_teach_v1_trim2/raw_episodes",
  "prompt": "put the red block in the white box",
  "model": "deep1 (PixelstoMotors/pi05-mecharm-deep-even10-lora-v1)",
  "record": false,
  "ignore_framing": true,
  "state_from_target": true,
  "via_stride": 3,
  "settle_tol": 1.0,
  "settle_retries": 0,
  "dry_keys": false,
  "send_wait": 0.0,
  "grip_wait": 0.8,
  "grip_open_wait": 0.0,
  "settle_wait": 0.8
 },
 "ended_at": "2026-11-10T11:31:23.514095",
 "judgments": {
  "pick": {
   "human_verdict": "yes",
   "verdict": "yes",
   "source": "human"
  },
  "place": {
   "human_verdict": "yes",
   "verdict": "yes",
   "source": "human"
  }
 }
}

pi05_20261110_113433.json(位置2・結果なし(推論4 の答えを送らずに直しへ))

{
 "script": "run_policy_client.py",
 "source": "pi05_policy",
 "run_stem": "pi05_20261110_113433",
 "run_dir": "/Volumes/KIOXIA/r2r2r-data/runs/pi05_policy/pi05_20261110_113433",
 "recording_enabled": true,
 "end_reason": "ctrl_c",
 "result": "interrupted",
 "exit_code": 0,
 "outcome": null,
 "rewinds": 0,
 "corrections": 1,
 "history_left": [
  {
   "kind": "chunk",
   "chunk": 0,
   "correction_id": null,
   "grip_changed": false
  },
  {
   "kind": "chunk",
   "chunk": 1,
   "correction_id": null,
   "grip_changed": false
  },
  {
   "kind": "chunk",
   "chunk": 2,
   "correction_id": null,
   "grip_changed": false
  },
  {
   "kind": "chunk",
   "chunk": 3,
   "correction_id": null,
   "grip_changed": false
  },
  {
   "kind": "correction",
   "correction_id": 1,
   "chunk": null,
   "grip_changed": false
  }
 ],
 "args": {
  "host": "localhost",
  "port": 8000,
  "execute": true,
  "auto": false,
  "steps_per_chunk": 10,
  "max_chunks": 60,
  "max_move_deg": 20.0,
  "raw_dir": "/Volumes/KIOXIA/r2r2r-data/datasets/mecharm_redblock_box_deep_even10_v1/raw_episodes",
  "framing_raw_dir": "/Volumes/KIOXIA/r2r2r-data/datasets/mecharm_redblock_box_teach_v1_trim2/raw_episodes",
  "prompt": "put the red block in the white box",
  "model": "deep1 (PixelstoMotors/pi05-mecharm-deep-even10-lora-v1)",
  "record": false,
  "ignore_framing": true,
  "state_from_target": true,
  "via_stride": 3,
  "settle_tol": 1.0,
  "settle_retries": 0,
  "dry_keys": false,
  "send_wait": 0.0,
  "grip_wait": 0.8,
  "grip_open_wait": 0.0,
  "settle_wait": 0.8
 },
 "ended_at": "2026-11-10T11:35:25.150965"
}

pi05_20261110_113600.json(位置2・失敗)

{
 "script": "run_policy_client.py",
 "source": "pi05_policy",
 "run_stem": "pi05_20261110_113600",
 "run_dir": "/Volumes/KIOXIA/r2r2r-data/runs/pi05_policy/pi05_20261110_113600",
 "recording_enabled": true,
 "end_reason": "h",
 "result": "completed",
 "exit_code": 0,
 "outcome": "failure",
 "rewinds": 0,
 "corrections": 1,
 "history_left": [
  {
   "kind": "chunk",
   "chunk": 0,
   "correction_id": null,
   "grip_changed": false
  },
  {
   "kind": "chunk",
   "chunk": 1,
   "correction_id": null,
   "grip_changed": false
  },
  {
   "kind": "chunk",
   "chunk": 2,
   "correction_id": null,
   "grip_changed": false
  },
  {
   "kind": "correction",
   "correction_id": 1,
   "chunk": null,
   "grip_changed": false
  },
  {
   "kind": "chunk",
   "chunk": 4,
   "correction_id": null,
   "grip_changed": false
  },
  {
   "kind": "chunk",
   "chunk": 5,
   "correction_id": null,
   "grip_changed": true
  }
 ],
 "args": {
  "host": "localhost",
  "port": 8000,
  "execute": true,
  "auto": false,
  "steps_per_chunk": 10,
  "max_chunks": 60,
  "max_move_deg": 20.0,
  "raw_dir": "/Volumes/KIOXIA/r2r2r-data/datasets/mecharm_redblock_box_deep_even10_v1/raw_episodes",
  "framing_raw_dir": "/Volumes/KIOXIA/r2r2r-data/datasets/mecharm_redblock_box_teach_v1_trim2/raw_episodes",
  "prompt": "put the red block in the white box",
  "model": "deep1 (PixelstoMotors/pi05-mecharm-deep-even10-lora-v1)",
  "record": false,
  "ignore_framing": true,
  "state_from_target": true,
  "via_stride": 3,
  "settle_tol": 1.0,
  "settle_retries": 0,
  "dry_keys": false,
  "send_wait": 0.0,
  "grip_wait": 0.8,
  "grip_open_wait": 0.0,
  "settle_wait": 0.8
 },
 "ended_at": "2026-11-10T11:37:01.344058",
 "judgments": {
  "pick": {
   "human_verdict": "no",
   "verdict": "no",
   "source": "human"
  },
  "place": {
   "human_verdict": "no",
   "verdict": "no",
   "source": "human"
  }
 }
}

pi05_20261110_113741.json(位置2・失敗)

{
 "script": "run_policy_client.py",
 "source": "pi05_policy",
 "run_stem": "pi05_20261110_113741",
 "run_dir": "/Volumes/KIOXIA/r2r2r-data/runs/pi05_policy/pi05_20261110_113741",
 "recording_enabled": true,
 "end_reason": "h",
 "result": "completed",
 "exit_code": 0,
 "outcome": "failure",
 "rewinds": 0,
 "corrections": 1,
 "history_left": [
  {
   "kind": "chunk",
   "chunk": 0,
   "correction_id": null,
   "grip_changed": false
  },
  {
   "kind": "chunk",
   "chunk": 1,
   "correction_id": null,
   "grip_changed": false
  },
  {
   "kind": "chunk",
   "chunk": 2,
   "correction_id": null,
   "grip_changed": false
  },
  {
   "kind": "correction",
   "correction_id": 1,
   "chunk": null,
   "grip_changed": false
  },
  {
   "kind": "chunk",
   "chunk": 4,
   "correction_id": null,
   "grip_changed": true
  },
  {
   "kind": "chunk",
   "chunk": 5,
   "correction_id": null,
   "grip_changed": false
  },
  {
   "kind": "chunk",
   "chunk": 6,
   "correction_id": null,
   "grip_changed": false
  },
  {
   "kind": "chunk",
   "chunk": 7,
   "correction_id": null,
   "grip_changed": false
  },
  {
   "kind": "chunk",
   "chunk": 8,
   "correction_id": null,
   "grip_changed": false
  }
 ],
 "args": {
  "host": "localhost",
  "port": 8000,
  "execute": true,
  "auto": false,
  "steps_per_chunk": 10,
  "max_chunks": 60,
  "max_move_deg": 20.0,
  "raw_dir": "/Volumes/KIOXIA/r2r2r-data/datasets/mecharm_redblock_box_deep_even10_v1/raw_episodes",
  "framing_raw_dir": "/Volumes/KIOXIA/r2r2r-data/datasets/mecharm_redblock_box_teach_v1_trim2/raw_episodes",
  "prompt": "put the red block in the white box",
  "model": "deep1 (PixelstoMotors/pi05-mecharm-deep-even10-lora-v1)",
  "record": false,
  "ignore_framing": true,
  "state_from_target": true,
  "via_stride": 3,
  "settle_tol": 1.0,
  "settle_retries": 0,
  "dry_keys": false,
  "send_wait": 0.0,
  "grip_wait": 0.8,
  "grip_open_wait": 0.0,
  "settle_wait": 0.8
 },
 "ended_at": "2026-11-10T11:40:44.459284",
 "judgments": {
  "pick": {
   "human_verdict": "no",
   "verdict": "no",
   "source": "human"
  },
  "place": {
   "human_verdict": "no",
   "verdict": "no",
   "source": "human"
  }
 }
}

pi05_20261110_114106.json(位置2・結果なし(ここで打ち切った))

{
 "script": "run_policy_client.py",
 "source": "pi05_policy",
 "run_stem": "pi05_20261110_114106",
 "run_dir": "/Volumes/KIOXIA/r2r2r-data/runs/pi05_policy/pi05_20261110_114106",
 "recording_enabled": true,
 "end_reason": "h",
 "result": "completed",
 "exit_code": 0,
 "outcome": null,
 "rewinds": 0,
 "corrections": 1,
 "history_left": [
  {
   "kind": "chunk",
   "chunk": 0,
   "correction_id": null,
   "grip_changed": false
  },
  {
   "kind": "chunk",
   "chunk": 1,
   "correction_id": null,
   "grip_changed": false
  },
  {
   "kind": "chunk",
   "chunk": 2,
   "correction_id": null,
   "grip_changed": false
  },
  {
   "kind": "correction",
   "correction_id": 1,
   "chunk": null,
   "grip_changed": true
  },
  {
   "kind": "chunk",
   "chunk": 4,
   "correction_id": null,
   "grip_changed": false
  },
  {
   "kind": "chunk",
   "chunk": 5,
   "correction_id": null,
   "grip_changed": false
  },
  {
   "kind": "chunk",
   "chunk": 6,
   "correction_id": null,
   "grip_changed": false
  },
  {
   "kind": "chunk",
   "chunk": 7,
   "correction_id": null,
   "grip_changed": false
  },
  {
   "kind": "chunk",
   "chunk": 8,
   "correction_id": null,
   "grip_changed": true
  }
 ],
 "args": {
  "host": "localhost",
  "port": 8000,
  "execute": true,
  "auto": false,
  "steps_per_chunk": 10,
  "max_chunks": 60,
  "max_move_deg": 20.0,
  "raw_dir": "/Volumes/KIOXIA/r2r2r-data/datasets/mecharm_redblock_box_deep_even10_v1/raw_episodes",
  "framing_raw_dir": "/Volumes/KIOXIA/r2r2r-data/datasets/mecharm_redblock_box_teach_v1_trim2/raw_episodes",
  "prompt": "put the red block in the white box",
  "model": "deep1 (PixelstoMotors/pi05-mecharm-deep-even10-lora-v1)",
  "record": false,
  "ignore_framing": true,
  "state_from_target": true,
  "via_stride": 3,
  "settle_tol": 1.0,
  "settle_retries": 0,
  "dry_keys": false,
  "send_wait": 0.0,
  "grip_wait": 0.8,
  "grip_open_wait": 0.0,
  "settle_wait": 0.8
 },
 "ended_at": "2026-11-10T11:43:51.533280"
}

サムネイルのために足したコード(p2m-site の tools/lab_thumbs/)

サムネイルは、位置1 の3回(上)と位置2 の4回(下)の肩 j1 の動きを描いています。青は π0.5 が動かした所、赤はつかんでいる間、墨と紙色はゲームパッドで直した所です。元データを書き出す extract.py と、描く lab_thumb.py に、この回の分を足しました。

extract.py に足した行

# LOG484: 2026-11-10 の deep1 の実機推論。位置1 の3回(112346・112639・112924)と位置2 の4回(113433・113600・113741・114106)。
#  states() の点(j0・j1・j2・つかんでいるか・m=π0.5 / c=ゲームパッドの直し)
o['LOG484'] = {'1': [states(f'runs/pi05_policy/pi05_20261110_{s}/recording/states.csv') for s in ('112346', '112639', '112924')],
               '2': [states(f'runs/pi05_policy/pi05_20261110_{s}/recording/states.csv') for s in ('113433', '113600', '113741', '114106')]}

lab_thumb.py に足した行

484 split   480 dark    479 split   463 dark    461 paper   460 split   450 dark    446 paper   436 dark    422 photo_l 419 photo_r 417 dark
    if n == 484:
        # 上は位置1 の3回、下は位置2 の4回。肩 j1 の動き(横は1回の中の順番、縦は同じ目盛り)。青=π0.5 が動かした所、赤=つかんでいる間、
        # 墨・紙色=ゲームパッドで直した所。位置1 は3回とも下りきってつかみ、位置2 は途中で人の直しに替わる
        d4 = d['LOG484']
        sc = (0, 92)
        return split('π0.5 · 50 DEMOS', 'POSITION 1 / 2', runs_draw(d4['1'], 1, w=4.5, scale=sc), runs_draw(d4['2'], 1, w=4.5, scale=sc))