OpenArm 101 セットアップ ガイド

開梱から AI でトレーニングされた最初のモーションまで、このパスに従ってください。 合計4~5時間程度かかります。

ステップ 1/7
1

開梱と安全性チェック

⏱ ~30分
⚠️
最初に安全ガイドラインをお読みください 読んでください 完全な安全ガイドライン 電源を入れる前に。 電源が入っている間は、絶対に作業スペースに手を入れないでください。 ケーブルを調整する前に必ず電源を切ってください。

始める前に

  • 安定した面上に 1m × 1m のきれいな作業スペースがあることを確認してください。
  • Ubuntu 22.04 を搭載したラップトップを用意します (VM は動作し、ネイティブが望ましい)
  • 腕に力を入れたままにしてください オフ 以下の身体検査中に

イン・ザ・ボックス

OpenArm 101 アームユニット
電源(DC24V)
CAN USBアダプター
取り付け金具
クイックスタートカード

検査チェックリスト

  • 8 つのジョイントすべてが自由に回転します (研磨や抵抗なし)
  • ケーブルの配線はアーム本体に沿ってそのままです
  • 電源コネクタは損傷していません
  • 非常停止装置はアクセス可能で機能的です
⚠️
安全規則
  • アームに電力が供給されている間は、絶対に作業スペースに手を入れないでください
  • ケーブルを調整したりハードウェアを変更したりする前に、必ず電源を切ってください。
  • 動作中は子供やペットを近づけないでください
  • 最初の実行前にベースを安定した面に固定してください
2

ソフトウェア環境とCAN構成

⏱ ~60分

システム要件

  • Ubuntu 22.04 LTS (推奨) または 20.04
  • Python 3.10+
  • ROS2 ハンブル
  • USB-CAN アダプタ (CANable または互換性 - 完全な 5 Mbit/s データ レートの CAN FD をサポートする必要があります)

ステップ 2a — モーター ID の構成

ソフトウェアをセットアップする前に、各DamiaoモーターにCAN IDを割り当てる必要があります。 これは、Damiao USB CAN デバッガーを使用して Windows 上で実行される 1 回限りの手順です。

Damiao デバッグ ツール (Windows): ダウンロード Debugging_Tools_v.1.6.8.8.exe 各モーターの送信機と受信機の ID を設定するために使用します。 チェーン接続する前に、必ず一度に 1 つのモーターをテストしてください。

各ジョイント (J1 ~ J8) の正規 ID 割り当てとして、以下の表を使用します。

ジョイント 送信機ID 受信者ID
J10x010x11
J20x020x12
J30x030x13
J40x040x14
J50x050x15
J60x060x16
J70x070x17
J80x080x18

ステップ 2b — OpenArm パッケージをインストールする

Ubuntu マシンに、公式 OpenArm PPA から必要なパッケージをすべてインストールします。

sudo apt install -y software-properties-common
sudo add-apt-repository -y ppa:openarm/main
sudo apt update
sudo apt install -y \
  can-utils \
  iproute2 \
  libeigen3-dev \
  libopenarm-can-dev \
  liborocos-kdl-dev \
  liburdfdom-dev \
  liburdfdom-headers-dev \
  libyaml-cpp-dev \
  openarm-can-utils

ステップ 2c — CAN インターフェイス (CAN FD) のセットアップ

OpenArm モーターは CAN 2.0 と CAN FD の両方をサポートします。 CAN FDを推奨します — データフェーズを 5 Mbit/s で実行し、Damiao モーターの全帯域幅に必要な最大 64 バイトのペイロードをサポートします。

モード 公称ボー データボー ペイロード
CAN2.01Mビット/秒8バイト
CANFD1Mビット/秒5Mビット/秒最大64バイト

推奨 - OpenArm ヘルパーを使用します。

# CAN FD, 1M nominal / 5M data (recommended for single arm)
openarm-can-configure-socketcan can0 -fd -b 1000000 -d 5000000

# CAN 2.0 fallback (1M baud, no FD)
openarm-can-configure-socketcan can0

# 4-arm bimanual setup (can0–can3)
openarm-can-configure-socketcan-4-arms -fd

# Verify the interface is UP
ip link show can0

手動 IP リンク コマンド (ヘルパーを使用しない場合):

# CAN 2.0
sudo ip link set can0 down
sudo ip link set can0 type can bitrate 1000000
sudo ip link set can0 up

