2
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?

【備忘】ロボットアーム(LeRobot SO-101)の組立てから模倣学習まで

2
Posted at

はじめに

フィジカルAIを手軽に学習したい時、ロボットアームは有力な選択肢の一つです。今回はLeRobot SO-101 [参考1,2] というロボットアームの組立てから模倣学習までについて、既存の記事や生成AIのサポートを前提に情報を整理します(2026/8時点)。概要は以下の通りです。

概要図
image4.png

項目 概要 対応する章
① 環境構築 AIによる質の高い学習を目指し安定的な環境を構築します。
② 操作データ作成 人がリーダーアームを操作すると、フォロワーアームは同じ動きをします(遠隔操作、テレオペレーション)。その様子をカメラで撮影し操作データとします。
③ AIモデル構築 操作データを学習し、人の操作を再現させます(模倣学習)。

費用と作業時間

SO-101は、テーブル1つ分の作業スペースがあれば、手軽にロボットアームの組立てからAIの学習・推論までを体験できるキットです。必要な費用と作業時間の目安は以下の通りです。

費用と作業時間(目安)

項目 費用 作業時間(目安)1 できること
ロボットアーム組立てのみ 約6万円2 8時間
  • 遠隔操作(テレオペレーション)
  • データ作成
組立てからAIの学習・推論まで(本記事で扱う全工程) 約7.5万円3 16時間
  • 模倣学習

開発環境

  • MacBook Pro (M1,2020,メモリ16G)
  • ロボットアーム本体 (5.75万円)
    • SO-101 オープンソースロボットアームキット Pro版 ACアダプター付 [参考1]
    • SO-101 オープンソースロボットアームキット 3Dプリントパーツ [参考2]
  • 周辺機器4 (0.87万円)
  • 環境(box)作成 (0.63万円)
    • 発泡スチロールボード 5枚 [参考6]
    • ガムテープ(白)[参考7]
  • Lerobotバージョン: 0.6.0
  • Azure VM (0.1万円): Standard_NC8as_T4_v3

ロボットアームの組立て

基本的には参考リンク[参考8-10]を元に作業を進められます。作業効率化の観点で事前に知れれば良かったと個人的に感じた情報を以下に整理します。

  • ネジ穴について
    市販の3Dプリントパーツの中には、ネジ穴が小さいため指定のネジが通らないことがありました。大きめのドライバーを使ってネジ穴を広げることで対応しました。
    image.png

  • ケーブルについて
    モーターにはケーブル接続のための穴が2つ空いていますが、左右で役割の違いはありません。モーターに繋いだケーブルをとりたい場合、小さなマイナスドライバーを隅に差し込んで傷つけないようにテコで徐々にとりだすと取り出せます。モーターが誤ってハマってしまった場合なども同様に対応しました。
    image.png

  • 各部位の名称
    image.png

  • カメラを設置するパーツ
    購入したキットについてきますがカメラは別売りです。
    image.png

  • ネジについて
    モーターの箱の中に数種類のネジが入っています。先の尖った細いネジと先が平坦なネジ以外は組立てに使用しないです(別の小さい袋に入っているネジは基盤固定用です)。

環境(Box)作り

参考リンク[参考11]を元に作成しました。Boxを作ることで学習環境の安定性の向上と、学習データに個人情報が映り込むリスクの低下が期待できます。購入したボードからカッターを使って指定の大きさになるように切り出してガムテープで固定しました。リンク先で言及のあるオブジェクトを置くための黒マットは今回購入していませんが、高さ調節と床部分の緩衝材として必要と感じました。箱側面のカメラは当初スマホを使おうと考えていたのですが、取り回しが悪かったためウェブカメラを購入しました。複数の視点で状況をデータ化した方がAIの学習がうまくいきやすいため、カメラはウェブカメラとリストカメラの2台用いました。

完成図
image.png

初期設定

