フォーム読み込み中
この記事はソフトバンク アドベントカレンダー2025に参加しています。24日目の記事を担当する菅谷です。
普段はIoTビジネス領域のAIデバイスにおける技術調査、フィージビリティスタディ、プロトタイピングに携わっています。
昨今Physical AIの進歩が加速しています。ロボットの基盤モデルを使うことで少量の教師データでも動作を生成し、自律的に動かすことが可能となってきました。
本記事ではNvidiaがオープンモデルとして提供しているNVIDIA Isaac GROOT N1.5とLeRobotのオープンソースのロボットアームであるSO-101 Armsを用いて、Physical AIで実際にロボットを動かしてみた様子を紹介します。
SO 101はHuggingfaceが公開したオープンソースのロボットアームです。骨格の設計図がGithubのレポジトリに公開されています。
Hugging Faceが主導するロボット制御プロジェクト「LeRobot」向けに設計されており、LeRobotのライブラリおよびデータセット形式に対応しています。そのため、AIによる模倣学習(Imitation Learning) を低コストでスピーディーに実践できる標準機として注目されています。次の2つのアームが含まれています。
GR00T N1.5は、ヒューマノイドロボット向けの汎用的な推論・スキル学習のためのオープンな基盤モデルです。以下の2つの主要コンポーネントが組み合わさっています。
ロボットの学習には大きく分けて模倣学習と強化学習の2つの手法があります。
模倣学習(Imitation Learning)
強化学習(Reinforcement Learning)
SO101はリーダーアームでフォロワーアームを操作することで模倣学習用の学習データを簡単に作成することができます。今回はGROOT N1.5でSO-101を動かすために模倣学習によるfine tuningを試してみることにしました。
SO-101のフォロワーアームをPhysical AIで動かすための流れは以下のようになります。
LeRobotのライブラリではそれぞれの工程に対応したコマンドが用意されているため、ロボット初心者でも簡単にPhysical AIを試すことができます。
まずロボットを操作して、教師データを作成します。PC側の環境構築、アーム組み立て、モーターIDの割り振り、アームのキャリブレーションをインストラクションにしたがって進めます。
今回試すタスクは目の前のテープを拾って奥の箱に収納するというシンプルなものにしました。
カメラはロボットアームの手元を撮影するカメラと(wrist)と上からロボットアーム、テープ、箱を上から撮影する俯瞰カメラ(front)の2台構成にしました。
教師用データのためのLeRobotコマンドは以下の通りです。
ひたすらロボットを操作して、100試行分の教師用データを作成しました。
lerobot-record \
--robot.type=so101_follower \
--robot.port=/dev/ttyACM1 \
--robot.id=my_awesome_follower_arm \
--teleop.type=so101_leader \
--teleop.port=/dev/ttyACM0 \
--teleop.id=my_awesome_leader_arm \
--robot.cameras='{"front":{"type":"opencv","index_or_path":1,"width":1920,"height":1080,"fps":30},"wrist":{"type":"opencv","index_or_path":2,"width":640,"height":480,"fps":30}}' \
--display_data=true \
--dataset.single_task="Grab a tape and place it in the box." \
--dataset.push_to_hub=false \
--dataset.episode_time_s=30 \
--dataset.reset_time_s=15 \
--dataset.num_episodes=100
10月に行われたLeRobotのライブラリアップデートv0.4.0にてLeRobotのコマンドの引数にGROOT N1.5を直接指定できるようになりました。以前のバージョンまでは、fine tuning時にLeRobotのデータセット形式をGROOTに対応させるために互換用のファイルを作成する必要がありましたが、それらの工程が全て省略できるようになりました。
モデルについては、誤差から判断し5000ステップほどfine tuningしたものを使用することとしました。
GROOT N1.5のfine tuning時のGPUの要求スペックを参照して実行環境を選択してください。
fine tuningのためのコマンドは以下の通りです。
accelerate launch \
--multi_gpu \
--num_processes=$(nvidia-smi -L | wc -l) \
$(which lerobot-train) \
--policy.type=groot \
--policy.push_to_hub=false \
--dataset.repo_id=${HF_USER}/${YOUR_REPO_ID} \
--batch_size=32 \
--steps=5000 \
--save_checkpoint=true \
--wandb.enable=false \
--save_freq=1000 \
--log_freq=100 \
--policy.tune_diffusion_model=false \
--output_dir=./outputs/
lerobot-record \
--robot.type=so100_follower \
--robot.port=/dev/ttyACM1 \
--robot.id=my_awesome_follower_arm \
--robot.cameras='{"front":{"type":"opencv","index_or_path":1,"width":1920,"height":1080,"fps":30},"wrist":{"type":"opencv","index_or_path":2,"width":640,"height":480,"fps":30}}' \
--display_data=false \
--dataset.repo_id=${HF_USER}/${YOUR_REPO_ID} \
--dataset.num_episodes=1 \
--dataset.single_task="Grab a tape and place it in the box."
--policy.path=${HF_USER}/${YOUR_TRAINED_MODEL}
--dataset.episode_time_s=30
--dataset.reset_time_s=15
無事、Physical AIとロボットアームでテープを掴めました!
近年Hugging Faceはオープンソースハードウェアの分野にも注力しています。SO101やReachy mini等の廉価なロボットだけでなくヒューマノイド型ロボットReachy2といった様々なオープンソースハードウェアを展開しています。
今後、オープンソースのハードウェアとAIモデルを使ってより手軽にロボット開発ができるようになり、多くの活用方法が見出されることだと思います。
来年以降、ますます加速していくであろうフィジカルAIの活用・開発を今後も継続ウォッチしていきたいと思います!
それでは、ソフトバンク アドベントカレンダー2025 25日目の記事もお楽しみに!
条件に該当するページがございません