メインコンテンツまでスキップ

Lerobot で Lekiwi を使用する方法

ヒント

このチュートリアルリポジトリでは、2025年6月5日時点で検証済みの安定版 Lerobot を維持しています。現在、Hugging Face は Lerobot に対して多数の新機能を含む大規模アップグレードを展開しています。最新のチュートリアルを体験したい場合は、公式ドキュメントのガイドに従ってください。

はじめに​

Lekiwi は、SIGRobotics-UIUC によって立ち上げられた、完全オープンソースのロボットカー・プロジェクトです。詳細な3Dプリント用ファイルと操作ガイドが含まれており、模倣学習フレームワークである LeRobot と互換性を持つよう設計されています。SO101 ロボットアームをサポートし、完全な模倣学習パイプラインを実現します。

主な特長​

  1. オープンソースかつ低コスト: Lekiwi によるオープンソースで低コストなロボットカーソリューションです。
  2. LeRobot との統合: LeRobot platform との統合を前提に設計されています。
  3. 豊富な学習リソース: 組み立てやキャリブレーションガイド、テスト、データ収集、学習、デプロイのチュートリアルなど、包括的なオープンソース学習リソースを提供し、ユーザーが素早く入門しロボットアプリケーションを開発できるよう支援します。
  4. Nvidia との互換性: reComputer Mini J4012 Orin NX 16 GB を用いてこのアームキットをデプロイできます。
  5. マルチシーンでの応用: 教育、科学研究、自動化生産、ロボティクスなどの分野に適用でき、さまざまな複雑なタスクにおいて効率的かつ高精度なロボット操作の実現を支援します。
注意

Seeed Studio はハードウェア自体の品質にのみ責任を負います。チュートリアルは公式ドキュメントに厳密に従って更新されています。解決できないソフトウェアの問題や環境依存の問題に遭遇した場合は、速やかに LeRobot platform または LeRobot Discord channel に問題を報告してください。

危険
  • LeKiwi シャーシ内のすべてのサーボモーターには 12V 電源が必要です。5V ロボットアームをお使いのユーザー向けに、12V から 5V へのステップダウンコンバータモジュールを提供しています。なお、この場合はユーザー側で回路の改造が必要になります。

  • 12V 電源 - 必要に応じてチェックアウト時にこのオプションを選択できます。すでに 12V 電源をお持ちの場合は、このオプションをスキップし、お使いの電源の出力コネクタを 5521 DC プラグに変換するだけで構いません。

  • Raspberry Pi コントローラとカメラ - これらは注文画面から別途購入する必要があります。

仕様​

種類Lekiwi
サーボモーター3x 12v STS3215 1:345 ギア比
電源12V DC またはバッテリー
角度センサー12-bit 磁気エンコーダ
推奨動作温度範囲0℃~40℃
通信方式UART
制御方法PC

部品表(BOM)​

部品数量同梱
STS3215 1:345 12V サーボモーター3✅
全方向ホイール/ユニバーサルホイール3✅
Lekiwi 3D プリント筐体1✅
DC-DC 降圧電源モジュール - 24V/12V から 5V1✅
モーター制御ボード1✅
DC オス - DC オス二股 5521 Y ケーブル1✅
USB ケーブル;Type C 2.0 to Type C 2.0-Black;L150mm1✅
USB 3.1 Type C to A ケーブル 0.5 m1✅
プラグ式電源アダプタ;Black-12V-2A AC/DC1✅
M2 M3 M4 種類別ネジセット十分な量✅
Raspberry Pi1オプション
USB カメラ1オプション
Depth カメラ2オプション
SO-ARM101 Pro1オプション
12V 大容量リチウムイオンバッテリーパック E326S1オプション

初期システム環境​

Ubuntu x86 の場合:

  • Ubuntu 22.04
  • CUDA 12+
  • Python 3.12
  • Torch 2.6

Jetson Orin の場合:

  • Jetson JetPack 6.0+
  • Python 3.12
  • Torch 2.6

Raspberry Pi の場合:

  • Raspberry Pi5 4G~16G

