SDK インストールの完全なリファレンスは次の場所にあります。 ハードウェア/DK1/ソフトウェア。 この単元では、OpenArm に対して行ったシングルアーム SDK のインストールを超える、バイマニュアル固有の構成手順について説明します。

DK1 SDKをインストールする

DK1 SDK は OpenArm SDK とは別のものです。 OpenArm パッケージを使用して DK1 アームを実行しないでください。ファームウェア プロトコルが異なります。

# Create an isolated virtual environment for DK1 work python3 -m venv ~/dk1-env ソース ~/dk1-env/bin/activate # Install the DK1 SDK and bimanual extensions pip install dk1-sdk[バイマニュアル] # Verify the install python -c "dk1 をインポート; print(dk1.__version__)" # Expected: 0.4.0 or higher

リーダー/フォロワーのペアを構成する

SDK は、どのシリアル デバイスがリーダーで、どのデバイスが 2 つのフォロワー アームであるかを示す YAML 構成ファイルを読み取ります。 デバイス パスは正しい順序で指定する必要があります。SDK はロールの割り当てを自動検出しません。

# Generate the default bimanual config file dk1-config 生成 --mode bimanual --output ~/dk1-config.yaml # Open and edit the config — set your actual device paths nano ~/dk1-config.yaml

のキーフィールド dk1-config.yaml:

リーダー: デバイス: /dev/ttyUSB2 # the leader controller arm ボーレート: 1000000 フォロー左: デバイス: /dev/ttyUSB0 # left follower arm ボーレート: 1000000 フォロー右: デバイス: /dev/ttyUSB1 # right follower arm ボーレート: 1000000 同期: 周波数_hz: 50 # joint state sync rate latency_tolerance_ms: 5 # max allowed sync lag
デバイスパスの割り当て: 物理的な腕からのマッピング /dev/ttyUSBN USB ポートの順序によって異なり、再起動ごとに変わる可能性があります。 安定したエイリアスを作成するには、次を使用します。 udev デバイスのシリアル番号をキーとしたルール。 走る udevadm info /dev/ttyUSB0 各アームのシリアルを見つけてルールを作成するには /etc/udev/rules.d/99-dk1.rules。 これについては、次のサイトで詳しく説明されています。 ハードウェア/DK1/ソフトウェア.

Python 接続テスト - 両腕

構成を編集した後、3 つのデバイスすべてを同時に実行する接続テストを実行します。

dk1 から BimanualRobot をインポート robot = BimanualRobot(config_path="~/dk1-config.yaml") robot.connect() # Print joint states for both arms — should update at 50Hz range(10) 内の i の場合: 状態 = robot.get_joint_states() print(f"Left: {[f'{j:.2f}' for j in state.left]}") print(f"Right: {[f'{j:.2f}' for j in state.right]}") print("---") robot.disconnect()

実行が成功すると、一貫した安定した値を持つ 10 組のジョイント状態配列が出力されます。 NaN 値、タイムアウト エラー、またはアームごとのジョイント値が 6 未満である場合は、構成ファイル内のデバイス パスの割り当てを確認してください。

同期の検証

この単元で最も重要なチェックは、リーダーの動きが認識できるほどの遅延なく同期したフォロワーの応答を生成することを確認することです。

dk1 から BimanualRobot、LeaderFollowerSession をインポート robot = BimanualRobot(config_path="~/dk1-config.yaml") セッション = LeaderFollowerSession(ロボット) # Start the leader/follower sync loop # Move the leader arm slowly — both followers should mirror immediately session.start() input("停止するには Enter キーを押してください...") セッション.ストップ()

リーダー アームを 1 つのジョイント上で 30° の円弧を描くようにゆっくりと動かします。 両方の従動アームが目に見える遅延なく同時に動く必要があります。 1 つのフォロワーが他のフォロワーより 0.5 秒以上遅れている場合は、 latency_tolerance_ms 設定を変更し、スロー アームの USB 接続を確認します。

一般的なエラーと修正

エラー 原因 修理
SerialException: device not found 構成内のデバイス パスが間違っているか、USB が接続されていません 走る ls /dev/ttyUSB* そして構成パスを更新します。 物理的な USB 接続を確認します。
SyncTimeoutError: follower_right 右のフォロワーアームが遅延許容範囲内で応答しない 増加 latency_tolerance_ms 10 に変更するか、別の USB ポートを試してください。 ケーブルに損傷がないか確認してください。
接続後のジョイントの状態はすべてゼロになります サーボが有効になっていません - アームはスタンバイモードです 電話 robot.enable_servos() ジョイント状態を読み取る前に、または最初に Web UI 経由で有効にします。
1 つのフォロワーはミラー、もう 1 つは固定です リーダーは構成で 1 つのフォロワーとのみペアリングされます 両方を確認してください follower_left そして follower_right YAML 構成で設定されます。

ユニット 2 が完了したら...

DK1 SDK がインストールされており、 dk1.__version__ 0.4.0 以降を返します。 接続テストでは、50Hz で両アームの安定した関節状態の値が出力されます。 リーダー/フォロワー セッションを開始してリーダー アームを動かすと、両方のフォロワー アームが認識できる遅れなくその動きを反映します。 リーダー アーム上の少なくとも 3 つの異なる関節動作でこれを確認しました。