Damiao AGV コミュニティとよくある質問

DBUS プロトコル、ナビゲーション、トラブルシューティング、OpenArm によるモバイル操作に関するよくある質問。 フォーラムとサポートのリンク。

よくある質問

Damiao AGV の正確なシリアル ポート設定は何ですか?

AGV ファームウェアは、UART5 (ピン PD2、RX) をリッスンします。 100000 ボー、8 データ ビット、偶数パリティ、および 2 ストップ ビット (8E2)。 pyserial で、次のようにポートを開きます。

serial.Serial(
    port='/dev/ttyUSB0',
    baudrate=100000,
    bytesize=serial.EIGHTBITS,
    parity=serial.PARITY_EVEN,
    stopbits=serial.STOPBITS_TWO
)

非常によくある間違いは、8N1 (パリティなし、1 ストップ ビット) を使用することです。 AGV は接続しているように見えますが、すべてのフレームを無視または誤解析します。 常に使用する PARITY_EVEN そして STOPBITS_TWO.

18 バイトの DBUS フレームは速度をどのようにエンコードしますか?

DBUS フレームは、リトル エンディアン ビット パッキングを使用して、4 つの 11 ビット チャネル値 (ch0 ~ ch3) をバイト 0 ~ 5 にパックします。 各チャンネルの範囲は 0 ~ 2047 で、1024 が中心 (ニュートラル/ストップ) です。 速度マッピングは次のとおりです。 ch3 = 1024 + vx × amp (フォワード)、 ch2 = 1024 + vy × amp (横方向)、 ch0 = 1024 + (−vw) × amp (回転)。 バイト 6 ~ 15 はゼロ化されたマウス/キーボード フィールドです。 バイト 16 ~ 17 は ch4 を保持し、1024 に固定されています。を参照してください。 仕様 完全なチャネル マップ テーブルについては、

AGV が少し動いてから停止します。何が起こっているのでしょうか?

これはコマンドタイムアウト安全機能のトリガーです。 移動または停止コマンドを一定時間以内に受信しなかった場合 --cmd-timeout-ms (デフォルトは 300 ミリ秒)、エージェントはすべての速度チャネルを自動的にゼロにし、AGV が停止します。 これは通常、プラットフォームが十分な速度でコマンドを送信していないか、ネットワーク遅延によりギャップが発生していることを意味します。 解決策: (1) 増やす --cmd-timeout-ms 500 待ち時間の長い接続の場合、(2) ブラウザーのテロップ パネルがアクティブに繰り返し送信していることを確認します。 move 方向ボタンを押したままコマンドを約 10 Hz で実行します。(3) プラットフォームへのネットワーク RTT を確認します。

AGV が間違った方向に動く - どうすれば修正できますか?

エージェントで軸反転フラグを使用します。ファームウェアの変更は必要ありません。

# Flip forward/backward
python3 dami_agent.py --session RC-XXXX --serial-port /dev/ttyUSB0 --invert-x

# Flip lateral (left/right)
python3 dami_agent.py ... --invert-y

# Flip rotation direction
python3 dami_agent.py ... --invert-z

各軸を個別にテストして (X コマンドのみを送信し、動きを観察するなど)、物理的な設置方向にどのフラグが必要かを判断します。

物理的な AGV なしでテストできますか?

はい。 合格 --mock 起動時 dami_agent.py。 モック モードでは、シリアル ポートが開かれることはありません。 制御ループは依然として DBUS フレーム (メモリに保存されている) をエンコードし、テレメトリはプラットフォーム WebSocket に転送され、すべてのコマンド解析は同様に機能します。 これにより、ハードウェアを使用せずに完全な WebSocket パイプラインを検証し、プラットフォーム UI をテストし、CI に統合することができます。

python3 dami_agent.py --session RC-XXXX-XXXX --mock

起動時に pyserial.SerialException が発生します。何を確認すればよいですか?

初め: ls /dev/ttyUSB* アダプターが表示されることを確認します。 そうでない場合は、USB-to-TTL アダプター ドライバーがロードされていない可能性があります (別の USB ポートを試してください)。 ポートが表示されても権限エラーが発生する場合は、ユーザーをダイヤルアウト グループに追加します。

sudo usermod -aG dialout $USER
# Log out and back in, then retry