3D プリントガイド​

パーツ​

以下の 3D プリント部品について、すぐに印刷できる STL ファイルを提供しています。これらは一般的な PLA フィラメントを使用し、コンシューマ向け FDM プリンタで印刷できます。Bambu Lab P1S プリンタでテストしました。すべての部品について、bambuslicer に読み込み、自動回転と自動配置を行い、推奨されるサポートを有効にして印刷するだけです。

アイテム数量備考
Base plate Top1
Base plate Bottom1
Drive motor mount3
Servo wheel hub3サポートを使用
RasPi case Top12
RasPi case Bottom1
Arducam base mount および Wrist mount1このカメラ と互換性あり
Webcam base mount、gripper insert、および wrist mount1このカメラ と互換性あり

印刷パラメータ​

提供されている STL ファイルは、多くの FDM プリンタでそのまま印刷できます。以下はテスト済みかつ推奨の設定ですが、他の設定でも動作する可能性があります。

  • 材料: PLA+
  • ノズル径と精度: ノズル径 0.2mm、レイヤー高さ 0.2mm
  • インフィル密度: 15%
  • 印刷速度: 150 mm/s
  • 必要に応じて、G-code(スライスファイル)をプリンタにアップロードして印刷します

LeRobot のインストール​

Raspberry Pi 上で実行します:

1. Miniconda をインストール​

mkdir -p ~/miniconda3
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-aarch64.sh -O ~/miniconda3/miniconda.sh
bash ~/miniconda3/miniconda.sh -b -u -p ~/miniconda3
rm ~/miniconda3/miniconda.sh

2. シェルを再起動​

シェルにコピー&ペーストします: source ~/.bashrc または Mac の場合: source ~/.bash_profile もしくは zshell を使用している場合は source ~/.zshrc

3. lerobot 用の新しい conda 環境を作成して有効化​

conda create -y -n lerobot python=3.12

その後、conda 環境を有効化します(lerobot を使うためにシェルを開くたびに実行してください!):

conda activate lerobot

4. LeRobot をクローン​

git clone https://github.com/huggingface/lerobot.git ~/lerobot

5. 環境に ffmpeg をインストール​

miniconda を使用している場合、環境内に ffmpeg をインストールします:

conda install ffmpeg -c conda-forge

6. feetech モーター用の依存関係付きで LeRobot をインストール​

cd ~/lerobot && pip install -e ".[lekiwi]"

ノートPC(PC)への LeRobot のインストール​

すでにノートPCに LeRobot をインストールしている場合は、このステップをスキップできます。そうでない場合は、Pi で行ったのと同じ手順に従ってください。

ヒント

ここでは Command Prompt (cmd) を頻繁に使用します。cmd の使用に慣れていない場合や、コマンドライン操作を復習したい場合は、こちらを参照してください: Command line crash course

コンピュータ上で実行します:

1. Miniconda をインストール​

2. シェルを再起動​

シェルにコピー&ペーストします: source ~/.bashrc または Mac の場合: source ~/.bash_profile もしくは zshell を使用している場合は source ~/.zshrc

3. lerobot 用の新しい conda 環境を作成して有効化​

conda create -y -n lerobot python=3.12

その後、conda 環境を有効化します(lerobot を使うためにシェルを開くたびに実行してください!):

conda activate lerobot

4. LeRobot をクローン​

git clone https://github.com/huggingface/lerobot.git ~/lerobot

5. 環境に ffmpeg をインストール​

miniconda を使用している場合、環境内に ffmpeg をインストールします:

conda install ffmpeg -c conda-forge

6. feetech モーター用の依存関係付きで LeRobot をインストール​

cd ~/lerobot && pip install -e ".[lekiwi]"

組み立て​

Lekiwi を組み立てる

ビデオチュートリアル​

以下は写真によるチュートリアルです​

公式の組み立てチュートリアルも参照できます。

造形済みパーツを受け取ると、すべての造形コンポーネントは以下のようになります。

A. ドライブモーターを12本の m2x6 タップねじを使ってモーターマウントに取り付けます。

