あなたが達成すること

この単元の最後には、OpenArm SDK がインストールされた Python 仮想環境が完成し、5 行のテスト スクリプトを実行すると次の結果が返されます。 True から arm.ping()。 この確認は、Python コードに腕へのライブ通信チャネルがあることを意味します。これが、ユニット 3 ~ 6 のすべての構築の基礎となります。

SDK のインストールと構成に関する完全なドキュメントは次の場所にあります。 ハードウェア/オープンアーム/ソフトウェア。 このユニットは、必要なコンテキストを使用して処理をフレーム化し、最も一般的な障害モードをカバーします。

SDKをインストールする

作業を進めてください ソフトウェアセットアップガイド 完全な SDK インストール用。 短いバージョン:

# Create an isolated environment for this path python3 -m venv ~/openarm-env ソース ~/openarm-env/bin/activate # Install the SDK and its dependencies pip install openarm-sdk lerobot torch torchvision

インターネット接続に応じて、インストールには 5 ~ 15 分かかります。 の torch そして lerobot パッケージは大きいですが、ユニット 4 と 5 で必要になるため、今すぐインストールしてください。

簡単な Python 接続テスト

ROS 2 を (ユニット 1 から) 実行し、仮想環境をアクティブにして、このテストを実行します。 これは、完全なスタックがエンドツーエンドで動作していることを確認する最も速い方法です。

# Make sure ROS 2 is running first (from a separate terminal) # source ~/openarm_ws/install/setup.bash && ros2 launch openarm_bringup real.launch.py openarm から OpenArm をインポート アーム = OpenArm() # connects via ROS 2 action server print(arm.ping()) # should print: True print(arm.get_joints()) # should print: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0] arm.close()

もし arm.ping() 返品 True そして arm.get_joints() 現在の関節角度を返したら完了です。 エラーが発生した場合のみ、トラブルシューティングのセクションに進んでください。

トラブルシューティング: 最も一般的な 3 つの接続エラー

エラー 1: ConnectionRefusedError またはタイムアウト OpenArm()

ROS 2 が実行されていないか、アクション サーバーがまだ起動していません。 それを確認してください ros2 node list ショー /openarm_controller。 そうでない場合は、ROS 2 ターミナルに戻り、起動がエラーなく完了したことを確認します。 一般的な副次的原因: 起動前にワークスペースを調達するのを忘れた - ユニット 1 の重要なステップ 2 を参照してください。

エラー 2: can0: Network is down ROS2ターミナル内

SocketCAN インターフェースがドロップされました。 この問題は、USB-CAN アダプタを再実行せずに USB-CAN アダプタを取り外して再接続した場合に発生します。 ip link set 指示。 走る sudo ip link set can0 up type can bitrate 1000000、ROS 2 の起動を再開します。 このコマンドを起動スクリプトに追加して、起動時に自動的に実行されるようにします。 sudo nano /etc/network/interfaces.d/can0.

エラー 3: arm.get_joints() アームがホームに戻っていない場合でも、すべて 0 を返します

これはエラーではありません。腕を意味します。 結合状態を報告していますが、キャリブレーションが完了していない可能性があります。 腕が物理的にゼロのポーズにある場合、ゼロは正しいです。 腕の角度が異なっていてもゼロが報告される場合は、Web UI からキャリブレーションを再実行します (ユニット 1、重要なステップ 4)。 ジョイント エンコーダは、絶対位置を確立するためにホーミング シーケンスを必要とします。

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

arm.ping() 返品 True Python ターミナルで。 テスト スクリプトは最初から最後までエラーなしで実行されます。 腕を物理的に動かすと、関節角度の値がリアルタイムで変化するのを確認できます。 arm.get_joints() ループ内でポーリングされます。 ユニット 3 の準備が整いました。