SO101 tidy-up: ACT(比較用)

ID:Y-ORIHARA ・ Physical AI 講座 2026 応用編1 最終課題

低価格ロボットアーム SO101 が、机の上の黒いスポンジを白い箱へ片付ける ACT です。LeRobot 0.6.1 で学習しました。同じデータで学習した Diffusion Policy との比較用に公開しています。

結果

同じ4つのランダム配置(マス ②④⑧、③④⑧、①⑤⑦、②⑤⑨)で各 5 回、計 20 回ずつ試しました。

指標 ACT(このモデル) Diffusion Policy
2つのスポンジの「間」をつかんだ回 15 / 20 0 / 20
箱に入ったスポンジ 29 / 60(48%) 51 / 60(85%)
3個とも片付けた回 3 / 20 15 / 20
  • 手前の列(マス ①②③)のような決まった並べ方では、5 回中 4 回、3個とも片付けました。
  • ランダムな並べ方では、2つのスポンジの「間」(何もない場所)をつかむ失敗が多く出ました。答えが2つある場面(多峰性)で中間に寄るという仮説を立て、Diffusion Policy で検証しました。

入力と出力

項目 内容
observation.state 関節角度 6 個(SO101 フォロワー)
observation.images.top 上のカメラ(Logicool C920)、640×480
observation.images.wrist 手首カメラ(Inno-Maker U20CAM-1080P)、640×480
action 関節角度の目標値 6 個

学習の設定

  • お手本:112 回分。94 回分で学習したモデルから追加学習した(20,000 ステップ、バッチ 8)。
  • CVAE で行動列を学ぶ(L1 誤差 + KL 項、kl_weight 10)。100 コマをまとめて予測・実行する。

動かし方

lerobot-rollout --strategy.type=base \
  --policy.path=tenyyprn/so101-tidyup-act \
  --robot.type=so101_follower --robot.port=<フォロワーのポート> --robot.id=<キャリブレーション名> \
  --robot.max_relative_target=10 \
  --robot.cameras="{ top: {type: opencv, index_or_path: <上のカメラ>, width: 640, height: 480, fps: 30, fourcc: MJPG}, wrist: {type: opencv, index_or_path: <手首カメラ>, width: 640, height: 480, fps: 30, fourcc: MJPG} }" \
  --task="Put all the black sponges in the white box" --duration=45

制約

  • 1 台の SO101、1 つの机、1 つの箱、決まったカメラ位置で集めたデータだけで学習しています。環境が変わると、そのままでは動かない可能性が高いです。
  • 学習データは、手首カメラに部屋が映るため公開していません。

参考文献

Downloads last month
26
Safetensors
Model size
51.7M params
Tensor type
F32
·
Video Preview
loading

Paper for tenyyprn/so101-tidyup-act