初期設定として、キャリブレーションとカメラ設定を行います。

キャリブレーション

初回はモーターのID設定と駆動範囲を決めるキャリブレーションを行います。リンク先[参考12]を元に進められます。

  • ID設定について
    上から(持ち手やハサミの部分から)順に設定します。ID設定前にケーブルを繋ぎ切ってしまうと一度外すことになります。

カメラ設定

リンク先[参考13]を参考に進めました。今回の検証において、2台のカメラ設定は同じでうまくいきました。

  • カメラの認識確認コマンド
    lerobot_find_cameras.pyがどこにあるかは事前確認が必要でした。
カメラの認識確認
python lerobot/src/lerobot/scripts/lerobot_find_cameras.py opencv
  • カメラの動作確認コマンド
    2台カメラでは同期がカクついたため、解像度を640*480にしています。
カメラの動作確認
lerobot-teleoperate \
    --robot.type=so101_follower \
    --robot.port=/dev/tty.usbmodem*** \
    --teleop.type=so101_leader \
    --teleop.port=/dev/tty.usbmodem*** \
    --robot.cameras='{ front: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 30}, wrist: {type: opencv, index_or_path: 1, width: 640, height: 480, fps: 30} }' \
    --display_data=true

遠隔操作(テレオペレーション)

参考リンク[参考9]を元に以下のコードで実施しました。初期設定がうまくいっていない場合には、思っているように操作できないので、やり直す必要があります。

遠隔操作(テレオペレーション)
lerobot-teleoperate \
--robot.type=so101_follower \
--robot.port=/dev/tty.usbmodem*** \
--teleop.type=so101_leader \
--teleop.port=/dev/tty.usbmodem***

データ作成

参考リンク[参考14]を元に以下のコードで実施しました。今回は消しゴムへのつまみ動作(Pinch Grasp、指定位置に動かすタスク)のデータを取得しました。

設定
# TOKEN設定(hugging face hubのサイト上で発行されるトークンを設定)
export HUGGINGFACE_TOKEN="hf_***"

# hugging face hubにログイン
hf auth login --token "${HUGGINGFACE_TOKEN}" --add-to-git-credential

# ユーザー名設定
HF_USER="***"

# 現在のログイン状態確認
hf auth whoami
レコード記録
lerobot-record \
  --robot.type=so101_follower \
  --robot.port=/dev/tty.usbmodem*** \
  --robot.cameras='{ front: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 30}, wrist: {type: opencv, index_or_path: 1, width: 640, height: 480, fps: 30} }' \
  --teleop.type=so101_leader \
  --teleop.port=/dev/tty.usbmodem*** \
  --display_data=true \
  --dataset.repo_id=***/record-test \
  --dataset.root=./record-test-v1 \
  --dataset.single_task="Grab the eraser" \
  --resume=true \
  --dataset.num_episodes=30 \
  --dataset.episode_time_s=30 \
  --dataset.reset_time_s=10

モデル作成(模倣学習)

ここでは、Action Chunking Transformer(ACT)[参考15] というAIモデルで学習させることを目標とします。Azure上で学習させる流れを以下に記載します。各ステップについては生成AIのサポートを受けながらその通り対応すれば問題なく進められます。モデルをhugging face hub上に保存することで、ローカルで推論する際にダウンロードしなくてもよくなります。パラメータについてはリンク先 [参考16] を参考にしました。

  1. GPU関連の初期設定:nvidia-smiコマンドが動作するまで
  2. ローカルと同じlerobotの環境構築
  3. hugging face へのログイン
  4. 訓練(以下のコード、数時間程度の計算時間)
モデル訓練
RUN=act_record_test_smoke
lerobot-train \
  --dataset.repo_id=***/record-test \
  --policy.type=act \
  --output_dir="outputs/train/${RUN}" \
  --job_name="${RUN}" \
  --policy.device=cuda \
  --policy.repo_id="***/${RUN}" \
  --policy.private=true \
  --policy.push_to_hub=true \
  --wandb.enable=false \
  --steps=20000 \
  --batch_size=8 \
  --num_workers=4 \
  --save_freq=2000 \

