初心者向けガイド:VLAでtoioを操作する
ABEJA は、高価なロボットアームに代わり低コストの教育用ロボット toio を活用し、VLA(Vision-Language-Action)モデルの実証実験を成功させました。
キーポイント
Physical AI の参入障壁低下
従来のロボットアームはコストと工数がかかるが、ソニー製の教育用ロボット toio を利用することで、低コストかつ手軽に検証環境を構築できる。
具体的なハードウェア構成
toio Core Cube に Bluetooth コントローラーと iPhone のカメラを組み合わせた構成で、約数万円以下の予算で実装可能である。
LeRobot を活用したデータ収集
Hugging Face の LeRobot フレームワークと専用プラグインを用いて、コントローラーによるテレオペレーションで 50 エピソードの教師データを収集した。
pushT タスクでの VLA 学習
収集したデータを用いて smolvla ポリシーを学習させ、T 字型ブロックを枠に押し込む物理タスク(pushT)の推論に挑戦した。
学習と推論の検証サイクル
toio を用いて VLA のデータ収集、学習、推論までの一連のプロセスを一通り検証し、実機での動作確認を行いました。
課題と今後の改善点
今回は学習が中途半端でブロック押し込みの完全成功に至らなかったため、より良質なデータの収集と学習回数の増加による精度向上が必要です。
Physical AI 入門としての価値
VLA の初期段階におけるデータ収集の難しさを体験できたことは貴重な経験であり、ROS 2 対応などの進展も相まって教材としての有用性が高まっています。
影響分析・編集コメントを表示
影響分析
この記事は、Physical AI やロボット学習の分野において、参入障壁を劇的に下げる具体的な解決策を示しています。高価な専用機材に依存せず、既存の安価な玩具とオープンソースフレームワークを組み合わせるアプローチは、研究者や学生、中小企業にとって研究開発のスピードを加速させる重要な示唆となります。
編集コメント
高価なハードウェアが必須とされがちだったロボット学習の領域で、いかにして低コスト・手軽に検証環境を構築するかという実用的な知見が得られる記事です。

こんにちは!ABEJA に新設されたエンボディドインテリジェンスグループ で PM をしている飯嶌です。 こちらはABEJAアドベントカレンダー2025の24日目の記事です。
昨今、Physical AI への注目が集まっています。しかし、実際に SO-101 などのアームロボットを用いて検証を行おうとすると、組み立ての工数や数万円単位の部材コストが発生し、ハードルが高いと感じられる方も多いのではないでしょうか。
今回は、toio を活用し、低コストかつ手軽に VLA の検証環境を構築できないか挑戦しましたので、その取り組みについてご紹介いたします。
Physical AI 検証における課題
実装・検証 Step 1: 接続テスト - toio.py による制御
Step 2: テレオペレーションの実装
Step 3: 学習と推論 - pushT タスクへの挑戦
Physical AI 検証における課題
ロボット学習のプロトタイピングにおいて、ハードウェアの用意は最初にして最大の障壁です。高価なロボットアームや複雑な制御システムは、学習コスト以前に導入コストが重くのしかかります。
そこで今回は、以下の特徴を持つ toio Core Cube に着目しました。toio はソニー・インタラクティブエンタテインメントが開発した、遊びながらプログラミング的思考や創造力を学べるロボットトイ/教育向け玩具です。
入手性: おもちゃとして市販されており、安価に入手可能
制御性: Bluetooth Low Energy (BLE) によるシンプルな制御
性能: 高精度なモーターと絶対位置検出機能を内蔵
これを用いて、ロボット学習における Hello World 的な立ち位置の環境構築を目指します。
今回は以下の構成を構築しました。 
まずは買い物リストです。toio 本体以外は、すでに持っているものも多いかもしれません。下記の金額はあくまでも 2025 年 12 月時点のものですのでご注意ください。
なんでもいいです。私は アクラス PS4/PS3/PC 用 シンプルコントローラーターボ Ver.2をヨドバシで購入しました。
私は普段利用している iPhone 13 Pro をカメラとして利用しました。
GPU 環境です。手元にない場合はこちらを利用しましょう。
本記事では、Python のパッケージ管理およびコマンド実行に uv
Step 1: 接続テスト - toio.py による制御
まずは Python 環境から BLE 経由で toio を制御できるか確認します。専用ライブラリである toio.py
mkdir toio-quick-start uv init uv add toio.py
import asyncio from toio import ToioCoreCube async def main(): print("接続を開始します...") async with ToioCoreCube() as cube: print("接続完了!回転します") # motor_control(左モーター速度, 右モーター速度) await cube.api.motor.motor_control(30, -30) await asyncio.sleep(2) # 停止 await cube.api.motor.motor_control(0, 0) print("停止しました") asyncio.run(main())
Step 2: テレオペレーションの実装
ここからが本題です。Hugging Face が開発するロボット学習フレームワーク LeRobot を導入し、データ収集の基盤を作ります。今回は有志によって作成されたプラグインを利用させていただきました。
参考リポジトリ:https://github.com/njima/lerobot-hardware-plugins
git clone https://github.com/njima/lerobot-hardware-plugins.git cd lerobot-hardware-plugins uv sync
以下のコマンドで、PC に接続したコントローラーから toio を操作できるようになります。これが教師データを収集する Recording フェーズの前段階となります。
uv run lerobot-teleoperate \ -robot.type=toio_follower \ -teleop.type=toio_leader \ -fps=60
Step 3: 学習と推論 - pushT タスクへの挑戦
今回は pushT を物理環境で再現しました。pushT とは T 字型のブロックを所定の枠に押し込むタスクです。

