OpenArm 101 セットアップ ガイド
開梱から AI でトレーニングされた最初のモーションまで、このパスに従ってください。 合計4~5時間程度かかります。
開梱と安全性チェック
⏱ ~30分始める前に
- 安定した面上に 1m × 1m のきれいな作業スペースがあることを確認してください。
- Ubuntu 22.04 を搭載したラップトップを用意します (VM は動作し、ネイティブが望ましい)
- 腕に力を入れたままにしてください オフ 以下の身体検査中に
イン・ザ・ボックス
検査チェックリスト
- 8 つのジョイントすべてが自由に回転します (研磨や抵抗なし)
- ケーブルの配線はアーム本体に沿ってそのままです
- 電源コネクタは損傷していません
- 非常停止装置はアクセス可能で機能的です
- アームに電力が供給されている間は、絶対に作業スペースに手を入れないでください
- ケーブルを調整したりハードウェアを変更したりする前に、必ず電源を切ってください。
- 動作中は子供やペットを近づけないでください
- 最初の実行前にベースを安定した面に固定してください
ソフトウェア環境と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 回限りの手順です。
各ジョイント (J1 ~ J8) の正規 ID 割り当てとして、以下の表を使用します。
| ジョイント | 送信機ID | 受信者ID |
|---|---|---|
| J1 | 0x01 | 0x11 |
| J2 | 0x02 | 0x12 |
| J3 | 0x03 | 0x13 |
| J4 | 0x04 | 0x14 |
| J5 | 0x05 | 0x15 |
| J6 | 0x06 | 0x16 |
| J7 | 0x07 | 0x17 |
| J8 | 0x08 | 0x18 |
ステップ 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.0 | 1Mビット/秒 | — | 8バイト |
| CANFD | 1Mビット/秒 | 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
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
--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')"
最初の動作
⏱ ~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 "{...}"
校正とホーミング
⏱ ~45分正確な制御のためには、ジョイントのゼロ位置が物理的現実と一致する必要があります。 ジョイントの調整が間違っていると、下流でポリシーが失敗する原因になります。この手順をスキップしないでください。
ホーミング手順
- アームを既知の安全な位置 (障害物から離れた、ほぼ伸ばした位置) に置いて電源を入れます。
- ホーミング スクリプトを実行します。
ros2 run openarm_ros2 homing - スクリプトにより、各ジョイントを手動でハードストップまでガイドするよう求められます。ゆっくりと移動してください。
- プロンプトが表示されたら、各ジョイントのゼロ位置が保存されていることを確認します
校正の検証
ros2 topic echo /joint_states # check all positions read near zero
遠隔操作
⏱ ~60分オペレータデバイスを選択してください
ウージハンド
器用さや細かい操作作業に最適
VRコントローラー
Meta Quest / Steam VR — 空間タスクに適しています
キーボード/ゲームパッド
基本的なテストと大まかな位置決め用
オペレータデバイスを接続する
ros2 launch openarm_ros2 teleop.launch.py operator:=wuji_hand
レイテンシの確認
目標のエンドツーエンド遅延は 50 ミリ秒未満です。 レイテンシ テストを実行して、次のことを確認します。
ros2 run openarm_ros2 latency_check
データ収集
⏱ 進行中データ形式の選択
- ルロボット (推奨) — 模倣学習とモデルトレーニング専用
- 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 — プラットフォームはそれらを対照学習またはフィルタリングに使用できます。
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 が実行されます。 構築したものをコミュニティと共有します。