SO-101をはじめる
※コメントは全てAIで書いています
SO-101とは
SO-101は、模倣学習を手軽に始められる低コストのオープンソースロボットアームです。
特徴
1. 低コスト
- 総コストは約10万円程度
- 高価な産業用ロボットと比べて圧倒的に安価
- 個人でも購入しやすい価格帯
2. オープンソース
- ハードウェア設計が公開されている
- ソフトウェアもオープンソース
- カスタマイズや改良が可能
3. 模倣学習に最適
- LeRobotとの統合がサポートされている
- データ収集から学習、評価までの一連のパイプラインが利用可能
- ACT(Action Chunking Transformer)などの最新手法に対応
ACT(Action Chunking Transformer)とは
ACTは、模倣学習における最新のアルゴリズムの一つです。
特徴:
- 人間のデモンストレーションから効率的に学習
- 複数のアクションをまとめて(チャンク化して)予測することで、スムーズな動作を実現
- Transformerアーキテクチャを採用し、時系列データを効果的に処理
- 少ないデモンストレーション数でも高い性能を発揮
従来の手法と比べて、より自然で正確なロボット動作を学習できるため、SO-101での模倣学習に最適なアルゴリズムとなっています。
4. 実用的な性能
- Feetechサーボモーター(STS3215など)を使用
- 十分な可動域と精度
- 物体把持などの基本的なタスクに対応
Feetechサーボモーターについて
Feetechは、ロボット工学で広く使用されているサーボモーターのメーカーです。
SO-101で使用されるSTS3215の特徴:
- シリアル通信(TTL)で制御可能
- 位置、速度、トルクのフィードバック機能
- 360度回転に対応
- コストパフォーマンスに優れている
- 十分なトルクと精度を持つ
これらのサーボモーターにより、SO-101は低コストながらも実用的なロボット制御を実現しています。
主な用途
- ロボット工学の学習・研究
- 模倣学習アルゴリズムの実験
- AI・機械学習の実践的なプロジェクト
- 教育目的でのロボット制御
SO-101は、「高価な設備がないと始められない」というロボット学習の障壁を大きく下げ、より多くの人がロボット工学に触れられる機会を提供しています。
LeRobotとは
LeRobotは、Hugging Faceが開発したロボット学習のためのオープンソースライブラリです。SO-101のような低コストロボットでも、最先端の模倣学習を簡単に実行できるように設計されています。
公式リポジトリ: https://github.com/huggingface/lerobot
特徴
1. 統合されたパイプライン
- データ収集:ロボットの動作をデモンストレーションとして記録
- 学習:収集したデータから行動方策を学習
- 評価:学習したモデルを実際のロボットで評価
- これら一連の流れがシームレスに統合されている
2. 最新の模倣学習アルゴリズムに対応
- ACT(Action Chunking Transformer)
- Diffusion Policy
- その他の最先端手法をサポート
- 研究と実用の両方に対応
Diffusion Policyとは
Diffusion Policyは、拡散モデル(Diffusion Model)を用いた模倣学習アルゴリズムです。
特徴:
- 画像生成AIで使われる拡散モデルの技術をロボット制御に応用
- 複雑で多様なロボット動作を表現できる
- ノイズから段階的に行動を生成することで、滑らかで自然な動作を実現
- マルチモーダルな行動(複数の正解がある状況)にも対応可能
ACTとの違い:
- ACTはTransformerベースで時系列パターンを学習
- Diffusion Policyは確率的な生成プロセスで行動を作り出す
- タスクや環境によってどちらが適しているかが異なる
拡散モデルの強力な表現力により、より複雑なタスクでも高い性能を発揮することが期待されています。
3. Hugging Faceエコシステムとの統合
- 学習済みモデルの共有が容易
- Hugging Face Hubを通じてモデルの公開・利用が可能
- コミュニティで知見を共有できる
4. 実機ロボットとの連携
- SO-101などの物理ロボットとの接続をサポート
- シミュレーションと実機の両方に対応
- 実用的なロボット制御を実現
なぜSO-101でLeRobotを使うのか
相性の良さ
- SO-101は公式にLeRobotでサポートされている
- Feetechサーボモーターの制御ライブラリが組み込まれている
- セットアップが簡単で、すぐに模倣学習を開始できる
学習の効率性
- 少ないデモンストレーション(数十〜数百回)で学習可能
- 効率的なデータ収集ツールが提供されている
- 学習プロセスが自動化されている
コミュニティサポート
- SO-101とLeRobotを使った事例が豊富
- 問題が発生しても解決方法を見つけやすい
- オープンソースコミュニティによる継続的な改善
主な機能
データ収集
python lerobot/scripts/control_robot.py record \
--robot-path lerobot/configs/robot/so101.yaml \
--fps 30 \
--repo-id your-username/your-dataset
モデル学習
python lerobot/scripts/train.py \
policy=act \
env=so101 \
dataset_repo_id=your-username/your-dataset
モデル評価
python lerobot/scripts/control_robot.py replay \
--robot-path lerobot/configs/robot/so101.yaml \
--fps 30 \
--repo-id your-username/your-model
まとめ
LeRobotは、SO-101と組み合わせることで、個人でも手軽に最先端のロボット学習を体験できる環境を提供します。複雑な設定や高価な機材なしに、実際に動くロボットで模倣学習を実践できるのが最大の魅力です。
環境構築手順
SO-101でLeRobotを使った模倣学習を始めるための環境構築手順を説明します。
使用環境
- OS: macOS
- インストール方法: コンソール(ターミナル)を使用
1. Miniforgeのインストール
Miniforgeは、conda環境を構築するための軽量なパッケージマネージャーです。
公式サイト: https://github.com/conda-forge/miniforge
インストール手順
- Miniforgeのインストーラーをダウンロードして実行
macOS用のインストーラー:
- Apple Silicon (M1/M2/M3など): Miniforge3-MacOSX-arm64.sh
- Intel Mac: Miniforge3-MacOSX-x86_64.sh
ダウンロード後、ターミナルで以下を実行:
# Apple Siliconの場合
bash Miniforge3-MacOSX-arm64.sh
# Intel Macの場合
bash Miniforge3-MacOSX-x86_64.sh
- インストール中に以下のメッセージが表示されます:
Do you wish to update your shell profile to automatically initialize conda?
This will activate conda on startup and change the command prompt when activated.
If you'd prefer that conda's base environment not be activated on startup,
run the following command when conda is activated:
conda config --set auto_activate_base false
You can undo this by running `conda init --reverse $SHELL`? [yes|no]
[no] >>>
yesと入力してEnterを押す
なぜyesを選ぶのか?
-
yesを選ぶと、ターミナルを開いたときに自動的にcondaが使える状態になります - SO-101で模倣学習を行う場合、condaで環境を管理することになるので便利です
- 後から
conda config --set auto_activate_base falseで無効化することも可能です
- インストールが完了すると、以下のようなメッセージが表示されます:
no change /Users/username/miniforge3/condabin/conda
no change /Users/username/miniforge3/bin/conda
...
modified /Users/username/.zshrc
==> For changes to take effect, close and re-open your current shell. <==
Thank you for installing Miniforge3!
- ターミナルを一度閉じて、再度開く
インストールの確認
ターミナルを再起動後、以下のコマンドで確認:
conda --version
または
mamba --version
バージョン番号が表示されれば成功です。また、プロンプトの前に (base) という表示が出ていれば、conda環境が正しくアクティベートされています。
2. conda環境の作成
LeRobot用の専用環境を作成します。
conda create -n lerobot python=3.10
環境をアクティベート:
conda activate lerobot
conda環境を作成する理由
- プロジェクトごとに独立した環境を持つことで、パッケージの競合を避けられます
- LeRobotに必要なパッケージが他のプロジェクトに影響を与えません
- 環境を削除すれば、クリーンな状態に戻せます
3. ffmpegのインストール
LeRobotでビデオ処理を行うために、ffmpegをインストールします。
conda install ffmpeg -c conda-forge
ffmpegとは
ffmpegは、動画や音声の記録・変換・ストリーミングを行うためのオープンソースソフトウェアです。LeRobotでは、ロボットの動作を記録する際に、カメラからの映像をビデオファイルとして保存するために使用されます。
4. LeRobotリポジトリのクローン
LeRobotのソースコードをGitHubからクローンします。
git clone https://github.com/huggingface/lerobot.git
cd lerobot
5. LeRobotのインストール
SO-101実機を使う場合、Feetechサーボモーター用の依存関係を含むバージョンをインストールします。
リポジトリをクローンした場合(推奨):
pip install -e '.[feetech]'
このコマンドで:
-
-eオプションにより、編集可能モード(editable mode)でインストールされます - ソースコードを直接参照するため、コード変更が即座に反映されます
-
lerobot-find-portなどのCLIコマンドが使えるようになります
その他のインストール方法
PyPIから直接インストール(リポジトリなし):
pip install 'lerobot[feetech]'
この方法では -e オプションは不要ですが、CLIコマンドが使えない場合があります。
開発版(最新機能が必要な場合):
pip install 'lerobot[feetech] @ git+https://github.com/huggingface/lerobot.git'
[feetech]オプション:
SO-101が使用しているFeetechサーボモーター(STS3215など)を制御するための依存関係を含みます。
インストールの確認
python -c "import lerobot; print(lerobot.__version__)"
バージョン番号が表示されれば成功です。
また、CLIコマンドが使えることを確認:
lerobot-find-port
コマンドが実行できれば、正しくインストールされています。
次のステップ
環境構築が完了したら、次は以下を進めます:
- SO-101実機との接続設定
- サーボモーターのキャリブレーション
- データ収集の準備
これで、SO-101での模倣学習を始める準備が整いました!
モーターID設定とキャリブレーション
環境構築が完了したら、SO-101の各モーターにIDを設定し、キャリブレーションを行います。
前提条件
- 両方のアーム(Leader ArmとFollower Arm)のUSBポートを確認済み
- 各アームは個別に接続できる状態
ポートの確認
まず、両方のアームのポートを確認します。
1. 両方のアームを接続
Leader ArmとFollower ArmをMacに接続します。
2. ポート検出コマンドを実行
lerobot-find-port
指示に従って、1つずつUSBケーブルを抜いてポートを特定します。
実行例(Follower Armを抜く場合):
Finding all available ports for the MotorsBus.
Ports before disconnecting: [...]
Remove the USB cable from your MotorsBus and press Enter when done.
The port of this MotorsBus is '/dev/tty.usbmodem5AA90171901'
Reconnect the USB cable.
3. ポートをメモ
両方のアームのポートを確認したら、記録しておきます:
Leader Arm: /dev/tty.usbmodem5AA90177691
Follower Arm: /dev/tty.usbmodem5AA90171901
ポートが変わる可能性について
USBポートの番号は、接続するMacのUSBポートや接続順序によって変わる可能性があります。セットアップ時に毎回確認することをお勧めします。
モーターID設定
各モーターに一意のIDを設定します。必ず片方ずつ設定してください。
Follower Armの設定
1. Leader ArmのUSBを抜く
Follower Armだけが接続されている状態にします。
2. セットアップコマンドを実行
lerobot-setup-motors \
--robot.type=so101_follower \
--robot.port=/dev/tty.usbmodem5AA90171901
ポートは環境に合わせて変更してください
上記のポート番号は例です。前のステップで確認した自分の環境のポート番号を使用してください。
3. 画面の指示に従う
コマンドを実行すると、以下のように1つずつモーターを接続するよう指示が出ます:
Connect the controller board to the 'gripper' motor only and press enter.
'gripper' motor id set to 6
Connect the controller board to the 'wrist_roll' motor only and press enter.
'wrist_roll' motor id set to 5
Connect the controller board to the 'wrist_flex' motor only and press enter.
'wrist_flex' motor id set to 4
Connect the controller board to the 'elbow_flex' motor only and press enter.
'elbow_flex' motor id set to 3
Connect the controller board to the 'shoulder_lift' motor only and press enter.
'shoulder_lift' motor id set to 2
Connect the controller board to the 'shoulder_pan' motor only and press enter.
'shoulder_pan' motor id set to 1
4. ID設定完了
Follower Armの各モーターに以下のIDが設定されます:
| モーター | 役割 | ID |
|---|---|---|
| shoulder_pan | ベース回転 | 1 |
| shoulder_lift | 肩 | 2 |
| elbow_flex | 肘 | 3 |
| wrist_flex | 手首 | 4 |
| wrist_roll | 手首回転 | 5 |
| gripper | グリッパー | 6 |
Leader Armの設定
1. Follower ArmのUSBを抜く
今度はLeader Armだけが接続されている状態にします。
2. セットアップコマンドを実行
lerobot-setup-motors \
--teleop.type=so101_leader \
--teleop.port=/dev/tty.usbmodem5AA90177691
robot と teleop の違い
-
robot (
--robot.*): 実際に動作を実行するロボット(Follower Arm) -
teleop (
--teleop.*): テレオペレーション(遠隔操作)用のデバイス(Leader Arm)
Leader Armは人間が操作して動作を記録するための入力デバイスなので、teleopパラメータを使用します。
3. 画面の指示に従う
Follower Armと同様に、1つずつモーターを接続していきます:
Connect the controller board to the 'gripper' motor only and press enter.
'gripper' motor id set to 6
Connect the controller board to the 'wrist_roll' motor only and press enter.
'wrist_roll' motor id set to 5
Connect the controller board to the 'wrist_flex' motor only and press enter.
'wrist_flex' motor id set to 4
Connect the controller board to the 'elbow_flex' motor only and press enter.
'elbow_flex' motor id set to 3
Connect the controller board to the 'shoulder_lift' motor only and press enter.
'shoulder_lift' motor id set to 2
Connect the controller board to the 'shoulder_pan' motor only and press enter.
'shoulder_pan' motor id set to 1
4. ID設定完了
Leader ArmもFollower Armと同じIDが設定されます。
重要なポイント
なぜモーターIDが必要なのか?
SO-101のFeetechサーボモーターは、シリアル通信(TTL)で制御されます。複数のモーターが1本のバスライン(デイジーチェーン接続)でつながっているため、それぞれのモーターを区別するために一意のIDが必要です。
なぜ1個ずつ接続するのか?
同じID(デフォルトではID 1)のモーターが複数接続されているとコンフリクトが発生し、正しくIDを設定できません。そのため、必ず1個ずつ接続してIDを設定する必要があります。
ID設定のタイミング
組み立て前、または組み立て途中でID設定を行うことを推奨します。理由:
- 組み立て後だと、どのモーターがどの関節に使われているか分かりにくくなる
- 配線が複雑になると、個別のモーターにアクセスしにくい
- トラブルシューティングが困難になる
次のステップ
モーターID設定が完了したら、次はキャリブレーションを行います。キャリブレーションでは、各関節の正確な可動範囲やゼロポジション(基準位置)を設定します。
キャリブレーション
モーターID設定が完了したら、各アームのキャリブレーションを行います。キャリブレーションでは、各関節の正確な可動範囲やゼロポジション(基準位置)を設定します。
キャリブレーションの目的
キャリブレーションを行うことで:
- Leader ArmとFollower Armが同じ物理的位置にあるとき、同じ位置値を持つようになる
- 他のロボットで学習したニューラルネットワークを自分のロボットでも使用できる
- 各関節の安全な可動範囲を定義できる
キャリブレーションはロボットの互換性を保つために非常に重要です。
Follower Armのキャリブレーション
準備
-
Follower Armだけを接続
- Leader ArmのUSBは抜いておく
- Follower ArmのUSBと電源を接続
-
作業スペースの確保
- 各関節が自由に動かせるスペースを確保
- 物や手が挟まれないよう注意
キャリブレーションコマンド
lerobot-calibrate \
--robot.type=so101_follower \
--robot.port=/dev/tty.usbmodem5AA90171901 \
--robot.id=so101_follower
パラメータの説明
-
--robot.type: ロボットのタイプ(Follower Armはso101_follower) -
--robot.port: 前のステップで確認したFollower Armのポート -
--robot.id: ロボットに付ける一意の名前(キャリブレーションデータの管理に使用)
キャリブレーションの流れ
- コマンドを実行すると、以下のメッセージが表示されます:
Running calibration of so101_follower SO101Follower
Move so101_follower SO101Follower to the middle of its range of motion and press ENTER....
-
すべての関節を可動範囲の中間位置に移動
- 手でロボットを動かして、各関節が中央付近にくるように配置
- 準備ができたらEnterを押す
-
各関節を可動範囲全体で動かす
Move all joints sequentially through their entire ranges of motion.
Recording positions. Press ENTER to stop...
このメッセージが表示されたら:
- 各関節を最小位置から最大位置まで動かす
- すべての関節を順番に動かす
- 完了したらEnterを押す
- キャリブレーション結果が表示される
-------------------------------------------
-------------------------------------------
NAME | MIN | POS | MAX
shoulder_pan | 717 | 2026 | 3463
shoulder_lift | 868 | 882 | 3244
elbow_flex | 854 | 3055 | 3069
wrist_flex | 853 | 2860 | 3185
wrist_roll | 158 | 2102 | 3962
gripper | 2018 | 2035 | 3520
Calibration saved to /Users/username/.cache/huggingface/lerobot/calibration/robots/so101_follower/so101_follower.json
各関節の最小値(MIN)、現在位置(POS)、最大値(MAX)が記録されます。
Leader Armのキャリブレーション
準備
- Follower ArmのUSBを抜く
-
Leader Armだけを接続
- Leader ArmのUSBと電源を接続
キャリブレーションコマンド
lerobot-calibrate \
--teleop.type=so101_leader \
--teleop.port=/dev/tty.usbmodem5AA90177691 \
--teleop.id=so101_leader
パラメータの違い
Leader Armは操作用デバイス(teleoperator)なので、--teleop.* パラメータを使用します:
-
--teleop.type:so101_leader -
--teleop.port: Leader Armのポート -
--teleop.id: Leader Armの一意の名前
キャリブレーションの流れ
Follower Armと同じ手順で進めます:
- コマンド実行
- 中間位置に移動してEnter
- 各関節を可動範囲全体で動かす
- Enterを押して完了
キャリブレーション結果例
-------------------------------------------
-------------------------------------------
NAME | MIN | POS | MAX
shoulder_pan | 750 | 2024 | 3473
shoulder_lift | 855 | 2414 | 3221
elbow_flex | 920 | 2017 | 3113
wrist_flex | 854 | 2126 | 3192
wrist_roll | 164 | 2065 | 3956
gripper | 2024 | 2046 | 3316
Calibration saved to /Users/username/.cache/huggingface/lerobot/calibration/teleoperators/so101_leader/so101_leader.json
トラブルシューティング
エラー: ValueError: Magnitude exceeds max
エラー内容:
ValueError: Magnitude 2129 exceeds 2047 (max for sign_bit_index=11)
原因:
Leader Armの初期位置が想定範囲を超えている
解決方法:
-
アームを物理的に中間位置に調整
- すべての関節を可動範囲の真ん中あたりに配置
- 極端な位置(最小値や最大値の近く)を避ける
-
電源を一度切って再接続
# USBを抜く
# 電源を切る
# 数秒待つ
# 電源を入れる
# USBを接続
- アームを手で中間位置に配置してから再実行
関連情報
このエラーは他のユーザーも遭遇しています。詳細はGitHubのissueを参照:
重要なポイント
キャリブレーションデータの保存場所
キャリブレーションデータは以下のディレクトリに保存されます:
# Follower Arm
~/.cache/huggingface/lerobot/calibration/robots/so101_follower/
# Leader Arm
~/.cache/huggingface/lerobot/calibration/teleoperators/so101_leader/
キャリブレーションは一度だけ
キャリブレーションデータは不揮発性メモリ(EEPROM)に保存されるため、一度実行すれば再度行う必要はありません。ただし、以下の場合は再キャリブレーションが必要です:
- ロボットを分解・再組み立てした
- モーターを交換した
- 物理的な構造を変更した
安全に関する注意
⚠️ キャリブレーション中の注意点:
- モーターが突然動く可能性があるので、手や物が挟まれないよう注意
- 可動範囲を超えて無理に動かさない
- 電源やUSBケーブルが外れていないか確認
完了確認
キャリブレーションが完了すると:
✅ Follower Armのキャリブレーションデータが保存された
✅ Leader Armのキャリブレーションデータが保存された
✅ 両方のアームが同じ物理位置で同じ位置値を持つようになった
これで、SO-101での模倣学習を始める準備が整いました!
次のステップ
環境構築とセットアップが完了したので、次は実際にタスクを学習させるチュートリアルに進みます:
遠隔操作(テレオペレーション)
キャリブレーションが完了したら、Leader ArmでFollower Armを遠隔操作できるかテストします。
遠隔操作とは
テレオペレーション(遠隔操作)では、Leader Armを人間が動かすと、Follower Armがリアルタイムで同じ動きを再現します。これにより:
- キャリブレーションが正しく行われているか確認できる
- ロボットの動作範囲や動きを理解できる
- データ収集前の動作確認ができる
準備
1. 両方のアームを接続
- Leader ArmのUSBと電源を接続
- Follower ArmのUSBと電源を接続
2. ケーブルの確認
⚠️ 重要:ケーブルの固定
長時間の使用やデータ収集時にケーブルが抜けないよう、以下を確認してください:
- 電源ケーブルがしっかり接続されている
- USBケーブルがしっかり接続されている
- ケーブルをテープなどで固定することを推奨
- ケーブルに余裕を持たせて、動作中に引っ張られないようにする
遠隔操作コマンド
lerobot-teleoperate \
--robot.type=so101_follower \
--robot.port=/dev/tty.usbmodem5AA90171901 \
--robot.id=so101_follower \
--teleop.type=so101_leader \
--teleop.port=/dev/tty.usbmodem5AA90177691 \
--teleop.id=so101_leader
パラメータの説明
-
--robot.type: Follower Armのタイプ(so101_follower) -
--robot.port: Follower Armのポート -
--robot.id: キャリブレーション時に設定したFollower ArmのID -
--teleop.type: Leader Armのタイプ(so101_leader) -
--teleop.port: Leader Armのポート -
--teleop.id: キャリブレーション時に設定したLeader ArmのID
重要: キャリブレーション時に使用した id と同じものを使用する必要があります。これにより、正しいキャリブレーションデータが読み込まれます。
動作確認
コマンド実行後
コマンドを実行すると、以下のような出力が表示されます:
INFO 2025-11-02 20:06:27 so101_leader SO101Leader connected.
INFO 2025-11-02 20:06:27 so101_follower SO101Follower connected.
time: 16.67ms (60 Hz)
time: 16.67ms (60 Hz)
time: 16.67ms (60 Hz)
...
60 Hz と表示されていれば、60回/秒の頻度で正常に動作しています。
動作テスト
-
Leader Armをゆっくり動かす
- Follower Armが同じように動くことを確認
-
各関節を個別にテスト
- ベース回転
- 肩
- 肘
- 手首
- グリッパー
-
物を掴んでみる
- グリッパーで物を掴めるか確認
- 掴んだ物を移動できるか確認
終了方法
テレオペレーションを終了するには:
- Ctrl+C を押す
プログラムが正常に終了し、モーターのトルクが自動的に無効化されます。
トラブルシューティング
エラー: ConnectionError: There is no status packet!
エラー内容:
ConnectionError: Failed to sync read 'Present_Position' on ids=[1, 2, 3, 4, 5, 6] after 1 tries.
[TxRxResult] There is no status packet!
原因:
モーターとコンピュータ間の通信が途切れています。
考えられる原因と解決方法:
-
USBケーブルの接触不良
- ケーブルが緩んでいないか確認
- USBケーブルを差し直す
-
電源の問題(最も多い原因)
- 電源ケーブルが外れかけていないか確認
- 電源ケーブルを差し直す
- 電源供給が安定しているか確認
-
モーターへの負荷
- 長時間の動作でモーターが過熱している可能性
- 可動範囲を超えて無理に動かしていないか確認
-
通信バスの問題
- デイジーチェーン接続の3ピンケーブルが外れていないか確認
対処方法:
# 1. Ctrl+C でプログラムを終了
# 2. 電源ケーブルとUSBケーブルを確認・差し直す
# 3. 数秒待つ
# 4. テレオペレーションコマンドを再実行
予防策:
- 電源ケーブルとUSBケーブルをテープで固定
- 30分〜1時間ごとに休憩を入れる
- ケーブルが動作の邪魔にならない位置に配置
エラー: ポートが見つからない
症状:
Error: Cannot find port /dev/tty.usbmodem...
解決方法:
- ポートを再確認
lerobot-find-port
- デバイスが接続されているか確認
ls /dev/tty.usbmodem*
- USBを抜き差しして再接続
動作が遅い・カクカクする
原因:
- CPUやシステムの負荷が高い
- 他のプログラムがリソースを使用している
解決方法:
- 不要なアプリケーションを終了
- ターミナルのログ出力を減らす
重要なポイント
IDの一貫性
キャリブレーション、テレオペレーション、データ収集、評価のすべてのステップで同じIDを使用する必要があります。
# 常に同じIDを使用
--robot.id=so101_follower
--teleop.id=so101_leader
これにより、正しいキャリブレーションデータが読み込まれ、一貫した動作が保証されます。
動作周波数
テレオペレーションは60Hz(60回/秒)で動作します。これは:
- リアルタイムでスムーズな動作を実現
- データ収集時の品質を確保
- 模倣学習に適したサンプリングレート
ケーブル管理
データ収集を始める前に必ずケーブルを固定してください。 データ収集中にケーブルが抜けると、記録していたエピソードが無効になる可能性があります。
次のステップ
遠隔操作が正常に動作することを確認したら、次はデータ収集に進みます。データ収集では:
- Leader Armで動作をデモンストレーション
- Follower Armの動きとカメラ映像を記録
- 複数のエピソードを収集して学習用データセットを作成
データ収集の準備ができたら、次のセクションに進みましょう!