מדריך ההתקנה של OpenArm 101

עקוב אחר הנתיב הזה מ-Unboxing לתנועה הראשונה שלך המאומנת בבינה מלאכותית. לוקח בערך 4-5 שעות בסך הכל.

שלב 1 מתוך 7
1

ביטול ארגז ובדיקת בטיחות

⏱ ~30 דקות
⚠️
קרא תחילה את הנחיות הבטיחות קרא את הנחיות בטיחות מלאות לפני ההפעלה. לעולם אל תושיט יד אל סביבת העבודה כאשר הוא מופעל. כבה תמיד לפני כוונון הכבלים.

לפני שאתה מתחיל

  • ודא שיש לך מרחב עבודה ברור של 1 מ' × 1 מ' על משטח יציב
  • החזיק מחשב נייד עם אובונטו 22.04 מוכן (VM עובד, מועדף מקורי)
  • שמור על הזרוע מופעלת כבוי במהלך הבדיקה הפיזית למטה

בתיבה

יחידת זרוע OpenArm 101
ספק כוח (24V DC)
מתאם USB מסוג CAN
חומרת הרכבה
כרטיס התחלה מהירה

רשימת בדיקה

  • כל 8 המפרקים מסתובבים בחופשיות (ללא שחיקה או התנגדות)
  • ניתוב הכבלים שלם לאורך גוף הזרוע
  • מחבר החשמל לא פגום
  • עצירת חירום נגישה ופונקציונלית
⚠️
כללי בטיחות
  • לעולם אל תושיט יד אל סביבת העבודה כאשר הזרוע מופעלת
  • כבה תמיד לפני התאמת כבלים או ביצוע שינויים בחומרה
  • הרחק ילדים וחיות מחמד במהלך הפעולה
  • אבטח את הבסיס למשטח יציב לפני הריצה הראשונה
2

סביבת תוכנה ותצורת CAN

⏱ ~60 דקות

דרישות מערכת

  • אובונטו 22.04 LTS (מומלץ) או 20.04
  • Python 3.10+
  • ROS2 צנוע
  • מתאם USB-CAN (אפשר או תואם - חייב לתמוך ב-CAN FD עבור קצב נתונים מלא של 5 Mbit/s)

שלב 2א - תצורת מזהה מנוע

לפני כל הגדרת תוכנה, יש להקצות לכל מנוע Damiao את ה-CAN ID שלו. זהו שלב חד פעמי המבוצע ב-Windows באמצעות Damiao USB CAN Debugger.

כלי איתור באגים של Damiao (Windows): הורד Debugging_Tools_v.1.6.8.8.exe והשתמש בו כדי להגדיר את מזהה המשדר והמקלט של כל מנוע. בדוק תמיד מנוע אחד בכל פעם לפני השרשור.

השתמש בטבלה שלהלן כהקצאת הזיהוי הקנוני עבור כל מפרק (J1–J8):

מְשׁוּתָף מזהה משדר מזהה נמען
J10x010x11
J20x020x12
J30x030x13
J40x040x14
J50x050x15
J60x060x16
J70x070x17
J80x080x18

שלב 2ב — התקן חבילות OpenArm

במחשב אובונטו שלך, התקן את כל החבילות הנדרשות מה-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

שלב 2ג - הגדרת ממשק CAN (CAN FD)

מנועי OpenArm תומכים גם ב-CAN 2.0 וגם ב-CAN FD. מומלץ CAN FD - הוא מריץ את שלב הנתונים במהירות של 5 Mbit/s ותומך בעומסים של עד 64 בתים, הנדרשים לרוחב פס מלא של מנוע Damiao.

מצב באוד נומינלי נתונים באוד מטען
CAN 2.01 Mbit/s8 בתים
CAN FD1 Mbit/s5 Mbit/sעד 64 בתים

מומלץ - השתמש ב-OpenArm Helper:

# 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
יציאת CAN אחת לכל זרוע. התקנה עם זרוע אחת משתמשת can0. הגדרה דו-ידנית משתמשת can0 (מנהיג נכון) + can1 (מנהיג שמאלי) + can2 (עוקב ימני) + can3 (עוקב שמאלי).

שלב 2ד - פקודות בקרת מנוע ואיתור באגים

השתמש באלה 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 עם מזהה המשדר של מפרק היעד מהטבלה שלמעלה:

# 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
⚠️
בדוק מנוע אחד בכל פעם בעת ההפעלה הראשונה, חבר ובדוק כל מנוע בנפרד לפני שרשור דייזי באוטובוס CAN. זה מבודד התנגשויות מזהות ותקלות חיווט. ה --flash הדגל נמשך שינויים ב-baudrate - כל מנוע תומך במקסימום של ~10,000 מחזורי כתיבה של הבזק.

מצב נורית מנוע

לכל מנוע Damiao יש נורית LED המציינת את המצב הנוכחי. השתמש בזה כבדיקת תקינות מהירה לאחר ההפעלה:

תבנית LED מַשְׁמָעוּת
ירוק (יציב)מנוע מופעל ומוכן
אדום (יציב)מנוע מושבת
אדום (מהבהב)מצב שגיאת מנוע - שלח פקודת Clear Error לפני הפעלה מחדש

שלב 2ה - התקן חבילות 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')"
3

תנועה ראשונה

⏱ ~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 "{...}"
⚠️
השאר את היד שלך על עצירת החירום לריצה האמיתית הראשונה. הזרוע תנוע למצב הבית. היה מוכן לעצור מיד אם התנועה נראית שגויה.
4

כיול וביתות

⏱ ~45 דקות

עמדות אפס משותפות חייבות להתאים למציאות הפיזית לשליטה מדויקת. מפרקים מכוילים שגויים גורמים לכשלים במדיניות במורד הזרם - אל תדלג על שלב זה.

נוהל הביות

  1. הפעל עם הזרוע במצב בטוח ידוע (ארוכה בערך, הרחק ממכשולים)
  2. הפעל את סקריפט הביות:
    ros2 run openarm_ros2 homing
  3. הסקריפט ינחה אותך להנחות ידנית כל מפרק לעצירה הקשה שלו - זז לאט
  4. אשר שמיקום אפס נשמר עבור כל מפרק כאשר תתבקש

ודא כיול

ros2 topic echo /joint_states  # check all positions read near zero
תוצאה צפויה: כל מצבי המפרק צריכים להיקרא בטווח של ±0.05 ראד מאפס כאשר הזרוע נמצאת בתנוחת הייחוס שלה. סטיות גדולות יותר מצביעות על בעיית מפרק או מקודד שהוחמצה - חזור על הליך הביות עבור אותו מפרק.
5

טלאופרציה

⏱ ~60 דקות

בחר את התקן המפעיל שלך

בקר VR

Meta Quest / Steam VR - טוב למשימות מרחביות

מקלדת/גיימפאד

לבדיקה בסיסית ומיקום גס

חבר התקן מפעיל

ros2 launch openarm_ros2 teleop.launch.py operator:=wuji_hand

בדוק חביון

זמן אחזור היעד מקצה לקצה הוא מתחת ל-50 אלפיות השנייה. הפעל את מבחן ההשהיה וודא:

ros2 run openarm_ros2 latency_check
זמן אחזור גבוה? מתאמי USB-CAN משתנים בביצועים. אם זמן האחזור עולה על 80 אלפיות השנייה, נסה יציאת USB אחרת (עדיף USB 3.0), צמצם תהליכי רקע או עבר לממשק CAN מקורי.
6

איסוף נתונים

⏱ מתמשך

בחר פורמט נתונים

  • LeRobot (מומלץ) - מיועד ללימוד חיקוי והכשרת מודלים
  • 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 הרץ
  • תוויות פעולה תואמות התנהגות שהודגמה
  • פרקים שנכשלו מסומנים להחרגה, לא נמחקים
שמור פרקי כישלון. הדגמות שנכשלו מכילות אות שימושי ללימוד חוסן. סמן אותם עם is_failure:=true - הפלטפורמה יכולה להשתמש בהם ללמידה או סינון ניגודיות.
7

הדרכה ופריסה של מודל AI

⏱ מתמשך

דגמים מומלצים עבור OpenArm

  • ACT (Action Chunking Transformer) - הטוב ביותר לבחירה-ומקום. מנבא נתחי פעולה מתצפיות במצלמה.
  • מדיניות פיזור - הטוב ביותר עבור משימות עשירות באנשי קשר. יוצר מסלולים חלקים באמצעות דה-נויז.
  • OpenVLA - הטוב ביותר עבור משימות מותנות בשפה. משלב הבנת חזון-שפה עם פעולות רובוט.

כוונן את ACT על הנתונים שלך

pip install lerobot
python train.py --config act_openarm --data-path ./recordings/

אימון על GPU לצרכן (RTX 3090 ומעלה) נמשך בדרך כלל 2-4 שעות עבור 50 פרקים. השתמש ב- --resume דגל כדי להמשיך ממחסום.

פרוס ב-Edge

ros2 launch openarm_ros2 inference.launch.py \
  model_path:=./checkpoints/best.pt

צומת ההסקה קורא מסגרות של מצלמה, מריץ את המודל ומפרסם פקודות משותפות בתדירות בקרה. זמן השהייה של מסקנות יעד הוא מתחת ל-20 אלפיות השנייה לשליטה בזמן אמת.

השלמת את נתיב ההגדרה המלא!

ה-OpenArm שלך מכויל, פועל מרחוק, נאסף נתונים ומפעיל AI. שתף את מה שבנית עם הקהילה.

← חזרה ל-OpenArm Hub בקר בפורום קנה עוד OpenArm →

צריך עזרה?

פורום OpenArm הוא המקום המהיר ביותר לקבל תשובות מהקהילה ומצוות SVRC.