מדריך ההתקנה של OpenArm 101
עקוב אחר הנתיב הזה מ-Unboxing לתנועה הראשונה שלך המאומנת בבינה מלאכותית. לוקח בערך 4-5 שעות בסך הכל.
ביטול ארגז ובדיקת בטיחות
⏱ ~30 דקותלפני שאתה מתחיל
- ודא שיש לך מרחב עבודה ברור של 1 מ' × 1 מ' על משטח יציב
- החזיק מחשב נייד עם אובונטו 22.04 מוכן (VM עובד, מועדף מקורי)
- שמור על הזרוע מופעלת כבוי במהלך הבדיקה הפיזית למטה
בתיבה
רשימת בדיקה
- כל 8 המפרקים מסתובבים בחופשיות (ללא שחיקה או התנגדות)
- ניתוב הכבלים שלם לאורך גוף הזרוע
- מחבר החשמל לא פגום
- עצירת חירום נגישה ופונקציונלית
- לעולם אל תושיט יד אל סביבת העבודה כאשר הזרוע מופעלת
- כבה תמיד לפני התאמת כבלים או ביצוע שינויים בחומרה
- הרחק ילדים וחיות מחמד במהלך הפעולה
- אבטח את הבסיס למשטח יציב לפני הריצה הראשונה
סביבת תוכנה ותצורת 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.
השתמש בטבלה שלהלן כהקצאת הזיהוי הקנוני עבור כל מפרק (J1–J8):
| מְשׁוּתָף | מזהה משדר | מזהה נמען |
|---|---|---|
| J1 | 0x01 | 0x11 |
| J2 | 0x02 | 0x12 |
| J3 | 0x03 | 0x13 |
| J4 | 0x04 | 0x14 |
| J5 | 0x05 | 0x15 |
| J6 | 0x06 | 0x16 |
| J7 | 0x07 | 0x17 |
| J8 | 0x08 | 0x18 |
שלב 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.0 | 1 Mbit/s | — | 8 בתים |
| CAN FD | 1 Mbit/s | 5 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
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
--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')"
תנועה ראשונה
⏱ ~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 "{...}"
כיול וביתות
⏱ ~45 דקותעמדות אפס משותפות חייבות להתאים למציאות הפיזית לשליטה מדויקת. מפרקים מכוילים שגויים גורמים לכשלים במדיניות במורד הזרם - אל תדלג על שלב זה.
נוהל הביות
- הפעל עם הזרוע במצב בטוח ידוע (ארוכה בערך, הרחק ממכשולים)
- הפעל את סקריפט הביות:
ros2 run openarm_ros2 homing - הסקריפט ינחה אותך להנחות ידנית כל מפרק לעצירה הקשה שלו - זז לאט
- אשר שמיקום אפס נשמר עבור כל מפרק כאשר תתבקש
ודא כיול
ros2 topic echo /joint_states # check all positions read near zero
צלילה עמוקה:
מדריך כיול וביוב - הליך מלא עם פתרון בעיותטלאופרציה
⏱ ~60 דקותבחר את התקן המפעיל שלך
יד ווג'י
הטוב ביותר עבור מיומנות ומשימות מניפולציה עדינות
בקר VR
Meta Quest / Steam VR - טוב למשימות מרחביות
מקלדת/גיימפאד
לבדיקה בסיסית ומיקום גס
חבר התקן מפעיל
ros2 launch openarm_ros2 teleop.launch.py operator:=wuji_hand
בדוק חביון
זמן אחזור היעד מקצה לקצה הוא מתחת ל-50 אלפיות השנייה. הפעל את מבחן ההשהיה וודא:
ros2 run openarm_ros2 latency_check
איסוף נתונים
⏱ מתמשךבחר פורמט נתונים
- 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 - הפלטפורמה יכולה להשתמש בהם ללמידה או סינון ניגודיות.
הדרכה ופריסה של מודל 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. שתף את מה שבנית עם הקהילה.