Step 1Step 2
fig1fig2

B. ドライブモーターマウントを12本の m3x16 皿ねじを使ってボトムベースプレートに固定します。

ヒント

ID の配置を覚えておいてください:8 は後輪を表し、7 と 9 はそれぞれ左前輪と右前輪に対応します。

Step 1Step 2
fig1fig2

C. ホイールハブをオムニホイールに取り付けます。

Step 1 と Step 2: 3 本のねじを取り外します。

Step 1Step 2
fig1fig2

Step 3 と Step 4: 9 本の m4x18 皿ねじを使ってホイールハブをオムニホイールに取り付けます。

Step 3Step 4
fig1fig2

D. 6 本の m3x16 皿ねじを使ってサーボホーンをホイールハブに取り付けます。

Step 1Step 2Step 3
fig1fig2fig3

E. 3 本の m3x10 皿ねじを使ってサーボホーンをドライブモーターに取り付けます。

Step 1Step 2Step 3
fig1fig2fig3

H. サーボドライバを追加し、すべての回路を接続します。

Step 1Step 2Step 3Step 4
fig1fig2fig3fig4
Step 5Step 6Step 7Step 8
fig1fig2fig3fig4

Power IN は Step8 のように電源に直接接続し、USB-C ポートは Raspberry Pi に 5V 電源を供給します。

追加の 2 ピン端子 (5V & 12V) について:

  • 7.4V SO10x ロボットアームを使用する場合、Servo Motors Board を 5V 出力から給電します。
  • 12V ロボットアームを使用する場合、Step 8 のように DC 電源スプリッタから直接 Servo Motors Board に給電します。

I. これで、Raspberry Pi を車両の 2 層目のトッププレートに取り付けることができます。その前に、USB-C 電源ケーブルとUSB-C サーボモーター通信ケーブルの両方を接続し、それらを車両のトップパネルから外側へ引き出してください。

Step 1 電源ケーブルを Raspberry Pi に接続し、トップパネル中央の開口部から引き出します。

fig1fig2fig3

Step 2 シャーシ内の 3 つのサーボモーターのうち、1 つのサーボには 1 本のケーブルしか接続されていません。SO10x ロボットアームを取り付ける必要がある場合は、次のようにしてください:ロボットアームから ID1 ケーブルを取り外します。それをシャーシモーターに接続します。トップパネルを通して引き出し、予備ケーブルとして確保します。

fig1fig2fig3

Step 3 ここで、サーボドライバボードからの USB-C を Raspberry Pi の USB ポートに接続できます。

fig1fig2

J. 12 本の M3×16 ねじを使って、Raspberry Pi とトッププレートの残りのパーツを固定します。

fig1fig2fig3

K. ここで、1 本の M3x16 ねじと 4 本の M5×25 ねじを使って USB カメラと Follower Arm を取り付けることができます。

fig1fig2fig3
fig4fig5fig6

そして、サーボ制御ケーブルと USB カメラの両方が Raspberry Pi に接続されていることを確認してください。

fig1
ヒント

回路接続を確認してください。組み立て後、Lekiwi は開発ボード(Raspberry Pi / Jetson)に接続されている必要があります。Leader arm は PC に接続してください。

| Lekiwi --> Raspberry Pi / Jetson |

| Leader arm --> PC |

モーターを設定する​

Leader arm​

各バスサーボアダプタのポートを見つけるには、このスクリプトを実行します:

lerobot-find-port

出力例:

Finding all available ports for the MotorBus.
['/dev/tty.usbmodem575E0032081']
Remove the USB cable from your MotorsBus and press Enter when done.

[...Disconnect corresponding leader or follower arm and press Enter...]

The port of this MotorsBus is /dev/tty.usbmodem575E0032081
Reconnect the USB cable.

ポートを特定したときの出力例(例:Mac では /dev/tty.usbmodem575E0031751、Linux では /dev/ttyACM0 の可能性があります):

ポートを特定したときの出力例(例:/dev/tty.usbmodem575E0032081、Linux では /dev/ttyACM1 の可能性があります):

