LeRobot documentation
Koch v1.1
Koch v1.1
以下の手順で、Koch v1.1 ロボットの組み立て方法を説明します。
パーツを注文して組み立てる
このREADMEに記載されている調達および組み立ての手順に従ってください。これにより、以下の画像に示されているように、followerアームとleaderアームのセットアップが案内されます。
アセンブリプロセスのビジュアルな解説については、この動画チュートリアルを参照してください。
この動画の制作以降、設定フェーズが簡素化されました。そのため、以下の2点について、動画内の手順と異なります。
LeRobot🤗のインストール
LeRobotをインストールするには、インストールガイドに従ってください。
これらの手順に加えて、Dynamixel SDKのインストールが必要です(PyPIからLeRobotをインストールした場合は、代わりにpip install 'lerobot[dynamixel]'を実行してください):
pip install -e ".[dynamixel]"モーターを設定
1. 各アームに関連付けられたUSBポートを特定します
各バスサーボアダプタのポートを見つけるには、このスクリプトを実行します:
lerobot-find-port
出力例:
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です。
Linuxでは、…を実行してUSBポートへのアクセス権を付与する必要がある場合があります。
sudo chmod 666 /dev/ttyACM0
sudo chmod 666 /dev/ttyACM1出力例:
Finding all available ports for the MotorBus.
['/dev/ttyACM0', '/dev/ttyACM1']
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/ttyACM1
Reconnect the USB cable.検出されたポートは、リーダーアームまたはフォロワーアームに対応する/dev/ttyACM1です。
2. モーターの ID とボーレートを設定します
各モーターはバス上で一意のidによって識別されます。新品のモーターは通常、デフォルトのidが1に設定されています。モーターとコントローラー間の通信を正常に行うためには、まず各モーターに一意で異なるidを設定する必要があります。また、バス上でデータが送信される速度はbaudrateによって決定されます。互いに通信するためには、コントローラーとすべてのモーターに同じbaudrateを設定する必要があります。
そのために、まずこれらの設定を行うため、コントローラーを介して各モーターに個別に接続する必要があります。これらのパラメータはモーターの内部メモリ(EEPROM)の非揮発性セクションに書き込まれるため、この操作は一度だけ行えば済みます。
別のロボットからモーターを流用する場合は、IDとボーレートが一致しない可能性が高いため、この手順も実行する必要があるでしょう。
フォロワー
コンピューターと12V電源のUSBケーブルをフォロワーアームのコントローラーボードに接続してください(リーダーアームには5V電源を使用します)。その後、前回のステップで取得したポートを指定して、以下のコマンドを実行するか、APIの例を実行してください。また、idパラメーターでフォロワーアームに名前を付ける必要があります。
モーターIDの設定方法の視覚的な参考として、SO101アームのプロセスを追ったこの動画を参照してください。
lerobot-setup-motors \
--robot.type=koch_follower \
--robot.port=/dev/tty.usbmodem575E0031751 # <- paste here the port found at previous stepfrom lerobot.robots.koch_follower import KochFollower, KochFollowerConfig
config = KochFollowerConfig(
port="/dev/tty.usbmodem575E0031751",
id="my_awesome_follower_arm",
)
follower = KochFollower(config)
follower.setup_motors()次の指示が表示されるはずです。
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’)のケーブルをコントローラーボードに接続します。このボードは、アームのベースに取り付けることができます。
リーダー
リーダーアームについても同様の手順を実行し、コマンドまたはスクリプトを適切に変更してください。
lerobot-setup-motors \
--teleop.type=koch_leader \
--teleop.port=/dev/tty.usbmodem575E0031751from lerobot.teleoperators.koch_leader import KochLeader, KochLeaderConfig
config = KochLeaderConfig(
port="/dev/tty.usbmodem575E0031751",
id="my_awesome_leader_arm",
)
leader = KochLeader(config)
leader.setup_motors()キャリブレーション
次に、リーダーアームとフォロワーアームが同じ物理的な位置にあるときに、同じ位置の値を持つようにロボットをキャリブレーションする必要があります。 キャリブレーションのプロセスは非常に重要であり、1つのロボットで学習したニューラルネットワークを別のロボットでも動作させることを可能にします。
フォロワー
以下のコマンドまたは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_armfrom lerobot.robots.koch_follower import KochFollowerConfig, KochFollower
config = KochFollowerConfig(
port="/dev/tty.usbmodem585A0076891",
id="my_awesome_follower_arm",
)
follower = KochFollower(config)
follower.connect(calibrate=False)
follower.calibrate()
follower.disconnect()ほとんどのロボットについて、キャリブレーション方法を統一しました。そのため、このKochアームのキャリブレーション手順は、SO100およびSO101の手順と同じです。まず、各関節が可動範囲の中央にある位置にロボットを移動し、Enterキーを押します。次に、すべての関節を可動範囲全体にわたって動かします。SO101の同じプロセスの参考動画は、こちらで確認できます。
リーダー
リーダーアームのキャリブレーションには、同じ手順を実行し、以下のコマンドまたは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_armfrom lerobot.teleoperators.koch_leader import KochLeaderConfig, KochLeader
config = KochLeaderConfig(
port="/dev/tty.usbmodem575E0031751",
id="my_awesome_leader_arm",
)
leader = KochLeader(config)
leader.connect(calibrate=False)
leader.calibrate()
leader.disconnect()おめでとうございます🎉。ロボットがタスクを独自に学習する準備が整いました。このチュートリアルに従ってトレーニングを開始してください: 実世界のロボットで始める
Update on GitHubご質問やご支援が必要な場合は、Discordまでご連絡ください。