- データ収集 (Record)
50 エピソード、つまり 50 回分の操作データを収集しました。カメラ映像と操作ログを同期して記録します。
uv run lerobot-record \ --robot.type=toio_follower \ --robot.cameras='{ "top": { "type": "opencv", "index_or_path": 0, "width": 1280, "height": 720, "fps": 30 } }' \ --teleop.type=toio_leader \ --display_data=true \ --dataset.repo_id="your-username/repo id" \ --dataset.num_episodes=50
収集したデータセットを用い、モデルの学習を行います。ローカルに GPU リソースがない場合、Google Colab 上での実行も有効です。
uv run lerobot-train \ --dataset.repo_id="your-username/repo id" \ --policy.type=smolvla \ --policy.repo_id="your-username/repo id" \ --policy.device=cuda \ --steps=5000 \ --batch_size=8 \ --num_workers=0 \
- 自律走行 (Inference)
学習済みモデルであるポリシーをロードし、推論モードで実行します。
uv run lerobot-record \ --robot.type=toio_follower \ --robot.cameras='{ "top": { "type": "opencv", "index_or_path": 0, "width": 1280, "height": 720, "fps": 30 } }' \ --display_data=true \ --dataset.repo_id="your-username/repo id" \ --dataset.single_task="Push the T-shaped block onto the T-shaped target." \ --dataset.push_to_hub=false \ --dataset.num_episodes=1 \ --dataset.episode_time_s=60 \ --dataset.reset_time_s=5 \ --policy.path="your-username/repo id"
今回、学習が最後までうまく回らずにブロックを押し込むことができませんでした。(ちびちび動いたり、少しだけT字に触って満足して終わるなんてことがありました...)更に良質なデータを収集し学習回数を重ねることで、より精度を高めることができると考えています。
今回は toio を用いて、VLA におけるデータ収集、学習、推論のサイクルを一通り検証しました。 VLA のはじめの一歩として、データを収集する際のもどかしさや難しさを実体験できたことは、非常に良い経験になりました。 また、最近では toio の ROS 2 対応を進めるリポジトリ、toio_ros2 なども登場しており、初手での学習教材としての有用さは更に増していくことかと思います。これからも Physical AI がより一層進展していく中で、まだ触れたことのない方はこの記事が参考になれば幸いです。
LeRobot v0.4.0 のコマンド一覧
toio.py クイックスタート
LeRobot x toio のテレオペを試す
ABEJAは、テクノロジーの社会実装に取り組んでいます。 技術はもちろん、技術をどのようにして社会やビジネスに組み込んでいくかを考えるのが好きな方は、下記採用ページからエントリーください! (新卒の方やインターンシップのエントリーもお待ちしております!)
careers.abejainc.com
特に下記ポジションの募集を強化しています!ぜひ御覧ください!
トランスフォーメーション領域:データサイエンティスト | 株式会社ABEJA
トランスフォーメーション領域:データサイエンティスト(ミドル) | 株式会社ABEJA
トランスフォーメーション領域:データサイエンティスト(シニア) | 株式会社ABEJA
原文を表示