ヒント
Finding all available ports for the MotorBus.
['/dev/tty.usbmodem575E0032081']
Remove the USB cable from your MotorsBus and press Enter when done.

usb を取り外してから Enter キーを押すことを忘れないでください。そうしないとインターフェースが検出されません。

トラブルシューティング:Linux では、次のコマンドを実行して USB ポートへのアクセス権を付与する必要がある場合があります:

sudo chmod 666 /dev/ttyACM0
sudo chmod 666 /dev/ttyACM1

Lekiwi​

前述のコマンドに従って正しい USB を見つけ、モーターを設定する必要があります。

モーターの設定手順は SO101 のドキュメントに記載されています(Leader arm と同じです)。アームモーターの ID に加えて、モバイルベース用のモーター ID も設定する必要があります。これらは動作させるために特定の順序である必要があります。以下は、モバイルベースのモーター ID とモーター取り付け位置の画像です。LeKiwi では Motor Control ボードを 1 枚しか使用しないことに注意してください。これは、ホイールのモーター ID が 7、8、9 であることを意味します。

このコマンドを実行すると、LeKiwi 用のモーターをセットアップできます。最初にアーム用モーター(ID 6..1)をセットアップし、その後ホイール用モーター(9,8,7)をセットアップします。

lerobot-setup-motors \
--robot.type=lekiwi \
--robot.port=/dev/tty.usbmodem58760431551 # <- paste here the port found at previous step

キャリブレーション​

次に、リーダーアームとフォロワーアームをキャリブレーションする必要があります。ホイールモーターはキャリブレーションする必要はありません。キャリブレーションプロセスは非常に重要で、あるロボットで学習したニューラルネットワークを別のロボットでも動作させることができます。

フォロワーアーム(モバイルベース上)のキャリブレーション​

アームが Raspberry Pi に接続されていることを確認し、フォロワーアームのキャリブレーションを開始するために、このスクリプトまたは API のサンプルを(SSH 経由で Raspberry Pi 上で)実行します:

lerobot-calibrate \
--robot.type=lekiwi \
--robot.id=my_awesome_kiwi # <- Give the robot a unique name

ほとんどのロボットでキャリブレーション方法を統一しているため、この SO100 アームのキャリブレーション手順は Koch や SO101 の手順と同じです。まず、各関節が可動範囲の中央に来る位置までロボットを動かし、Enter を押します。次に、すべての関節を可動範囲いっぱいまで動かします。参考として、同じプロセスを SO101 で行っている動画が こちら にあります。

有線バージョン​

有線版の LeKiwi をお持ちの場合は、すべてのコマンドをノート PC 上で実行してください。

リーダーアームのキャリブレーション​

次に、リーダーアーム(ノート PC / PC に接続されているアーム)をキャリブレーションします。ノート PC 上で次の API サンプルのコマンドを実行してください:

lerobot-calibrate \
--teleop.type=so100_leader \
--teleop.port=/dev/tty.usbmodem58760431551 \ # <- The port of your robot
--teleop.id=my_awesome_leader_arm # <- Give the robot a unique name

LeKiwi をテレオペレートする​

ヒント

Mac を使用している場合、Terminal にキーボードへのアクセス権限を付与する必要があるかもしれません。System Preferences > Security & Privacy > Input Monitoring に移動し、Terminal にチェックを入れてください。

テレオペレートするには、Raspberry Pi に SSH 接続し、conda activate lerobot を実行してから、次のスクリプトを実行します:

python -m lerobot.robots.lekiwi.lekiwi_host --robot.id=my_awesome_kiwi

次にノート PC 上でも conda activate lerobot を実行し、API サンプルを実行します。その際、examples/lekiwi/teleoperate.py 内の remote_ip と port を正しく設定していることを確認してください。

python examples/lekiwi/teleoperate.py

