Damiao AGV セットアップ ガイド

開封からブラウザからの操作まで。 開梱時の安全性、充電、ソフトウェア、遠隔操作、自律ナビゲーション、アームの取り付けについて説明します。

重機 - チームリフトが必要です。 Damiao AGV は、実質的なモバイル プラットフォームです。 箱から出して位置を変える場合は、必ず 2 人でリフトを使用してください。 初めて電源を入れる前に、作業スペースに全方向に少なくとも 2 m の隙間があることを確認してください。
1

開梱と安全性チェック

AGV を検査し、作業スペースを準備する

チームリフトが必要です。 2 人で AGV を輸送箱から持ち上げます。 決して車輪や突き出た電子機器を持たずに、シャーシの下側から持ち上げてください。 ブレーキを掛けた状態で (装備されている場合)、プラットフォームを平らで硬い表面に置きます。
  1. 梱包材を取り外します。 すべてのフォームインサート、ケーブルタイ、輸送用拘束具を慎重に取り外します。 ホイールに配送時の損傷がないかどうかを検査します。4 つのメカナム ホイールはすべて手で自由に回転するはずです。
  2. コネクタを検査します。 メイン コントローラーのすべてのケーブル コネクタがしっかりと固定されていることを確認します。 配送時の振動により、JST または Deans コネクタが緩む場合があります。
  3. ワークスペースのクリアランス。 電源を入れる前に、全方向に少なくとも 2 m の空きスペースを空けてください。 AGV は急速に加速するため、最初の動作テスト中は傍観者は下がってください。
  4. 緊急停止。 シャーシ上の主電源遮断スイッチを見つけます。 電源を入れる前に、そこに到達する方法を知ってください。 最初のセッションでは、常に片手をカットオフの近くに置いてください。
  5. 表面チェック。 メカナム ホイールが全方向に正しく動作するには、平らで硬い表面 (コンクリート、木の床、または滑らかなタイル) が必要です。 カーペットや凹凸のある表面では、横方向の制御力が大幅に低下します。
2

バッテリーの充電と電源投入

初めて使用する前にバッテリーパックを完全に充電してください

  1. 充電器を接続します。 AGV シャーシのバッテリー充電ポート (通常は大きなバレル コネクタまたは XT60 ポート) を見つけます。 付属のバランス充電器を接続します。 充電器を接地された 110/220V コンセントに差し込みます。
  2. フル充電してください。 初めて使用する前にバッテリーを完全に充電してください (初期状態に応じて通常 2 ~ 4 時間)。 完了すると、充電器の LED が緑色に変わります (または点滅が止まります)。 初回充電中はそばを離れないでください。
  3. バッテリー電圧を確認してください。 充電後、バッテリー電圧は公称完全充電レベルになるはずです (バッテリー パックのラベルを確認してください)。 マルチメーターまたはオンボードディスプレイが装備されている場合は、それを使用します。
  4. 電源投入シーケンス。 バッテリーをメインコントローラーに接続します。 主電源スイッチを切り替えます。 コントローラーは 5 ~ 10 秒以内に起動します。インジケーター LED が安定します。 起動中にモーションコマンドを送信しないでください。
LiPoバッテリーの安全性。 AGV が LiPo バッテリー パック (一般的) を使用している場合は、最小セル電圧 (通常 3.0V/セル) を下回って放電しないでください。 1 週間以上使用しない場合は、50% 充電した状態で保管してください。 膨らんだり損傷した LiPo は絶対に充電しないでください。
3

ソフトウェアと ROS2 ナビゲーション スタック

Python エージェントとオプションの ROS2 パッケージを PC にインストールします

dami_agent.py スクリプトは、Fearless Platform と AGV ハードウェア間の主要なブリッジです。 Python 3.8 以降と 2 つの pip パッケージが必要です。

# Install dependencies
pip install pyserial websockets

# Confirm your USB-to-TTL adapter appears
ls /dev/ttyUSB*   # Linux

# Add your user to the dialout group (Linux) if you get permission errors
sudo usermod -aG dialout $USER
# Log out and back in for group change to take effect

USB-to-TTL アダプターを配線します。アダプターの接続を行います。 TX AGV メインコントローラーのピンに接続 UART5_RX (PD2 ピン)。 GNDをGNDに接続します。 アダプタの RX ピンまたは 5V を AGV に接続しないでください。

