フィジカルAI研究室を作る Log#28 | 50本で学んだ π0.5 をアームで試し、位置2 で外れた
この記事の素材(コード・ログ・データ 5ファイル・まとめてダウンロードあり)arrow_downwardAIで読む ChatGPT・Claude などで、この記事に質問できます expand_more
位置ごとに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:45 | Pod を消した | 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、買うか借りるか実際に借りて学習させた費用と、損益分岐の計算機で決められますarrow_forwardこの回の作業は、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 | 0 | 46.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/)
#!/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.
[90mHint: The `hf-cli` skill is not installed. Run `hf skills add -g` to teach your AI agents how to use the `hf` CLI.[0m
[32m✓ Logged in[0m
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)
[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)
[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)
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・成功(運ぶ途中にゲームパッドで直した))
{
"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))