実機評価プロトコル(ACT / SO-101)¶
チェックポイントは val_l1 だけで選ばない。
本ページは学習後の実機 ACT 評価(オープンループ採点と live ロールアウト)の手順書である。テレオペ収録の QC(scripts/qc_teleop_dataset.py の閾値)は 収録後の QC を参照。
1. オープンループ採点(実機の前)¶
cd <repo> # lerobot-so101-pick-and-place
source "$HOME/work/lerobot-hw/.venv/bin/activate"
export PYTHONPATH="$PWD/port_pick_align/src"
export PYTORCH_ENABLE_MPS_FALLBACK=1
python scripts/score_act_checkpoints.py \
--run-dirs \
"$HOME/work/lerobot-hw/outputs/act_so101_clean28_trim_20261024" \
"$HOME/work/lerobot-hw/outputs/act_so101_main_clean28_20261023" \
--dataset-root "$HOME/work/lerobot-hw/datasets/so101_pick_sponge_main_20261023_clean28" \
--device mps \
--out "$HOME/work/lerobot-hw/outputs/real_eval/checkpoint_scores.json" \
--md-out "$HOME/work/lerobot-hw/outputs/real_eval/checkpoint_scores.md"
見る指標:
| 指標 | 意味 |
|---|---|
| frame0 chunk travel | 開始で「動く」意図があるか(高いほど待機学習が弱い) |
| frame0 MAE_arm | 開始の模倣精度 |
| mid MAE_arm | 中盤の模倣精度 |
| score | travel を上げ、MAE を下げた合成スコア |
推奨: run ごとに score 上位と、frame0 travel が明確に大きい ckpt を実機候補にする。val_l1 best だけにしない。
2. 実機ロールアウト¶
live の前に 現行テーブル配置(140×70 cm) と live-eval チェックリスト を確認する。
- テーブル 140 × 70 cm。Leader は左から 27 cm / 右から 101 cm。Follower は左から約 68 cm / 右から 61 cm
- 紙は右から 69 cm、手前から 27 cm(縦置き 20×30 cm)。スポンジは右から 54 cm、手前から 44 cm(縦置き 6×11 cm)
- C920 は右端、手前から 16 cm。紙・スポンジ・Follower が写る向き
- 手首カメラは Follower のグリッパ。OpenCV wrist=
0、top=1 - 2026-10-22、2026-10-25 ~23:28、簡易 MuJoCo の (28, −8) / (35, 12) は使わない
./scripts/home_arm.sh --live
./scripts/run_act_real.sh --live \
--n-action-steps 10 \
--checkpoint <ckpt.pt>
# --live ではデフォルトで --save-video が有効(無効化は --no-save-video)
# temporal ensembling(毎ステップ推論 + 指数平均, k=0.01)
./scripts/run_act_real.sh --live \
--temporal-ensemble \
--checkpoint <ckpt.pt>
./scripts/home_arm.sh --live
ログ: $LEROBOT_HW_ROOT/outputs/logs/act_live_*.log
動画: $LEROBOT_HW_ROOT/outputs/rollouts/act_*.mp4
3. 軽い trim 再学習(MPS 空き時)¶
# 予想: 25k steps で約 3.5–4 時間(MPS)
KEEP_BEFORE=40 UNTRIM_MIX=0.5 STEPS=25000 \
./scripts/train_act_light_trim.sh
KEEP_BEFORE=40: first_motion の 40 フレーム前から残すUNTRIM_MIX=0.5: train 側エピソードの半分は trim しない--checkpoint-interval 2500: 中間 ckpt を残して上記スコアリングに回す
エージェントは長時間学習を自動起動しない。 オペレータがライブ試験後に手動で起動する。