ポートがデバイスのリストに表示されているにもかかわらず、エージェントがまだそのポートを開けない場合は、別のプロセス (前のエージェント インスタンスやシリアル モニターなど) がそのポートを開いている可能性があります。 ポートを使用している他のプロセスをすべて閉じます。

エージェントは接続しましたが、プラットフォームにテレメトリが表示されません。何が問題なのでしょうか?

渡されたセッションIDを確認する --session プラットフォーム UI ではまだアクティブです。 セッションは非アクティブな場合に期限切れになる可能性があります。 エージェントの端末出力で登録ハンドシェイク応答を確認します。「ハンドシェイクに失敗しました」と出力されるか、「準備完了」が出力されない場合は、セッションが期限切れになっている可能性があります。 プラットフォームで新しいセッションを作成し、新しい ID をエージェントに渡します。 それも確認してください --backend 正しいプラットフォームの WebSocket URL を指します。

AGV の速度を調整するにはどうすればよいですか?

を調整します。 --amp パラメータ。 これにより、モーション コマンドを表す中心 (1024) からのチャネル オフセットが設定されます。 デフォルトは 660 で、最大速度の約 64% になります。 腕に取り付けた操作タスク中に、よりゆっくりとより制御された操作を行うには、次を使用します。 --amp 400。 オープンフロアで最高速度を得るには、最大速度を使用します。 --amp 900。 メカナムホイールは非常に高速になると横方向の効率がいくらか失われることに注意してください。 --amp 横方向の操作の場合は 800 未満。

OpenArm との統合に関するヒント

アームを取り付ける前にケーブルの配線を計画します。

アームをボルトで固定する前に、AGV の内部ケーブル管理チャネルを通してアームの CAN/USB ケーブルを配線します。 アームを一度取り付けると、アームを取り外さずにケーブルの配線を変更するのは困難です。 手首に 20 ~ 30 cm の余分なケーブルのたるみを残しておきます。アームの作業スペースは側面と背面に広がっており、ケーブルの張力によって関節の軌道に予期せぬ抵抗が生じる可能性があります。

アームが取り付けられていて動いているときは、より低い --amp を使用してください

AGV 上のロボット アームにより重心が上昇します。 急激な横方向の加速によりプラットフォームが揺れ、特にリーチが伸びた位置で腕の軌道に乱れが生じる可能性があります。 から始める --amp 400 腕操作時の基本動作に使用し、必要な場合にのみ増加させます。 遠隔操作データ収集の場合、一貫したゆっくりとした基本動作により、高速でぎくしゃくした動作よりもクリーンなトレーニング データが生成されます。

両方のエージェントを個別の --node-id 値で登録します

AGV エージェントと Arm エージェントを同じプラットフォーム セッションで同時に実行する場合は、それぞれに個別の --node-id。 これにより、プラットフォームが個別のテレメトリ ストリームを表示し、エピソード JSONL アーカイブが各ノードのデータに個別にラベルを付けることが保証されます。 推奨される命名規則: damiao-base AGV用と openarm-right / openarm-left アームノード用。

テロップでベースの動きと腕の動きを調整する

Fearless Platform テレオペ パネルでは、両方のノードが同時に表示されます。 便利な遠隔操作パターンは、ベースを停止し、アームを動かして掴み、ベースを移動して位置を変更し、これを繰り返すことです。 エピソード JSONL アーカイブは、タイムスタンプによってすべてのノードのテレメトリを同期的にキャプチャするため、ダウンストリーム ポリシーは完全なモバイル操作の軌跡から学習できます。 プラットフォームの記録マーカーを使用して、各エピソード内でベースの動きが腕の動きに移行する場所に注釈を付けることを検討してください。

接触が多いモバイル操作データ用に Paxini GEN3 センサーを追加

マウント パシーニ PX-6AX GEN3 OpenArm の指先またはエンドエフェクターにある触覚センサー。 センサー ブリッジを同じセッション内の 3 番目のノードとして登録します。 このプラットフォームは、触覚、腕の関節、および基本速度ストリームを同期的に記録し、行動の複製と強化学習のための豊富な接触認識型モバイル操作データセットを作成します。

フォーラムとサポート

ここで解決されていない質問がありますか? SVRC コミュニティに問い合わせるか、ハードウェア サポートにお問い合わせください。

フォーラムに移動 → サポートに問い合わせる→

モバイル操作システムを構築する準備はできていますか?

セットアップ ガイドに従って、アームを取り付け、プラットフォーム上で全身遠隔操作のデモンストレーションを開始します。