LeRobot documentation

Koch v1.1

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Koch v1.1

以下の手順で、Koch v1.1 ロボットの組み立て方法を説明します。

パーツを注文して組み立てる

このREADMEに記載されている調達および組み立ての手順に従ってください。これにより、以下の画像に示されているように、followerアームとleaderアームのセットアップが案内されます。

アセンブリプロセスのビジュアルな解説については、この動画チュートリアルを参照してください。

この動画の制作以降、設定フェーズが簡素化されました。そのため、以下の2点について、動画内の手順と異なります。

  • すべてのモーターケーブルをすぐには接続せず、モーターの構成で指示があるまでお待ちください。
  • コントローラーボード(PCB)をベースにすぐにはネジ止めせず、モーターの構成で指示があるまでお待ちください。

LeRobot🤗のインストール

LeRobotをインストールするには、インストールガイドに従ってください。

これらの手順に加えて、Dynamixel SDKのインストールが必要です(PyPIからLeRobotをインストールした場合は、代わりにpip install 'lerobot[dynamixel]'を実行してください):

pip install -e ".[dynamixel]"

モーターを設定

1. 各アームに関連付けられたUSBポートを特定します

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

lerobot-find-port
Mac
Linux

出力例:

Finding all available ports for the MotorBus.
['/dev/tty.usbmodem575E0032081', '/dev/tty.usbmodem575E0031751']
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です。

2. モーターの ID とボーレートを設定します

各モーターはバス上で一意のidによって識別されます。新品のモーターは通常、デフォルトのidが1に設定されています。モーターとコントローラー間の通信を正常に行うためには、まず各モーターに一意で異なるidを設定する必要があります。また、バス上でデータが送信される速度はbaudrateによって決定されます。互いに通信するためには、コントローラーとすべてのモーターに同じbaudrateを設定する必要があります。

そのために、まずこれらの設定を行うため、コントローラーを介して各モーターに個別に接続する必要があります。これらのパラメータはモーターの内部メモリ(EEPROM)の非揮発性セクションに書き込まれるため、この操作は一度だけ行えば済みます。

別のロボットからモーターを流用する場合は、IDとボーレートが一致しない可能性が高いため、この手順も実行する必要があるでしょう。

フォロワー

コンピューターと12V電源のUSBケーブルをフォロワーアームのコントローラーボードに接続してください(リーダーアームには5V電源を使用します)。その後、前回のステップで取得したポートを指定して、以下のコマンドを実行するか、APIの例を実行してください。また、idパラメーターでフォロワーアームに名前を付ける必要があります。

モーターIDの設定方法の視覚的な参考として、SO101アームのプロセスを追ったこの動画を参照してください。

コマンド
APIの例
lerobot-setup-motors \
    --robot.type=koch_follower \
    --robot.port=/dev/tty.usbmodem575E0031751 # <- paste here the port found at previous step

次の指示が表示されるはずです。

Connect the controller board to the 'gripper' motor only and press enter.

指示に従い、グリップのモーターを接続してください。ボードに接続されているモーターがこれのみであり、かつそのモーター自体が他のモーターとデイジーチェーン接続されていないことを確認してください。[Enter]を押すと、スクリプトがそのモーターのidとbaudrateを自動的に設定します。

Troubleshooting

その時点でエラーが発生した場合は、ケーブルを確認し、正しく接続されていることを確認してください:

  • 電源
  • コンピューターとコントローラーボードを接続するUSBケーブル
  • コントローラーボードからモーターへの3ピンケーブル

Waveshareのコントローラーボードを使用している場合は、2つのジャンパーがBチャネル(USB)に設定されていることを確認してください。

次に、以下のメッセージが表示されるはずです。

'gripper' motor id set to 6

次に、次の指示が続きます。

Connect the controller board to the 'wrist_roll' motor only and press enter.

3ピンケーブルをコントローラーボードから取り外すことができますが、グリップモーター側の接続はそのままにしてください。すでに正しい位置にあるためです。次に、別の3ピンケーブルをリストロールモーターに接続し、コントローラーボードに接続します。前のモーターと同様に、ボードに接続されているモーターがこれのみであること、およびモーター自体が他のモーターに接続されていないことを確認してください。

指示に従って、各モーターに対して操作を繰り返します。

Enterキーを押す前に、各ステップで配線を確認してください。例えば、ボードを操作している間に電源ケーブルが外れる可能性があります。

完了すると、スクリプトは正常に終了し、モーターが使用可能な状態になります。次に、各モーターの3ピンケーブルを次のモーターに、そして最初のモーター(id=1の‘shoulder pan’)のケーブルをコントローラーボードに接続します。このボードは、アームのベースに取り付けることができます。

リーダー

リーダーアームについても同様の手順を実行し、コマンドまたはスクリプトを適切に変更してください。

コマンド
APIの例
lerobot-setup-motors \
    --teleop.type=koch_leader \
    --teleop.port=/dev/tty.usbmodem575E0031751

キャリブレーション

次に、リーダーアームとフォロワーアームが同じ物理的な位置にあるときに、同じ位置の値を持つようにロボットをキャリブレーションする必要があります。 キャリブレーションのプロセスは非常に重要であり、1つのロボットで学習したニューラルネットワークを別のロボットでも動作させることを可能にします。

フォロワー

以下のコマンドまたはAPIの例を実行して、フォロワーアームをキャリブレーションします。

コマンド
APIの例
# Use the port of your follower arm, and give the arm a unique name with --robot.id
lerobot-calibrate \
    --robot.type=koch_follower \
    --robot.port=/dev/tty.usbmodem58760431551 \
    --robot.id=my_awesome_follower_arm

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

リーダー

リーダーアームのキャリブレーションには、同じ手順を実行し、以下のコマンドまたはAPIの例を実行します。

コマンド
APIの例
# Use the port of your leader arm, and give the arm a unique name with --teleop.id
lerobot-calibrate \
    --teleop.type=koch_leader \
    --teleop.port=/dev/tty.usbmodem58760431551 \
    --teleop.id=my_awesome_leader_arm

おめでとうございます🎉。ロボットがタスクを独自に学習する準備が整いました。このチュートリアルに従ってトレーニングを開始してください: 実世界のロボットで始める

ご質問やご支援が必要な場合は、Discordまでご連絡ください。

Update on GitHub