ソフトウェアのセットアップ

SDK のインストール、SocketCAN ドライバーの構成、ROS2 の統合、LeRobot のセットアップ、Python API リファレンス。 Ubuntuの新規インストールからアームの実行まで、すべて。

セクションにジャンプします:

ステップ 1 — SDK のインストール

SDKのインストール

OpenArm SDK は次のように配布されます。 roboticscenter Python パッケージ。 それには以下が含まれます openarm_can (低レベル CAN インターフェイス ライブラリ) およびすべてのサポート ユーティリティ。

仮想環境を作成する (推奨)

python3 -m venv ~/.venvs/openarm
source ~/.venvs/openarm/bin/activate

SDKをインストールする

pip install roboticscenter

インストールを確認する

python3 -c "import openarm_can; print(openarm_can.__version__)"

バージョン文字列が表示されるはずです。 インポート エラーが発生した場合は、 トラブルシューティングセクション.

ソースからインストールする (オプション)

git clone https://github.com/reazon-research/openarm.git
cd openarm
pip install -e .
ステップ 2 — CAN ドライバーのセットアップ

SocketCAN ドライバーのセットアップ

OpenArm は、Linux カーネル サブシステムである SocketCAN を使用して CAN バス経由で通信します。 ドライバーはすでにカーネルに組み込まれています。 モジュールをロードしてインターフェイスを起動するだけです。

カーネルモジュールをロードする

sudo modprobe can
sudo modprobe can_raw
sudo modprobe slcan   # for USB-serial CAN adapters (CANable)

CANインターフェースを立ち上げる

付属の CANable 2.0 USB アダプタの場合:

# Find the USB serial device (usually /dev/ttyACM0 or /dev/ttyUSB0)
ls /dev/ttyACM*

# Bring up CAN interface at 1 Mbps
sudo slcand -o -c -s8 /dev/ttyACM0 can0
sudo ip link set up can0

インターフェイスが稼働していることを確認します

ip link show can0
# Expected output: can0: <NOARP,UP,LOWER_UP> mtu 16 ...

再起動後も永続的にする

systemd サービスを作成するか、それに追加します /etc/rc.local。 を参照してください。 SocketCAN セットアップガイド 完全な systemd サービス テンプレートの場合。

CAN通信のテスト

# Install can-utils
sudo apt install can-utils -y

# Listen for CAN packets
candump can0

# In another terminal, power on the arm and look for motor heartbeats
ステップ 3 — ROS2 の統合

ROS2の統合

OpenArm には同梱されています openarm_ros2、完全な ros2_control ベースのパッケージ。 物理的なアームを使用せずにテストするための疑似ハードウェア モードをサポートしています。

ROS2 Humble をインストールする (Ubuntu 22.04)

sudo apt update && sudo apt install software-properties-common curl -y
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | \
  sudo apt-key add -
sudo sh -c 'echo "deb http://packages.ros.org/ros2/ubuntu $(lsb_release -cs) main" \
  > /etc/apt/sources.list.d/ros2.list'
sudo apt update
sudo apt install ros-humble-desktop ros-humble-ros2-control \
  ros-humble-ros2-controllers ros-humble-joint-state-publisher-gui -y

openarm_ros2 をクローンしてビルドする

mkdir -p ~/openarm_ws/src && cd ~/openarm_ws/src
git clone https://github.com/reazon-research/openarm_ros2.git
cd ~/openarm_ws
source /opt/ros/humble/setup.bash
colcon build --symlink-install

偽のハードウェア モードで起動します (アームは必要ありません)

source ~/openarm_ws/install/setup.bash
ros2 launch openarm_ros2 openarm.launch.py use_fake_hardware:=true

実際のハードウェアで起動する

ros2 launch openarm_ros2 openarm.launch.py \
  use_fake_hardware:=false \
  can_interface:=can0

テストモーションコマンドを送信する

ros2 topic pub /joint_trajectory_controller/joint_trajectory \
  trajectory_msgs/msg/JointTrajectory \
  '{joint_names: ["joint1"], points: [{positions: [0.5], time_from_start: {sec: 2}}]}'

を参照してください。 ROS2 コントロールガイド コントローラーの完全な設定、起動ファイルのオプション、軌道の調整を行います。

ステップ 4 — LeRobot の統合

ルロボットの統合

LeRobot (HuggingFace 製) は、OpenArm の主要なデータ収集およびポリシー トレーニング フレームワークです。 エピソードの記録、データセットのフォーマットを処理し、ACT および拡散ポリシーと直接連携します。

LeRobot をインストールする

pip install lerobot

ロボットを構成する

OpenArm用のロボット構成ファイルを作成します。 LeRobot は、YAML ベースのロボット構成を使用します。

# ~/.lerobot/robots/openarm.yaml
robot_type: openarm
can_interface: can0
num_joints: 8
camera_names:
  - wrist_cam
  - overhead_cam

データセットを記録する

python -m lerobot.scripts.control_robot \
  --robot.type=openarm \
  --control.type=record \
  --control.fps=30 \
  --control.repo_id=your-username/openarm-pick-place \
  --control.num_episodes=50 \
  --control.single_task="Pick up the red cube"

HuggingFace Hub にアップロードする

huggingface-cli login
python -m lerobot.scripts.push_dataset_to_hub \
  --repo_id=your-username/openarm-pick-place

