소프트웨어 설정

SDK 설치, SocketCAN 드라이버 구성, ROS2 통합, LeRobot 설정 및 Python API 참조. 새로운 Ubuntu 설치부터 실행 중인 암까지 모든 것.

섹션으로 이동:

1단계 - SDK 설치

SDK 설치

OpenArm SDK는 다음과 같이 배포됩니다. roboticscenter 파이썬 패키지. 그것은 다음을 포함합니다 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 ...

재부팅 후에도 지속되도록 설정

시스템 서비스 생성 또는 추가 /etc/rc.local. 참조 SocketCAN 설정 가이드 전체 시스템 서비스 템플릿의 경우.

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(HuggingFace 제공)은 OpenArm을 위한 기본 데이터 수집 및 정책 교육 프레임워크입니다. 에피소드 녹화, 데이터세트 형식화, ACT 및 확산 정책과의 직접 인터페이스를 처리합니다.

르로봇 설치

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 허브에 업로드

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

참조 데이터 수집 페이지 전체 에피소드 녹화 워크플로 및 품질 확인을 위해

5단계 - 파이썬 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()

내 제어 모드

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은 세 가지 시뮬레이션 환경을 지원합니다. 모두 실제 하드웨어와 동일한 상태 정의 및 작업 공간을 공유하므로 시뮬레이션에서 실제로의 전송이 가능합니다.

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

엔비디아 아이작 심

대규모 합성 데이터 생성을 위한 GPU 가속 시뮬레이션. NVIDIA GPU 및 Isaac Sim 라이선스가 필요합니다. 보다 데이터 중심 플랫폼 기사 Isaac Sim 구성 세부정보를 확인하세요.

시뮬레이션-실제 정렬 — 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 문제.

소프트웨어가 작동 중인가요? 데이터 수집을 시작하세요.

팔이 움직이면 다음 단계는 원격 조작과 데이터 세트 기록입니다.