LeRobot documentation
LeKiwi
LeKiwi
以下の手順で、LeKiwiモバイルロボットの組み立て方法を説明します。
部品を調達する
このREADMEに従ってください。部品表(BOM)と部品の入手先へのリンク、および部品の3Dプリント手順が含まれています。 また、3Dプリントが初めての方や、3Dプリンタをお持ちでない方へのアドバイスも記載されています。
有線版
wired版のLeKiwiをお持ちの場合は、Raspberry PiのインストールとSSHのセットアップをスキップできます。また、LeKiwiのスクリプトとテレオペレーション用のリーダーアームのスクリプトの両方について、すべてのコマンドをPC上で直接実行することもできます。
Piにソフトウェアをインストールする
次に、LeKiwi Robot上で動作するリモートPCを設定する必要があります。通常はRaspberry Piですが、5Vで動作し、カメラとモーター制御ボード用に十分な数のUSBポート(2つ以上)を備えた任意のPCでも構いません。
OSのインストール
Raspberry Pi とその SD カードのセットアップについては、Setup PIを参照してください。ここでは、Raspberry Pi OS または Ubuntu をインストールするために Imager をダウンロードする方法を説明します。
SSHのセットアップ
Pi のセットアップが完了したら、Pi に画面、キーボード、マウスを接続せずにラップトップからログインできるよう、SSH(Secure Shell Protocol)を有効化して設定してください。この設定方法に関する優れたチュートリアルは、こちらで確認できます。Pi へのログインは、コマンドプロンプト(cmd)から行えます。また、VSCode を使用している場合は、この拡張機能を利用できます。
PiにLeRobotをインストールする 🤗
Raspberry Pi に、インストールガイドに従って LeRobot をインストールしてください。
これらの手順に加えて、PiにFeetechモーターサポートおよびZeroMQをインストールする必要があります:
pip install -e ".[lekiwi]"LeRobotをローカルにインストール
すでにラップトップ/PCにLeRobotをインストール済みであれば、このステップをスキップできます。そうでない場合は、Piで行ったのと同じ手順に従ってください。
インストールガイドに従ってください。
これらの手順に加えて、ラップトップ/PCにFeetechモーターサポートおよびZeroMQをインストールする必要があります:
pip install -e ".[lekiwi]"素晴らしい 🤗! LeRobot のインストールが完了しました。SO100/SO101 アームとモバイルベースの組み立てを始めましょう 🤖。
今後 LeRobot を使用する際は、LeRobot をインストールした ~/lerobot フォルダに移動し、いずれかのコマンドを実行してください。
ステップバイステップの組み立て手順
まず、SO100/SO101アームを2本組み立てます。1本はモバイルベースに接続し、もう1本はテレオペレーションに使用します。その後、モバイルベースを組み立てます。組み立て手順は、以下の2つのページに記載されています。
モーターボードに関連付けられたUSBポートを特定します
各バスサーボアダプタのポートを見つけるには、このスクリプトを実行します:
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.検出されたポートは、お使いのボードに対応する/dev/tty.usbmodem575E0032081です。
Linuxでは、…を実行してUSBポートへのアクセス権を付与する必要がある場合があります。
sudo chmod 666 /dev/ttyACM0
sudo chmod 666 /dev/ttyACM1出力例:
Finding all available ports for the MotorBus.
['/dev/ttyACM0']
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/ttyACM0
Reconnect the USB cable.検出されたポートは、ボードに対応する/dev/ttyACM0です。
モーターを設定
モーターの構成手順は、SO101のドキュメントを参照してください。アームモーターのIDに加えて、モバイルベースのモーターIDも設定する必要があります。これらのIDは、動作させるために特定の順序で設定する必要があります。以下は、モバイルベースのモーターIDとモーターの取り付け位置を示す図です。なお、LeKiwiではモーター制御ボードを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
通信のトラブルシューティング
LeKiwiへの接続に問題がある場合は、以下の手順に従って問題を診断し、解決してください。
1. IPアドレス設定の確認
コマンドやコードで、Raspberry Pi の正しい IP アドレスが使用されていることを確認してください。Raspberry Pi の IP アドレスを確認するには、Pi のコマンドラインで以下を実行します。
hostname -I
2. ラップトップ/PCからPiに到達できるか確認します
ラップトップから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 が有効になっていることを確認するには、以下を実行してください: 次に、以下に移動します: Interfacing Options -> SSH 有効にしてください。
sudo raspi-config
キャリブレーション
次に、リーダーアームとフォロワーアームのキャリブレーションを行う必要があります。ホイールモーターのキャリブレーションは不要です。 キャリブレーションプロセスは非常に重要であり、1つのロボットで学習させたニューラルネットワークを別のロボットでも動作させることを可能にします。
フォロワーアーム(モバイルベース上)のキャリブレーション
アームがRaspberry Piに接続されていることを確認し、このスクリプトまたはAPIの例(Raspberry Pi上でSSH経由で)を実行して、フォロワーアームのキャリブレーションを開始します。
lerobot-calibrate \
--robot.type=lekiwi \
--robot.id=my_awesome_kiwi # <- Give the robot a unique nameほとんどのロボットでキャリブレーション手法を統一したため、LeKiwiアームのキャリブレーション手順はKochおよびSO101の手順と同じです。まず、各関節が可動範囲の中央にある位置にロボットを移動し、Enterを押します。次に、すべての関節を可動範囲全体にわたって動かします。SO101での同じプロセスの参考動画はこちらで確認できます。
有線版
wired版のLeKiwiをお使いの場合は、すべてのコマンドをラップトップで実行してください。
リーダーアームのキャリブレーション
次に、リーダーアーム(ラップトップ/PCに接続されているもの)をキャリブレーションします。ラップトップで、APIの例として以下のコマンドを実行してください。
# Use the port of your leader arm, and give the arm a unique name with --teleop.id
lerobot-calibrate \
--teleop.type=so100_leader \
--teleop.port=/dev/tty.usbmodem58760431551 \
--teleop.id=my_awesome_leader_armfrom lerobot.teleoperators.so_leader import SO100LeaderConfig, SO100Leader
config = SO100LeaderConfig(
port="/dev/tty.usbmodem58760431551",
id="my_awesome_leader_arm",
)
leader = SO100Leader(config)
leader.connect(calibrate=False)
leader.calibrate()
leader.disconnect()LeKiwiの遠隔操作
Macをお使いの場合は、テレオペレーションのためにTerminalにキーボードへのアクセス権限を付与する必要がある場合があります。システム環境設定 > セキュリティとプライバシー > 入力モニタリングに移動し、Terminalのチェックボックスをオンにしてください。
テレオペレーションを行うには、Raspberry Pi に SSH で接続し、conda activate lerobot とこのコマンドを実行します。
python -m lerobot.robots.lekiwi.lekiwi_host --robot.id=my_awesome_kiwi
ホストは--host.connection_time_s秒(デフォルトは30秒)後に停止します。データセットの録音など、より長いセッションの場合は、例えば--host.connection_time_s=600のように値を大きくしてください。
次に、ラップトップでもconda activate lerobotを実行し、APIの例を実行してください。examples/lekiwi/teleoperate.pyで、正しいremote_ipとportを設定していることを確認してください。
python examples/lekiwi/teleoperate.py
これでリーダーアームを動かすことができ、キーボード(w、a、s、d)で前進、左、後退、右に移動できます。また、(z、x)で左折または右折できます。(r、f)でモバイルロボットの速度を上げ下げできます。速度モードは3種類あり、以下の表を参照してください:
| スピードモード | 線速度 (m/s) | 回転速度 (deg/s) |
|---|---|---|
| 高速 | 0.3 | 90 |
| 中程度 | 0.2 | 60 |
| 遅い | 0.1 | 30 |
| キー | アクション |
|---|---|
| W | 次へ進む |
| A | 左へ移動 |
| S | 後方へ移動 |
| D | 右へ移動 |
| Z | 左に曲がる |
| X | 右に曲がる |
| R | 速度を向上させる |
| F | 速度を低下させる |
別のキーボードを使用している場合は、
LeKiwiClientConfigで各コマンドのキーを変更できます。
有線版
wired版のLeKiwiをお使いの場合は、すべてのコマンドをラップトップで実行してください。
データセットを記録する
テレオペレーションに慣れたら、最初のデータセットを記録できます。
Hugging Face hub の機能を使用して、あなたのデータセットをアップロードします。これまで Hub を使用したことがない場合は、書き込みアクセス権限を持つトークンを使用して CLI からログインできることを確認してください。このトークンは、Hugging Face の設定から生成できます。
このコマンドを実行して、CLIにトークンを追加します:
hf auth login --token ${HUGGINGFACE_TOKEN} --add-to-git-credential次に、Hugging Face リポジトリ名を変数に格納します:
HF_USER=$(hf auth whoami --quiet)
echo $HF_USERこれでデータセットの記録を開始できます。エピソードを記録し、データセットをハブにアップロードするには、LeKiwi用に調整されたこのAPIの例を実行してください。まず、スクリプト内のremote_ip、HF_REPO_ID、リーダーアームのport、TASK_DESCRIPTIONを適切に設定してください。より多くのエピソード、またはより長いエピソードを記録するには、NUM_EPISODES、EPISODE_TIME_SEC、RESET_TIME_SECを変更し、セッション全体をカバーする--host.connection_time_sを指定してホストを起動してください。
python examples/lekiwi/record.py
Datasetのアップロード
ローカルでは、データセットは ~/.cache/huggingface/lerobot/{repo-id} フォルダに保存されます。データ録画が終了すると、スクリプトで設定した HF_REPO_ID(例: https://huggingface.co/datasets/${HF_USER}/lekiwi_test)の下に、あなたの Hugging Face ページへアップロードされます。この URL は、以下を実行することで取得できます:
echo https://huggingface.co/datasets/${HF_USER}/lekiwi_testデータセットにはコミュニティが簡単に検索できるようにLeRobotタグが自動的に付与され、カスタムタグ(この例ではtutorialなど)を追加することもできます。
LeRobotのタグで検索することで、ハブ上の他のLeRobotデータセットを探すことができます。
データ収集のヒント
データ記録に慣れたら、学習用のより大きなデータセットを作成できます。良い最初のタスクは、異なる位置でオブジェクトを把持し、それをビンに置くことです。少なくとも50エピソードの記録を推奨します。各位置につき10エピソードずつです。カメラは固定し、記録全体を通じて一貫した把持動作を維持してください。また、操作しているオブジェクトがカメラに映っていることを確認してください。良い目安として、カメラの映像だけを見ても、自分でそのタスクを実行できる状態にしてください。
以下のセクションでは、ニューラルネットワークを学習します。信頼できるグリップ性能を達成した後、データ収集時にさらなるバリエーションを導入できます。例えば、追加のグリップ位置、異なるグリップ手法、カメラ位置の変更などです。
結果に悪影響を及ぼす可能性があるため、多様性を急激に大きくしすぎないよう注意してください。
この重要なテーマをさらに深く掘り下げる場合は、良いデータセットとは何かについて私たちが執筆したブログ記事をご覧ください。
トラブルシューティング:
- Linux では、録画の制御フローキー(矢印キー、Escape キー)は、インタラクティブなターミナルから録画を実行し、そのターミナルにフォーカスを保ったままにしている限り、X11、Wayland、ヘッドレス/SSH セッションのいずれでも動作します。
$DISPLAYの設定は不要です。文字キーの代替であるn/r/qも動作します。なお、LeKiwi ベースのキーボードによる遠隔操作 は異なります。これはグローバルなキーバックエンドに依存しているため、X11 セッション、Windows デスクトップ、または Accessibility/Input Monitoring が許可された macOS のみで動作し、Wayland やヘッドレスマシンでは動作しません。pynput の制限事項を参照してください。
エピソードをリプレイする
エピソードの再生を行うには、以下のAPIの例を実行してください。remote_ip、port、LeRobotDatasetId、エピソードインデックスを変更することを忘れないでください。
python examples/lekiwi/replay.py
おめでとうございます🎉。ロボットがタスクを独自に学習する準備が整いました。このチュートリアルの学習セクションから学習を開始してください: 実世界のロボットで始める
を評価する
ポリシーを評価するには、evaluate.py の API サンプルを実行してください。remote_ip、port、モデル...を変更することを忘れないでください。
python examples/lekiwi/evaluate.py
Update on GitHubご質問やご支援が必要な場合は、Discordまでご連絡ください。