を参照してください。 データ収集ページ 全エピソードの録画ワークフローと品質チェックについては、こちらをご覧ください。

ステップ 5 — Python API

Python API クイックスタート

openarm_can ライブラリは、SocketCAN 経由で 8 つのジョイントすべてに直接低レベル アクセスを提供します。 基本的な制御にROS2は必要ありません。

基本的な関節制御

from openarm_can import OpenArm

# Connect to the arm
arm = OpenArm(can_interface="can0")
arm.connect()

# Enable all joints
arm.enable_all()

# Move joint 1 to 45 degrees (in radians: ~0.785)
arm.set_position(joint_id=1, position=0.785, kp=50, kd=1)

# Read current state
state = arm.get_state()
print(f"Joint positions: {state.positions}")
print(f"Joint velocities: {state.velocities}")
print(f"Joint torques: {state.torques}")

# Zero torque (safe shutdown)
arm.disable_all()
arm.disconnect()

MY制御モード

from openarm_can import OpenArm, MITCommand

arm = OpenArm(can_interface="can0")
arm.connect()
arm.enable_all()

# Send a MIT control command: position + velocity + torque feedforward
cmd = MITCommand(
    joint_id=1,
    position=0.5,      # rad
    velocity=0.0,      # rad/s
    kp=80.0,           # position gain
    kd=2.0,            # velocity gain
    torque_ff=0.0      # feedforward torque (Nm)
)
arm.send_mit_command(cmd)

arm.disable_all()
arm.disconnect()

センサーデータをループで読み取る

import time
from openarm_can import OpenArm

arm = OpenArm(can_interface="can0", control_rate_hz=500)
arm.connect()
arm.enable_all()

for _ in range(1000):  # 2 seconds at 500 Hz
    state = arm.get_state()
    print(state.positions)
    time.sleep(1 / 500)

arm.disable_all()
arm.disconnect()
オプション - シミュレーション

シミュレーションのサポート

OpenArm は 3 つのシミュレーション環境をサポートします。 すべては実際のハードウェアと同一の状態定義とアクション空間を共有し、sim-to-real の転送を可能にします。

ROS2 フェイク ハードウェア (内蔵 - インストール不要)

物理的な腕を使わずにソフトウェアをテストする最速の方法。 状態は実際のハードウェア インターフェイスを反映します。

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

ムジョコ

校正された物理モデル。 ポリシーのトレーニングやシミュレーションからリアルへの転送に最適です。

pip install mujoco
# Clone the OpenArm MuJoCo model
git clone https://github.com/reazon-research/openarm_mujoco.git
# Run the default sim
python openarm_mujoco/examples/run_sim.py

NVIDIA アイザック シム

大規模な合成データ生成のための GPU 高速化シミュレーション。 NVIDIA GPU と Isaac Sim ライセンスが必要です。 見る データ中心のプラットフォームに関する記事 Isaac Sim の構成の詳細については、

Sim と Real の調整 — OpenArm のシミュレーション モデルは、実際のハードウェアの運動学、ダイナミクス、作動限界を反映しています。 これは、シミュレーションでポリシーをトレーニングし、最小限のチューニングで実際のハードウェアに直接展開できることを意味します。

トラブルシューティング

よくある問題トップ 3

エラー1 CAN インターフェースが見つかりません: no such device can0

SocketCAN インターフェイスが起動していません。 これはほとんどの場合、USB CAN アダプタが接続されていないか、カーネル モジュールがロードされていないことが原因です。

修理:

# 1. Check if the USB adapter is detected
lsusb | grep -i "can\|serial"

# 2. Load the modules
sudo modprobe can && sudo modprobe can_raw && sudo modprobe slcan

# 3. Bring up the interface
sudo slcand -o -c -s8 /dev/ttyACM0 can0
sudo ip link set up can0

# 4. Verify
ip link show can0
エラー2 関節が反応しない arm.enable_all()

モーターがコマンドを受信して​​いません。 最も一般的な原因は、間違った CAN ID、CAN バス エラー フレーム、または不十分な電源供給です。

修理:

# 1. Check for CAN error frames
candump can0 | grep -i "error"

# 2. Check power supply — arm requires 24V @ 150W minimum
# Voltage sag under load causes motor timeouts

# 3. Verify motor CAN IDs match your config
python3 -c "from openarm_can import OpenArm; a=OpenArm('can0'); a.scan_motors()"

# 4. Reset the arm (power cycle) and retry
エラー3 ROS2 の起動が失敗します: controller_manager not found

ros2_control パッケージがインストールされていないか、ワークスペースが正しく調達されていません。

修理:

# 1. Install missing packages
sudo apt install ros-humble-ros2-control \
  ros-humble-ros2-controllers \
  ros-humble-joint-state-publisher-gui -y

# 2. Rebuild the workspace
cd ~/openarm_ws && colcon build --symlink-install

# 3. Source both ROS2 and your workspace (order matters)
source /opt/ros/humble/setup.bash
source ~/openarm_ws/install/setup.bash

# 4. Retry launch
ros2 launch openarm_ros2 openarm.launch.py use_fake_hardware:=true

まだ行き詰まっていますか? で質問してください オープンアーム フォーラム または既存のものを確認してください GitHubの問題.

ソフトウェアは動作していますか? データの収集を開始します。

アームが動いたら、次のステップは遠隔操作とデータセットの記録です。