ROS2 統合の場合は、ナビゲーション スタックをインストールします。

# ROS2 Humble (Ubuntu 22.04) — adjust for your distro
sudo apt install ros-humble-navigation2 ros-humble-nav2-bringup ros-humble-slam-toolbox
まずハードウェアを使用せずにテストします。 AGV に接続する前に、エージェントをモック モードで実行して完全なコマンド パイプラインを確認します。
python3 dami_agent.py --session RC-XXXX-XXXX --mock モックモードではシリアルポートのオープンをスキップします。 すべての WebSocket コマンドの解析、テレメトリ転送、およびタイムアウト安全ロジックは同様に実行されます。
4

遠隔操作

Fearless Platform を介してブラウザから AGV を駆動します

  1. 開ける platform.roboticscenter.aiをクリックして、「Teleop」セクションに移動し、新しいセッションを作成します。 セッション ID をコピーします (形式: RC-XXXX-XXXX).
  2. シリアル ポートとセッション ID を使用してエージェントを起動します。
    python3 dami_agent.py \
      --session RC-XXXX-XXXX \
      --serial-port /dev/ttyUSB0 \
      --backend ws://localhost:8000
  3. エージェントはプラットフォームに接続し、AGV ノードを device_type: "mobile_base"、制御ループを 30 Hz で開始します。
  4. ブラウザでセッション URL を開きます。 方向コントロールを使用して送信します move コマンド。 AGV は、1 制御ループ ティック (30 Hz で 33 ミリ秒) 以内に応答します。

エージェントが受け付けるコマンドの種類:

# Move forward along X axis
{"type": "move", "axis": "x", "dir": 1}

# Move laterally right (Y axis)
{"type": "move", "axis": "y", "dir": 1}

# Rotate counter-clockwise (Z axis)
{"type": "move", "axis": "z", "dir": -1}

# Stop all motion immediately
{"type": "stop"}

# Goal-based delta movement
{"type": "goal", "delta": {"x": 0.5, "y": 0.0, "yaw": 0.0}}

動作速度を調整するには、 --amp パラメータ (デフォルトは 660、推奨範囲は 500 ~ 760)。 値を大きくすると、動きが速くなります。

python3 dami_agent.py --session RC-XXXX-XXXX --serial-port /dev/ttyUSB0 --amp 500

AGV が間違った方向に移動する場合は、 --invert-x, --invert-y、 または --invert-z ファームウェアを変更せずに軸を反転します。

5

自律ナビゲーションのセットアップ

ROS2 nav2、SLAM、ウェイポイントフォローを設定する

自律ナビゲーションの場合は、走行距離とセンサー データ (LiDAR または AGV の深度カメラから) を ROS2 トピックに公開し、経路計画に nav2 を使用します。

# Launch SLAM Toolbox for mapping
ros2 launch slam_toolbox online_async_launch.py

# In a second terminal — launch nav2 with the AGV base footprint
ros2 launch nav2_bringup navigation_launch.py \
  params_file:=/path/to/your/agv_nav2_params.yaml

# Send a navigation goal via CLI
ros2 action send_goal /navigate_to_pose nav2_msgs/action/NavigateToPose \
  "{pose: {header: {frame_id: map}, pose: {position: {x: 1.0, y: 0.5}, orientation: {w: 1.0}}}}"

Damiao AGV 用に調整する主要な nav2 パラメータ:

  • ロボット半径 — AGV の半値幅に安全マージン (通常 0.4 ~ 0.6 m) を加えた値に設定します。
  • max_vel_x / max_vel_y — に基づいて設定します --amp 値と測定された最大速度。 控えめに開始します (0.3 m/s)。
  • max_vel_theta — 回転速度制限。 ゆっくり測ってください --amp 400 まずテストしてください。
  • ホロノミック — に設定します true DWB ローカル プランナーで横方向の動作計画を有効にします (メカナム/オムニ ホイールに必要)。
ナビゲーション中のテロップの安全性。 自律ナビゲーション テスト中は、Fearless Platform テレオペ パネルを開いたままにしてください。 エージェントの 300 ミリ秒のコマンド タイムアウトは、nav2 が目標の公開を停止すると、AGV が自動停止し、物理的な遮断スイッチに加えてソフトウェア レベルのセーフティ ネットを提供することを意味します。
6

