إعداد البرامج
تثبيت SDK، وتكوين برنامج تشغيل المقبس، وتكامل ROS2، وإعداد LeRobot، ومرجع Python API. كل شيء بدءًا من تثبيت Ubuntu الجديد وحتى ذراع التشغيل.
انتقل إلى القسم:
تثبيت 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 .
إعداد برنامج تشغيل المقبس
يتصل 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
التكامل 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 لتكوين وحدة التحكم الكاملة، وخيارات ملف التشغيل، وضبط المسار.
التكامل ليروبوت
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
انظر صفحة جمع البيانات لسير عمل تسجيل الحلقة الكاملة وفحوصات الجودة.
بداية سريعة لواجهة برمجة تطبيقات بايثون
ال 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 قضايا مشتركة
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
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
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
لا تزال عالقة؟ اسأل على منتدى الذراع المفتوحة أو التحقق من الموجود قضايا جيثب.