こんにちは!ABEJA に新設されたエンボディドインテリジェンスグループ で PM をしている飯嶌です。 こちらはABEJAアドベントカレンダー2025の24日目の記事です。
昨今、Physical AI への注目が集まっています。しかし、実際に SO-101 などのアームロボットを用いて検証を行おうとすると、組み立ての工数や数万円単位の部材コストが発生し、ハードルが高いと感じられる方も多いのではないでしょうか。
今回は、toio を活用し、低コストかつ手軽に VLA の検証環境を構築できないか挑戦しましたので、その取り組みについてご紹介いたします。
Physical AI 検証における課題
実装・検証 Step 1: 接続テスト - toio.py による制御
Step 2: テレオペレーションの実装
Step 3: 学習と推論 - pushT タスクへの挑戦
Physical AI 検証における課題
ロボット学習のプロトタイピングにおいて、ハードウェアの用意は最初にして最大の障壁です。高価なロボットアームや複雑な制御システムは、学習コスト以前に導入コストが重くのしかかります。
そこで今回は、以下の特徴を持つ toio Core Cube に着目しました。toio はソニー・インタラクティブエンタテインメントが開発した、遊びながらプログラミング的思考や創造力を学べるロボットトイ/教育向け玩具です。
入手性: おもちゃとして市販されており、安価に入手可能
制御性: Bluetooth Low Energy (BLE) によるシンプルな制御
性能: 高精度なモーターと絶対位置検出機能を内蔵
これを用いて、ロボット学習における Hello World 的な立ち位置の環境構築を目指します。
今回は以下の構成を構築しました。 
まずは買い物リストです。toio 本体以外は、すでに持っているものも多いかもしれません。下記の金額はあくまでも 2025 年 12 月時点のものですのでご注意ください。
なんでもいいです。私は アクラス PS4/PS3/PC 用 シンプルコントローラーターボ Ver.2をヨドバシで購入しました。
私は普段利用している iPhone 13 Pro をカメラとして利用しました。
GPU 環境です。手元にない場合はこちらを利用しましょう。
本記事では、Python のパッケージ管理およびコマンド実行に uv
Step 1: 接続テスト - toio.py による制御
まずは Python 環境から BLE 経由で toio を制御できるか確認します。専用ライブラリである toio.py
mkdir toio-quick-start uv init uv add toio.py
import asyncio from toio import ToioCoreCube async def main(): print("接続を開始します...") async with ToioCoreCube() as cube: print("接続完了!回転します") # motor_control(左モーター速度, 右モーター速度) await cube.api.motor.motor_control(30, -30) await asyncio.sleep(2) # 停止 await cube.api.motor.motor_control(0, 0) print("停止しました") asyncio.run(main())
Step 2: テレオペレーションの実装
ここからが本題です。Hugging Face が開発するロボット学習フレームワーク LeRobot を導入し、データ収集の基盤を作ります。今回は有志によって作成されたプラグインを利用させていただきました。
参考リポジトリ:https://github.com/njima/lerobot-hardware-plugins
git clone https://github.com/njima/lerobot-hardware-plugins.git cd lerobot-hardware-plugins uv sync
以下のコマンドで、PC に接続したコントローラーから toio を操作できるようになります。これが教師データを収集する Recording フェーズの前段階となります。
uv run lerobot-teleoperate \ -robot.type=toio_follower \ -teleop.type=toio_leader \ -fps=60
Step 3: 学習と推論 - pushT タスクへの挑戦
今回は pushT を物理環境で再現しました。pushT とは T 字型のブロックを所定の枠に押し込むタスクです。