ロボットアームの取り付け

OpenArm または DK1 をトッププレートにボルトで固定し、1 つのプラットフォーム セッションで両方を登録します

Damiao AGV のトップ プレートは、標準のロボット アーム ベース フランジを受け入れるように設計されています。 この手順では、物理的な統合と Fearless Platform のマルチノード セッションのセットアップについて説明します。

物理的な取り付け

  1. AGV とアームの電源を切ります 機械的な作業をする前に。
  2. ロボット アームのベース プレートを AGV のトップ プレートの取り付け穴の上に配置します。 付属のM6穴付ボルト(軽量アームの場合はM5)を使用してください。 すべてのファスナーにネジロック剤を塗布します。
  3. アームの電源ケーブルと CAN/USB ケーブルを、トップ プレートのケーブル管理チャネルを通して AGV シャーシ コンパートメントまで配線します。 ケーブルタイで固定します - 引っ張らずにアームの作業スペース全体に十分な余裕を持たせます。
  4. AGV シャーシ内の別個のバッテリーまたは安定化電源からアームに電力を供給します。 適切に絶縁せずに、AGV 駆動バッテリーをアーム コントローラーと共有しないでください。

マルチノードプラットフォームセッション

同じセッション ID を指す両方のエージェントを起動します。 これらは独立したノードとして登録され、プラットフォームは両方のストリームを同期的に記録します。

# Terminal 1 — AGV agent
python3 dami_agent.py \
  --session RC-XXXX-XXXX \
  --serial-port /dev/ttyUSB0 \
  --node-id damiao-base

# Terminal 2 — OpenArm agent (example)
python3 openarm_agent.py \
  --session RC-XXXX-XXXX \
  --can-interface can0 \
  --node-id openarm-right

Fearless Platform テレオペ パネルに、両方のノードが表示されます。 オペレータは、同じセッション内でモーション コマンドを AGV (x/y/z 軸) に送信し、アーム コマンドを個別に送信できます。 エピソードの記録では、すべてのノードのテレメトリが 1 つの JSONL アーカイブに取り込まれます。これには、タイムスタンプによって同期された、基本速度や腕の関節の位置を含む完全なモバイル操作の軌跡が含まれます。

こちらも参照してください。OpenArm 101 ハードウェア ハブ そして DK1 バイマニュアルキット ページにはアーム固有のセットアップ ガイドが含まれています。 上記の取り付け手順の前にアームのセットアップを完了してください。
7

CANバスとモーターの構成

CAN FD バスを構成し、AGV に取り付けられた Damiao アクチュエータのモーター ID を設定します。

OpenArm または DK1 アームが AGV のトップ プレートに取り付けられている場合、Damiao QDD モーターはオンボード コンピューターから CAN FD バスを介して通信します。 このセクションでは、バスの立ち上げ、モーター ID の割り当て、コミッショニング コマンド、および LED 診断について説明します。

AGV ドライブトレインとアームモーターの比較。 AGV の動作は、CAN ではなく UART5/DBUS 経由で制御されます。 ここで説明する CAN FD バスは、AGV に搭載されたロボット アーム ペイロード内の Damiao QDD モーター専用です。 AGV ドライブトレイン コントローラーに CAN フレームを送信しないでください。

can-utils をインストールする

# Install SocketCAN utilities (Ubuntu / Debian)
sudo apt update && sudo apt install -y can-utils

CAN FD インターフェイスを起動する

公称 1 Mbit/s + 5 Mbit/s データの CAN FD が、すべての新規展開に推奨されるモードです。

# Bring interface down first if already up
sudo ip link set can0 down

# Configure CAN FD: 1M nominal baud, 5M data baud, FD mode enabled
sudo ip link set can0 type can bitrate 1000000 dbitrate 5000000 fd on

# Bring interface up
sudo ip link set can0 up

# Verify — output should show "fd on"
ip link show can0

OpenArm PPA がインストールされている場合、ヘルパー スクリプトは次のコマンドをラップします。

# CAN FD single arm
openarm-can-configure-socketcan can0 -fd -b 1000000 -d 5000000

# Classic CAN 2.0 (legacy / compatibility)
openarm-can-configure-socketcan can0

バスを監視する

# Dump all CAN frames — verify connectivity before sending commands
candump -x can0