ノート PC 上で次のような表示が見えるはずです:[INFO] Connected to remote robot at tcp://172.17.133.91:5555 and video stream at tcp://172.17.133.91:5556. これでリーダーアームを動かし、キーボード(w,a,s,d)を使って前進・左・後退・右に移動できます。また、(z,x)で左旋回・右旋回ができます。(r,f)でモバイルロボットの速度を上げたり下げたりできます。速度モードは 3 つあり、以下の表のとおりです:

スピードモード直線速度 (m/s)回転速度 (deg/s)
Fast0.490
Medium0.2560
Slow0.130
キー動作
W前進
A左へ移動
S後退
D右へ移動
Z左旋回
X右旋回
R速度を上げる
F速度を下げる
ヒント

別のキーボードを使用している場合は、LeKiwiRobotConfig 内で各コマンドに対応するキーを変更できます。

有線バージョン​

有線版の LeKiwi をお持ちの場合は、これら 2 つのテレオペレーションコマンドを含むすべてのコマンドをノート PC 上で実行してください。

通信のトラブルシューティング​

Mobile SO100 に接続できない場合は、問題を診断して解決するために次の手順に従ってください。

1. IP アドレス設定の確認​

設定ファイルに Pi の IP が正しく設定されていることを確認してください。Raspberry Pi の IP アドレスを確認するには、(Pi のコマンドラインで)次を実行します:

hostname -I

2. ノート PC / PC から Pi に到達できるか確認する​

ノート PC から Raspberry Pi に ping を送ってみてください:

ping <your_pi_ip_address>

ping が失敗する場合:

  • Pi の電源が入っており、同じネットワークに接続されていることを確認してください。
  • Pi で SSH が有効になっているか確認してください。

3. SSH 接続を試す​

Pi に SSH 接続できない場合、正しく接続されていない可能性があります。次を使用します:

ssh <your_pi_user_name>@<your_pi_ip_address>

接続エラーが発生した場合:

  • 次を実行して、Pi で SSH が有効になっていることを確認してください:

    sudo raspi-config

    その後、Interfacing Options -> SSH に移動して有効化します。

4. 同じ設定ファイルを使用する​

ノート PC / PC と Raspberry Pi の両方で、同じ設定ファイルを使用していることを確認してください。

データセットを記録する​

テレオペレーションに慣れたら、LeKiwi で最初のデータセットを記録できます。

データセットのアップロードには Hugging Face hub の機能を使用します。Hub を以前に使用したことがない場合は、書き込み権限付きトークンを使って CLI からログインできるようにしてください。このトークンは Hugging Face settings から生成できます。

次のコマンドを実行して、トークンを CLI に追加します:

huggingface-cli login --token ${HUGGINGFACE_TOKEN} --add-to-git-credential

次に、Hugging Face のリポジトリ名を変数に保存します:

HF_USER=$(huggingface-cli whoami | head -n 1)
echo $HF_USER

これでデータセットを記録できます。エピソードを記録してデータセットを hub にアップロードするには、LeKiwi 用に調整されたこの API サンプルを実行します。その前に、スクリプト内の remote_ip、repo_id、port、task を必ず調整してください。スクリプトをより長く実行したい場合は、NB_CYCLES_CLIENT_CONNECTION を増やすことができます。

python examples/lekiwi/record.py

データセットのアップロード

