SO101 ハードウェアと Leader / Follower 構成
SO101 Hardware & Leader/Follower
SO101 ロボットアームのハードウェア構成、シリアル接続、Leader-Follower の動作モードを学びます。
未開始
完了すると学習パスとホームの統計に反映されます
注文したロボットアームが届き、箱を開けると —— 中にはまったく同じアームが2本入っています。1本ではありません。
最初は戸惑う人が多いです:なぜ2本? どっちがどっち?
答えは SO101 の核となる設計にあります:1本は手で操作する側(Leader アーム)、もう1本はあなたの動きをリアルタイムで再現する側(Follower アーム)。あなたが Leader を持って「コップの持ち方」を実演すると、PC は Follower を同じように動かして結果を見せつつ、Leader の各瞬間の関節角度を記録します —— この記録が第 1 章で説明した (s, a) のデモデータです。
この章ではハードウェアを徹底的に理解します:6つの関節とは何か、2本のアームをどう PC につなぐか、システム上でどう見分けるか、そして誰もが最初にぶつかる権限エラーの直し方。
ハードウェアが分からないと、以降の各ステップで詰まります。
- どっちが Leader でどっちが Follower か分からない → 第4章のポート設定で混乱する
- 「役割は配線で決まる」を理解していない → 再起動でシリアル順が変わると慌てる
Permission deniedを直せない → 多くの人が初回接続でつまずく
この章は純粋なハードウェア理解で、実機が無くても読み進められます。届いたらすぐ着手できます。
- SO101 ロボットアームのハードウェア構成を理解する
- Leader / Follower 方式を把握する
- シリアルポートの接続・識別方法を習得する
- 1SO101 は低コストな 6 自由度ロボットアームで、模倣学習研究に適しています
- 2Leader アームを人が操作し、Follower アームがリアルタイムで追従します
- 3USB シリアル経由で PC と通信し、各モータは独立した ID を持ちます
Leader → PC → Follower のデータ経路
flowchart LR
H["👋 あなたの手"] -->|"関節を動かす"| L["🦾 Leader アーム"]
L -->|"USB で関節角を読む"| PC["💻 PC"]
PC -->|"USB で指令を送る"| F["🦾 Follower アーム"]
PC -->|"同期して記録"| D["📦 データセット (s, a)"]
style L fill:#7c5cff,stroke:#7c5cff,color:#fff
style F fill:#0ea5e9,stroke:#0ea5e9,color:#fff
style PC fill:#22c55e,stroke:#22c55e,color:#fff6自由度を理解する
SO101 の1本のアームには 6つの関節 があり、各関節に1つのモータが付き、独立して回転します:土台の回転、肩、肘、手首の2自由度、グリッパの開閉。
6自由度は産業用ロボットアームの標準構成で、末端(グリッパ)を三次元空間の 任意の位置(x/y/z)+ 任意の姿勢(ピッチ/ヨー/ロール)に到達させるのに十分です。
これが、第1章で状態 s を6次元とした理由でもあります:1関節が1次元の角度値を担います。
2本のアームはハードウェア的に完全に同じなので、合わせた状態/行動の次元は 6 + 6 = 12 次元です。
2本のアームを PC につなぎ、シリアルを見分ける
ロボットアームは USB-シリアル変換で PC に接続します。Linux / macOS では、各アームは /dev/ttyUSB0 のような名前のデバイスファイルになります。
もっとも確実な見分け方は「1本抜いてどれが消えるか」です:まず一覧を見て、Leader の USB を抜き、もう一度見る。減った方が Leader です。
すべてのシリアルデバイスを一覧表示
ls /dev/tty*/dev/tty /dev/ttyS0 /dev/ttyUSB0 /dev/ttyUSB1
ttyUSB0 / ttyUSB1 があなたの2本のアーム。ttyS0、tty はシステム標準なので無視。
「役割は出荷時ではなく設定で決まる」を理解する
2本のアームは出荷時まったく同じで、「私は Leader」というラベルは貼られていません。どちらが Leader でどちらが Follower かは、設定ファイルでどのポートをどの役割に書くかで決まります(第4章で行います)。
なので覚えるのは1つだけ:挿したらどの ttyUSB がどのアームかを見分け、あとはソフト側で指定するだけ。
PC を再起動したり挿し直したりすると、ttyUSB0 / ttyUSB1 の番号が入れ替わることがあります —— Linux シリアルの古くからの問題です。起動のたびに「1本抜く」法で確認するか、udev ルールで固定します(上級トピック)。
シリアル機器を表示
ls /dev/tty*USB 機器の情報を表示
lsusbシリアル接続の詳細を確認
dmesg | grep tty「2本とも同じ見た目。買い間違えた/1本多く届いた?」
根本的な原因
SO101 がもともと双腕の主従設計だと知らない。
正しい理解
間違いではありません。2本はセットで協調動作します:Leader を人が操作し、Follower が再現する。これがまさにデモデータの集め方です。
アームをつなぐと `Permission denied: /dev/ttyUSB0` が出る。
根本的な原因
アカウントがシリアルにアクセスできるグループ(Ubuntu の dialout / Arch の uucp)に入っていない。
正しい理解
sudo usermod -a -G dialout $USER を実行し、ログアウトして再ログイン(または再起動)。ほぼ全員が一度はぶつかる落とし穴です。
`ls /dev/tty*` で ttyUSB がまったく見えない。
根本的な原因
USB ケーブルが充電専用でデータ非対応、または CH340 シリアルドライバが無い。
正しい理解
データ対応の USB ケーブルに替える;dmesg | tail で挿入時に認識情報が出るか確認;必要なら CH340 ドライバを導入。
- Leader と Follower のシリアルポートを識別できる
- Leader / Follower 方式の動作原理を理解している
- ハードウェア接続の確認を完了している
Leader と Follower を見分ける
2本の USB を挿した状態で:
ls /dev/tty*を実行し、どの ttyUSB が出たか記録する- そのうち1本(Leader にする予定の方)の USB を抜く
- もう一度
ls /dev/tty*を実行する
消えた ttyUSB はどのアームを表す?
データ次元を計算する
2本の SO101 アームが協調し、各アーム6関節。1フレームの「状態+行動」は合計で何次元?
Permission denied: /dev/ttyUSB0
- 原因:
- 現在のユーザーにシリアルポートのアクセス権がありません。
- 対処:
- ユーザーを dialout グループに追加します。
sudo usermod -a -G dialout $USER- SO-ARM100 ハードウェアプロジェクト(GitHub)
BOM、3D プリント部品、組み立てガイド。自作したい人や機構を知りたい人はここ。
- Linux シリアル権限と dialout グループの解説
ttyUSB の権限モデルを理解できる。シリアル系のエラーで役立つ。
SO101 は同じアームが2本:Leader を手で操作し、Follower がリアルタイムで再現、PC が Leader の関節角を同期記録してデモデータにする。
役割は出荷時ではなく、配線+設定で決まる。アームはシステム上では /dev/ttyUSB* ファイル;初回接続では多くの場合 Permission denied にぶつかるが、dialout グループに追加+再ログインで解決。
次章ではソフト環境を構築し(実機不要)、LeRobot を動かす。