- データ収集 (Record)
50 エピソード、つまり 50 回分の操作データを収集しました。カメラ映像と操作ログを同期して記録します。
uv run lerobot-record \ --robot.type=toio_follower \ --robot.cameras='{ "top": { "type": "opencv", "index_or_path": 0, "width": 1280, "height": 720, "fps": 30 } }' \ --teleop.type=toio_leader \ --display_data=true \ --dataset.repo_id="your-username/repo id" \ --dataset.num_episodes=50
収集したデータセットを用い、モデルの学習を行います。ローカルに GPU リソースがない場合、Google Colab 上での実行も有効です。
uv run lerobot-train \ --dataset.repo_id="your-username/repo id" \ --policy.type=smolvla \ --policy.repo_id="your-username/repo id" \ --policy.device=cuda \ --steps=5000 \ --batch_size=8 \ --num_workers=0 \
- 自律走行 (Inference)
学習済みモデルであるポリシーをロードし、推論モードで実行します。
uv run lerobot-record \ --robot.type=toio_follower \ --robot.cameras='{ "top": { "type": "opencv", "index_or_path": 0, "width": 1280, "height": 720, "fps": 30 } }' \ --display_data=true \ --dataset.repo_id="your-username/repo id" \ --dataset.single_task="Push the T-shaped block onto the T-shaped target." \ --dataset.push_to_hub=false \ --dataset.num_episodes=1 \ --dataset.episode_time_s=60 \ --dataset.reset_time_s=5 \ --policy.path="your-username/repo id"
今回、学習が最後までうまく回らずにブロックを押し込むことができませんでした。(ちびちび動いたり、少しだけT字に触って満足して終わるなんてことがありました...)更に良質なデータを収集し学習回数を重ねることで、より精度を高めることができると考えています。
今回は toio を用いて、VLA におけるデータ収集、学習、推論のサイクルを一通り検証しました。 VLA のはじめの一歩として、データを収集する際のもどかしさや難しさを実体験できたことは、非常に良い経験になりました。 また、最近では toio の ROS 2 対応を進めるリポジトリ、toio_ros2 なども登場しており、初手での学習教材としての有用さは更に増していくことかと思います。これからも Physical AI がより一層進展していく中で、まだ触れたことのない方はこの記事が参考になれば幸いです。
LeRobot v0.4.0 のコマンド一覧
toio.py クイックスタート
LeRobot x toio のテレオペを試す
ABEJAは、テクノロジーの社会実装に取り組んでいます。 技術はもちろん、技術をどのようにして社会やビジネスに組み込んでいくかを考えるのが好きな方は、下記採用ページからエントリーください! (新卒の方やインターンシップのエントリーもお待ちしております!)
careers.abejainc.com
特に下記ポジションの募集を強化しています!ぜひ御覧ください!
トランスフォーメーション領域:データサイエンティスト | 株式会社ABEJA
トランスフォーメーション領域:データサイエンティスト(ミドル) | 株式会社ABEJA
トランスフォーメーション領域:データサイエンティスト(シニア) | 株式会社ABEJA
関連記事
NVIDIA AI が自己改善型ロボットフレームワーク「ASPIRE」を発表、LIBERO-Pro の長期タスクでゼロショット成功率 31% を達成
作って終わりにしないための顧客検証ループづくり ~顧客ヒアリングを「価値検証フェーズ」として組み込んだ話
On-policy のはずが Off-policy になる:LLM 強化学習 の rollout mismatchと対策(rollout correction)
今日のまとめ
AI日報で今日の重要ニュースをまとめ読み