ローカルでは、データセットは次のフォルダに保存されます:~/.cache/huggingface/lerobot/{repo-id}。データ記録の最後に、データセットは Hugging Face のページ(例:https://huggingface.co/datasets/cadene/so101_test)にアップロードされます。この URL は次を実行して取得できます:

echo https://huggingface.co/datasets/${HF_USER}/so101_test

データセットには自動的に LeRobot タグが付与され、コミュニティが簡単に見つけられるようになります。また、(このチュートリアルのように)tutorial などのカスタムタグを追加することもできます。

Hub 上で他の LeRobot データセットを探すには、LeRobot の tags を検索してください。

ヒント

データ収集のコツ​

データ記録に慣れたら、学習用により大きなデータセットを作成できます。良い出発点となるタスクは、さまざまな位置にある物体を把持してビンに入れることです。少なくとも 50 エピソード、1 つの位置につき 10 エピソードを記録することをお勧めします。カメラは固定し、記録中は一貫した把持動作を維持してください。また、操作している物体がカメラに映っていることを確認してください。経験則として、カメラ画像だけを見て自分自身でタスクを実行できる程度が目安です。

次のセクションでは、ニューラルネットワークを学習させます。把持が安定して行えるようになったら、データ収集時により多くのバリエーションを加え始めることができます。例えば、把持位置を増やしたり、異なる把持方法を試したり、カメラ位置を変更したりします。

一度にあまり多くのバリエーションを追加しすぎると、結果が悪化する可能性があるため避けてください。

この重要なトピックをさらに深く知りたい場合は、良いデータセットとは何かについて執筆した blog post を参照してください。

トラブルシューティング​

Linux で、データ記録中に左右の矢印キーや Escape キーが効かない場合は、$DISPLAY 環境変数が設定されていることを確認してください。pynput limitations を参照してください。

有線バージョン​

有線版の LeKiwi をお持ちの場合は、これら 2 つのデータセット記録コマンドを含むすべてのコマンドをノート PC 上で実行してください。

エピソードをリプレイする​

エピソードをリプレイするには、以下の API サンプルを実行します。その際、remote_ip、port、LeRobotDatasetId、エピソードインデックスを変更してください。ファイルは examples/lekiwi/replay.py パスの下にあります。

次のコマンドを実行します:

python examples/lekiwi/replay.py

ポリシーを学習させる​

ロボットを制御するポリシーを学習させるには、python lerobot/scripts/train.py スクリプトを使用します。いくつかの引数が必要です。以下はコマンド例です:

lerobot-train \
--dataset.repo_id=${HF_USER}/lekiwi_test \
--policy.type=act \
--output_dir=outputs/train/act_lekiwi_test \
--job_name=act_lekiwi_test \
--policy.device=cuda \
--wandb.enable=true # You can choose false if you don't need wandb

これを説明します:

  1. --dataset.repo_id=${HF_USER}/lekiwi_test という引数でデータセットを指定しています。
  2. policy.type=act を指定しました。これにより configuration_act.py から設定が読み込まれます。重要な点として、このポリシーは、データセットに保存されているロボットのモータ状態数、モータアクション数、およびカメラ数(例:laptop や phone)に自動的に適応します。
  3. Nvidia GPU 上で学習しているため policy.device=cuda を指定しましたが、Apple シリコンで学習する場合は policy.device=mps を使用できます。
  4. 学習プロットの可視化に Weights and Biases を使用するために wandb.enable=true を指定しました。これは任意ですが、使用する場合は wandb login を実行してログインしていることを確認してください。

学習には数時間かかります。outputs/train/act_lekiwi_test/checkpoints にチェックポイントが保存されます。

ポリシーを評価する​

ポリシーを評価するには evaluate.py API サンプルを実行し、remote_ip、port、model などを変更してください。

パスは examples/lekiwi/evaluate.py です。

python examples/lekiwi/evaluate.py

ご覧のとおり、これは学習用データセットを記録する際に使用したコマンドとほとんど同じです。変更点は 2 つあります:

  1. 追加の policy 引数があり、ポリシーのチェックポイントへのパスを指定します(例:outputs/train/eval_act_lekiwi_test/checkpoints/last/pretrained_model)。モデルチェックポイントを Hub にアップロードしている場合は、モデルリポジトリも使用できます(例:${HF_USER}/act_lekiwi_test)。
  2. データセット名が eval で始まり、推論を実行していることを示します(例:${HF_USER}/eval_act_lekiwi_test)。

ヘルプ 🙋‍​

ハードウェアに関する問題はカスタマーサービスにお問い合わせください。使い方に関する質問は Discord に参加してください。

LeRobot プラットフォーム

LeRobot Discord チャンネル

技術サポート & 製品ディスカッション​

弊社製品をお選びいただきありがとうございます。製品をできるだけスムーズにご利用いただけるよう、さまざまなサポートを提供しています。お好みやニーズに合わせて選べる複数のコミュニケーションチャネルをご用意しています。

Loading Comments...