إعداد البرامج

تثبيت SDK، وتكوين برنامج تشغيل المقبس، وتكامل 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

إعداد برنامج تشغيل المقبس

يتصل OpenArm عبر ناقل CAN باستخدام المقبس CAN، وهو نظام فرعي لـ Linux kernel. برامج التشغيل موجودة بالفعل في النواة؛ كل ما عليك فعله هو تحميل الوحدات وإظهار الواجهة.

تحميل وحدات النواة

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. انظر دليل إعداد المقبس للحصول على قالب خدمة systemd الكامل.

اختبار يمكن الاتصال

# 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 وسياسة النشر.

تثبيت ليروبوت

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 - واجهة برمجة تطبيقات بايثون

بداية سريعة لواجهة برمجة تطبيقات بايثون

ال openarm_can توفر المكتبة وصولاً مباشرًا على مستوى منخفض إلى جميع المفاصل الثمانية عبر المقبس CAN. لا حاجة لـ 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 ثلاث بيئات محاكاة. تشترك جميعها في تعريفات الحالة ومساحات العمل المتطابقة مع الأجهزة الحقيقية، مما يتيح النقل من sim إلى حقيقي.

أجهزة ROS2 المزيفة (مدمجة - بدون تثبيت)

أسرع طريقة لاختبار البرمجيات بدون الذراع المادية. تعكس الحالة واجهة الأجهزة الحقيقية.

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

MuJoCo

نموذج الفيزياء معايرة. مثالية للتدريب على السياسات والتحويل من محاكاة إلى حقيقية.

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. يرى مقالة المنصة التي تركز على البيانات للحصول على تفاصيل تكوين إسحاق سيم.

محاذاة Sim-to-Real — تعكس نماذج محاكاة OpenArm حركيات الأجهزة الحقيقية وديناميكياتها وحدود التشغيل. وهذا يعني أنه يمكنك تدريب السياسة على المحاكاة ونشرها مباشرة على أجهزة حقيقية بأقل قدر من الضبط.

استكشاف الأخطاء وإصلاحها

أعلى 3 قضايا مشتركة

خطأ 1 لم يتم العثور على واجهة CAN: no such device can0

واجهة SwitchCAN ليست قيد التشغيل. يحدث هذا دائمًا تقريبًا بسبب عدم توصيل محول USB CAN، أو عدم تحميل وحدات kernel.

يصلح:

# 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 غير الصحيحة، أو إطار خطأ ناقل 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

لا تزال عالقة؟ اسأل على منتدى الذراع المفتوحة أو التحقق من الموجود قضايا جيثب.

عمل البرمجيات؟ ابدأ بجمع البيانات.

بمجرد تحريك الذراع، فإن الخطوة التالية هي التشغيل عن بعد وتسجيل مجموعة البيانات.