# Dump with timestamps
candump -td can0

モーター ID の割り当て (J1 ~ J8)

CAN バス上の各 Damiao モーターには、送信機 ID (ホスト → モーター) と受信機 ID (モーター → ホスト) という固有の ID ペアが必要です。 ID は、アームを組み立てる前に、Damiao Windows デバッグ ツールを使用して設定されます。 標準 OpenArm マッピング:

ジョイント モーター型式 TX ID (ホスト→モーター) RX ID (モーター→ホスト)
J1 — ベース回転DM-J4340p-2EC0x010x11
J2 — ショルダーピッチDM-J4340p-2EC0x020x12
J3 — ショルダーロールDM-J4340p-2EC0x030x13
J4 — 肘のピッチDM-J4340-2EC0x040x14
J5 — エルボーロールDM-J4340-2EC0x050x15
J6 — 手首のピッチDM-J4340-2EC0x060x16
J7 — リストロールDM-J4310-2EC V1.10x070x17
J8 — グリッパーDM-J4310-2EC V1.10x080x18

ID はグローバルではなく、CAN バスごとに一意です。 両手セットアップ (2 つのアーム) は 2 番目のバスを使用します。 can1 — 同じ ID スキームを使用します。

テストコマンドを送信できます

使用 cansend 低レベルの試運転用。 交換する 001 ターゲット ジョイントの 16 進数の TX ID を使用します (例: 002 J2の場合)。

## CAN FD commands (use when interface has "fd on")

# Enable motor — motor holds position and accepts commands
cansend can0 001##1FFFFFFFFFFFFFFFC

# Disable motor — motor becomes free-wheeling
cansend can0 001##1FFFFFFFFFFFFFFFD

# Clear motor error — required before re-enabling after a fault
cansend can0 001##1FFFFFFFFFFFFFFFB

## CAN 2.0 equivalents (use when interface is classic CAN, no fd on)
cansend can0 001#FFFFFFFFFFFFFFFC   # Enable
cansend can0 001#FFFFFFFFFFFFFFFD   # Disable
cansend can0 001#FFFFFFFFFFFFFFFB   # Clear error
フレーム タイプをバス モードに一致させます。 を使用します。 ##1 インターフェイスが次のように構成されている場合の CAN FD 構文 fd on、そしてシングル # CAN 2.0 の古典的な構文。 同じバス上でフレーム タイプを混在させると、バス エラーが発生します。

LEDステータスインジケーター

各 Damiao モーターには、ハウジングの窓から見える 1 つのオンボード LED があります。

LEDパターン 必要なアクション
緑色(点灯) モーターが有効になり準備完了 なし - モーターはアクティブであり、コマンドを受け入れています
赤(点灯) モーターが無効になっています (電源が入っていますが、有効ではありません) Enableコマンドを送信してモーターをアクティブにします
赤(点滅) モーターの故障/エラー状態 Clear Errorコマンドを送信し、原因を調査してから再度有効にします

一般的な障害の原因: 過電流 (ゲインまたは負荷の低下)、過熱 (冷却を可能にする)、エンコーダ エラー (ケーブルを取り付け直す)、不足電圧 (24 V システムで ~18 V 未満の供給)、CAN バスオフ (終端と配線を確認する)。

フラッシュ書き込み警告

フラッシュ書き込み制限: モーターあたり最大 10,000 サイクル。 モーターIDとパラメータの保存には内蔵フラッシュメモリを使用します。 CAN ID とキャリブレーションパラメータを設定する 一度 試運転中は永久に放置してください。 ランタイムパラメータの変更は、 --flash フラグは RAM のみに移動し、フラッシュ サイクルを消費しません。 モーターパラメータを繰り返し再フラッシュするスクリプトは避けてください。
ID を構成するには、Damiao Windows ツールが必要です。 CAN ID は次を使用して設定する必要があります Debugging_Tools_v.1.6.8.8.exe — ID の衝突を避けるため、一度に接続するモーターは 1 つだけにしてください。 見る 完全なモーターリファレンス 段階的な手順については。
完全な仕様を表示 → よくある質問とコミュニティ → 開発者ウィキ→

助けが必要ですか?

コミュニティに質問するか、次の出力を添えて SVRC サポートに連絡してください。 dami_agent.py --mock およびシリアルポートのパス。