# CAN FD — 1M nominal / 5M data
sudo ip link set can0 down
sudo ip link set can0 type can bitrate 1000000 dbitrate 5000000 fd on
sudo ip link set can0 up
アームごとに 1 つの CAN ポート。 シングルアームセットアップでは、 can0。 両面手動セットアップでは、 can0 (右リーダー) + can1 (左リーダー) + can2 (右フォロワー) + can3 (左のフォロワー)。

ステップ 2d — モーター制御コマンドとデバッグ

これらを使用してください cansend 低レベルのデバッグ用のコマンド。 コマンドを送信する前に、まずバスを監視します。

# Monitor all CAN frames
candump -x can0

# Change motor baudrate (replace 1 with target motor CAN ID)
openarm-can-change-baudrate --baudrate 5000000 --canid 1 --socketcan can0
# Persist across power cycles (max ~10,000 flash writes per motor — use sparingly)
openarm-can-change-baudrate --baudrate 5000000 --canid 1 --socketcan can0 --flash

CAN 2.0モーター制御 - 交換する 001 上の表のターゲット ジョイントのトランスミッター ID と置き換えます。

# Clear motor error
cansend can0 001#FFFFFFFFFFFFFFFB
# Enable motor
cansend can0 001#FFFFFFFFFFFFFFFC
# Disable motor
cansend can0 001#FFFFFFFFFFFFFFFD

CAN FDモーター制御 — 余分な点に注意してください #1## (BRS フラグ):

# Clear motor error
cansend can0 001##1FFFFFFFFFFFFFFFB
# Enable motor
cansend can0 001##1FFFFFFFFFFFFFFFC
# Disable motor
cansend can0 001##1FFFFFFFFFFFFFFFD
⚠️
一度に 1 つのモーターをテストする 初めてコミッショニングするときは、CAN バス上でデイジーチェーン接続する前に、各モーターを個別に接続してテストします。 これにより、ID の競合と配線障害が分離されます。 の --flash フラグはボーレートの変更を保持します。各モーターは最大約 10,000 のフラッシュ書き込みサイクルをサポートします。

モーター LED ステータス

各 Damiao モーターには、現在の状態を示す LED が搭載されています。 これを電源投入後の簡単なヘルスチェックとして使用します。

LEDパターン 意味
緑色(点灯)モーターが有効になり準備完了
赤(点灯)モーターが無効になっています
赤(点滅)モーターエラー状態 — 再度有効にする前にエラークリアコマンドを送信してください

ステップ 2e — ROS2 パッケージをインストールする

sudo apt install ros-humble-ros2-control ros-humble-ros2-controllers
git clone https://github.com/enactic/openarm_ros2
cd openarm_ros2 && colcon build

Python SDKをインストールする

pip install roboticscenter
python -c "import roboticscenter; print('SDK ready')"
3

最初の動作

⏱ ~30分

偽のハードウェアで開始 (安全 - 物理的な移動なし)

実際のアームを動かす前に必ずシミュレーションで確認してください。 起動ファイルを実行します use_fake_hardware:=true — CAN 接続は必要ありません:

ros2 launch openarm_ros2 openarm.launch.py use_fake_hardware:=true
ros2 run openarm_ros2 test_trajectory

RViz を開いて、シミュレートされたアームがテスト軌道を正しく移動することを確認します。 8 つのジョイントすべてがスムーズにアニメーションするはずです。

実ハードウェアに切り替える

シミュレーションが正しく表示されたら、CAN アダプターを接続し、アームの電源をオンにします。

ros2 launch openarm_ros2 openarm.launch.py

最初の動作コマンドの送信(ホームポジション)

ros2 action send_goal /joint_trajectory_controller/follow_joint_trajectory \
  control_msgs/action/FollowJointTrajectory "{...}"
⚠️
最初の実際の走行では、非常停止に手を置いたままにしてください。 アームがホームポジションに移動します。 動作がおかしいと思われる場合は、すぐに停止できるようにしてください。
4

校正とホーミング

⏱ ~45分

正確な制御のためには、ジョイントのゼロ位置が物理的現実と一致する必要があります。 ジョイントの調整が間違っていると、下流でポリシーが失敗する原因になります。この手順をスキップしないでください。

