0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

250エピソード分の失敗を経て、SO-101がようやく黄色いブロックを掴んだ話

0
Last updated at Posted at 2026-07-28

250エピソード分の失敗を経て、SO-101がようやく黄色いブロックを掴んだ話

この動画から

無加工・カットなし。SO-101ロボットアームが、学習済みモデル(LeRobotのACTポリシー)の推論だけで黄色いレゴブロックを掴み、白いケースに入れています。

派手な演出はありませんが、自分にとってはこれが最初の「ちゃんと掴めた」瞬間でした。この記事では、そこに至るまでの失敗と、今回何を変えたのかを書きます。

背景:M1 Macで250エピソード溶かした話

以前、M1 Mac環境でSO-101の模倣学習(imitation learning)を試していました。データセットは2つ収集しています。

  • ブロックの位置・白い箱の位置、両方を毎回変えて収集したデータセット
  • 箱の位置を固定し、ブロックの位置だけを変える「変数を絞った」データセット(narrow_v1と命名)

合計で250エピソード分を収集しましたが、どちらのデータセットで学習しても、実用的に掴めるところまでは到達しませんでした。動きがカクカクして安定しない、という状態です(自分のブログ記事には途中経過として200エピソードまでの記録が残っています)。

当時の暫定的な理解は、「変数(ブロックの位置と箱の位置)が2つとも動くと、学習に必要なデータ量が膨大になる」というものでした(これは自分で検証した話ではなく、模倣学習の一般論として聞いた話です)。ただし実際には、変数を絞ったnarrow_v1データセットで学習しても、M1 Mac上ではやはり掴めませんでした。つまり「変数を絞ればそれだけで解決する」という単純な話ではなさそうだ、というのがこの時点での実感です。

M1 Macでの推論は8Hz程度にとどまっており、制御ループの目標である30Hzに全く届いていませんでした。ロボットの動きがカクカクしていたのは、これも一因だったと考えられます。

今回変えたこと

まず、PCをBTO PC(Ryzen 7 9800X3D / RTX 5060 Ti 16GB)に新調しました。

データ収集の設計は、narrow_v1のときと同じ「変数を絞る」方針を踏襲しています。白いケースの位置は固定し、黄色いレゴブロックの位置だけを変える形です。ただし、これはM1 Mac時代のnarrow_v1データセットの使い回しではなく、新しいPC・新しい環境で完全に新規収集したデータです。

  • タスク:黄色いレゴブロックを、白いケースに入れる
  • データ:50エピソード(新規収集)
  • ポリシー:LeRobotのACT(Action Chunking Transformer)
  • 学習ステップ数:20,000

学習時のlossは6.506(step 200)→0.119(step 20000)まで低下し、大きな暴れもなく収束しました。

結果

学習したポリシー(emboss369/act-yellow-lego-to-white-case)をSO-101フォロワーアームに実際に推論させたところ、掴む→運ぶ→白いケースに入れる、までタスクを完遂しました。M1 Mac時代の250エピソード×2データセットに対して、新しいPC+50エピソードでの成功です。動きにもカクつきがなく、滑らかでした。

なぜ滑らかになったのか、正直まだ断定はできません。GPUの推論速度が上がったからかもしれませんし、ACTポリシー自体が行動チャンキング(先読みした一連の動作をまとめて出力する仕組み)を持っているため、そもそも滑らかになりやすい設計だからかもしれません。今回のログには「制御ループが目標30Hzに対して5Hzしか出ていない」という警告が起動直後に1回だけ出ており、これが一時的なウォームアップだったのか、実は最後まで遅かったのかもログだけでは判別できていません。この点は今後の宿題です。

大事な限界:まだ「掴めた」だけで「汎化した」わけではない

ここが今回いちばん書いておきたいことです。

実際に色々な位置にブロックを置いて試したところ、学習データを収集したときにブロックを置いていた場所の付近でしか、安定して掴めませんでした。それ以外の、置いたことのない場所では掴めません。

つまり今回の成功は、「SO-101が黄色いブロックを認識して掴む」という一般的なタスクを解けているのではなく、「学習データの範囲内の、限られた位置でだけ再現できている」状態です。動画だけを見ると汎化できているように見えるかもしれませんが、そうではありません。

次にやること

次のデータ収集では、ブロックの配置位置に意図的なバリエーションを持たせて記録し、位置に対する汎化が実際に改善するかを検証する予定です。


日々の作業ログはGitHubのBuild Logに残しています。興味があれば覗いてみてください。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?