モデル推論(mac上)

以下のコマンドで推論させました。

モデル推論
lerobot-rollout \
  --strategy.type=base \
  --policy.path=***/act_record_test_v1 \
  --policy.device=mps \
  --robot.type=so101_follower \
  --robot.port=/dev/tty.usbmodem*** \
  --robot.cameras='{ front: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 30}, wrist: {type: opencv, index_or_path: 1, width: 640, height: 480, fps: 30} }' \
  --display_data=true \
  --task="Grab the eraser" \
  --duration=30

動作しているところ
RobotArm demo

Tips
期待通りに動作しない場合、以下のコードで学習データをロボットアームが再現してくれるので、それを参考にテスト環境を学習データに近づけて動作確認するとうまくいくことがあります。ただし、この方法でうまくいった場合、過学習の可能性があるので、データを多くするなどの対応が必要かもしれません。

学習データ再現
lerobot-replay \
  --robot.type=so101_follower \
  --robot.port=/dev/tty.usbmodem/*** \
  --dataset.repo_id=***/record-test \
  --dataset.episode=0

感想

当初フィジカルAIというワードからAI開発のイメージも持ちつつ取り組んでいましたが、今回の記事の範囲では、AIモデルについて試行錯誤するというよりも安定的な環境作りや質の高いデータ作成の方がより中心的なタスクであると感じました。そして、今回の記事の内容はフィジカルAIの初歩の初歩かもしれませんが、それでもロボットを安定的かつ意図通りに動かそうとすると相当コストがかかる印象を受けました。従来のロボティクス技術ではカバーしきれない領域かつフィジカルAIが精度よく対応でき、かつコストに見合った価値がある領域が現状狭いとすると、ロボットに何をさせるかが重要です。
生成AIと同様にフィジカルAIも目覚ましい発展を遂げることが見込まれている領域ですので、引き続きウォッチしていきたいと思います。
改善点やご質問などあれば、コメントよろしくお願いいたします。

参考

  1. https://akizukidenshi.com/catalog/g/g131228/
  2. https://akizukidenshi.com/catalog/g/g131222/
  3. https://emeet.co.jp/products/webcam-c960
  4. https://www.inno-maker.com/product/u20cam-1080p/
  5. https://www.elecom.co.jp/products/U3H-T410SBK.html
  6. https://www.yodobashi.com/product-detail/100000001008716428/
  7. https://www.yodobashi.com/product-detail/100000001009050042/
  8. https://zenn.dev/oggata/books/41ce1497ddde6a/viewer/e86bae
  9. https://qiita.com/tatsuya1970/items/3f04c9c6d21744190f41
  10. https://note.com/npaka/n/n8424d322ebd4
  11. https://docs.nvidia.com/learning/physical-ai/sim-to-real-so-101/latest/05-building-workspace.html
  12. https://note.com/npaka/n/n88bb52573d90
  13. https://note.com/npaka/n/naf5f1cb6981a
  14. https://qiita.com/tatsuya1970/items/a1f16128853869127096
  15. https://arxiv.org/abs/2304.13705
  16. https://zenn.dev/oggata/books/41ce1497ddde6a/viewer/1aef43
  1. 順調に進められた場合の作業時間の目安を個人的な体験から記載 ↩

  2. アーム本体と3Dパーツを合わせた価格。模倣学習にはPC、カメラ、その他動作環境構築のための備品が必要 ↩

  3. ロボットアーム費用に周辺機器と環境(Box)作成費用を足したもの。詳しくは開発環境をご確認願います ↩

  4. 周辺機器は著者の場合、定価より安く購入することができたため1万円以内でした ↩

2
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
2
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?