ホーミング手順

  1. アームを既知の安全な位置 (障害物から離れた、ほぼ伸ばした位置) に置いて電源を入れます。
  2. ホーミング スクリプトを実行します。
    ros2 run openarm_ros2 homing
  3. スクリプトにより、各ジョイントを手動でハードストップまでガイドするよう求められます。ゆっくりと移動してください。
  4. プロンプトが表示されたら、各ジョイントのゼロ位置が保存されていることを確認します

校正の検証

ros2 topic echo /joint_states  # check all positions read near zero
期待される結果: アームが基準ポーズにあるとき、すべてのジョイント位置はゼロから ±0.05 rad 以内に表示される必要があります。 偏差が大きい場合は、ジョイントまたはエンコーダの問題が欠落していることを示します。そのジョイントに対してホーミング手順を繰り返します。
5

遠隔操作

⏱ ~60分

オペレータデバイスを選択してください

VRコントローラー

Meta Quest / Steam VR — 空間タスクに適しています

キーボード/ゲームパッド

基本的なテストと大まかな位置決め用

オペレータデバイスを接続する

ros2 launch openarm_ros2 teleop.launch.py operator:=wuji_hand

レイテンシの確認

目標のエンドツーエンド遅延は 50 ミリ秒未満です。 レイテンシ テストを実行して、次のことを確認します。

ros2 run openarm_ros2 latency_check
レイテンシが高い? USB-CAN アダプターのパフォーマンスはさまざまです。 遅延が 80 ミリ秒を超える場合は、別の USB ポート (USB 3.0 を推奨) を試すか、バックグラウンド プロセスを減らすか、ネイティブ CAN インターフェイスに切り替えてください。
6

データ収集

⏱ 進行中

データ形式の選択

  • ルロボット (推奨) — 模倣学習とモデルトレーニング専用
  • RLDS — Open-X-Embodimentおよびクロスロボットデータセットと互換性があります

録音を開始する

ros2 launch openarm_ros2 record.launch.py \
  output_format:=lerobot \
  task_name:=pick_and_place \
  episode_id:=0

各エピソードは、ジョイントの状態、カメラ フレーム、アクション ラベルを含む自己完結型のファイルとして保存されます。 複数のエピソードを実行し、SVRC プラットフォームを使用してレビューとフィルタリングを行います。

エピソードの品質チェックリスト

  • カメラ フィードは同期されています (タイムスタンプは 5 ミリ秒以内)。
  • 関節の状態は 50 Hz 以上で記録されます
  • アクションラベルは実証された動作と一致します
  • 失敗したエピソードは削除されず、除外対象としてマークされます
失敗エピソードを残しておく。 失敗したデモンストレーションには、堅牢性を学習するための有用な信号が含まれています。 でマークしてください is_failure:=true — プラットフォームはそれらを対照学習またはフィルタリングに使用できます。
7

AI モデルのトレーニングと導入

⏱ 進行中

OpenArm推奨モデル

  • ACT (アクションチャンキングトランスフォーマー) — ピックアンドプレイスに最適です。 カメラの観察からアクションチャンクを予測します。
  • 普及政策 — 接触が多いタスクに最適です。 ノイズ除去により滑らかな軌道を生成します。
  • OpenVLA — 言語条件付きのタスクに最適です。 視覚言語の理解とロボットの動作を組み合わせます。

データに基づいて ACT を微調整する

pip install lerobot
python train.py --config act_openarm --data-path ./recordings/

一般向け GPU (RTX 3090 以降) でのトレーニングには、通常、50 エピソードで 2 ~ 4 時間かかります。 を使用します。 --resume チェックポイントから続行するためのフラグ。

エッジに導入

ros2 launch openarm_ros2 inference.launch.py \
  model_path:=./checkpoints/best.pt

推論ノードはカメラ フレームを読み取り、モデルを実行し、制御周波数でジョイント コマンドを発行します。 リアルタイム制御のターゲット推論遅延は 20 ミリ秒未満です。

完全なセットアップ パスが完了しました。

OpenArm は調整され、遠隔操作され、データが収集され、AI が実行されます。 構築したものをコミュニティと共有します。

← OpenArm ハブに戻る フォーラムに行く 別の OpenArm を購入 →

助けが必要ですか?

OpenArm フォーラムは、コミュニティや SVRC チームからの回答を最も早く得ることができる場所です。