כיצד לשלב מערכת ראייה ממוחשבת עם רובוט תעשייתי — סוגי מצלמות, אסטרטגיית תאורה, תקשורת רובוט-ראייה ודוגמת אינטגרציה HikRobot + FANUC צעד אחר צעד.
ראייה ממוחשבת הופכת רובוט מכלי עיוור למערכת חכמה שיכולה לאתר חלקים, לבדוק איכות, לקרוא ברקודים ולהסתגל לשונות. האינטגרציה היא החלק הקשה — המצלמה, התאורה, בקר הרובוט וה-PLC חייבים כולם לדבר אותה שפה בזמן הנכון.
בחירת מצלמה
סוגי מצלמות לפי יישום:
- סריקת שטח (2D) — איסוף, בדיקות, קריאת ברקוד. הנפוצה ביותר. סדרת CA ו-SC של HikRobot
- אור מובנה 3D — איסוף מתיבה, מדידת נפח, גיאומטריה מורכבת. איטי יותר אך בלתי-תלוי מיקום
- סריקת קו — בדיקת רצף רציף, משטחי צמיגים, פח פלדה. דורש תנועת מסוע
- מצלמה חכמה (עיבוד מובנה) — סדרת SC6000. מצלמה + מעבד ראייה ביחידה אחת, ללא מחשב נפרד
תאורה: המשתנה החשוב ביותר
תאורה חשובה יותר מרזולוציית המצלמה. תמונה טובה עם מצלמה זולה עדיפה על תמונה רועשת עם מצלמה יקרה. עקרונות מרכזיים: השתמש בתאורה כיוונית ליצירת ניגודיות (תאורת רקע לצלליות, תאורת טבעת לפגמי שטח, תאורה שיתופית למשטחים שטוחים מחזירי אור). תמיד סגור את התאורה למניעת שונות סביבתית.
תקשורת רובוט-ראייה: FANUC + HikRobot
תבנית האינטגרציה הסטנדרטית: הרובוט שולח פולס טריגר דיגיטלי למצלמה, ממתין ל-DI "תוצאה מוכנה", ואז קורא לתוכנית Karel שקוראת את הסט ה-XY משקע TCP. תוכנית Karel כותבת ערכי ההיסט לרגיסטרים מספריים, שתוכנית TP מחילה אותם על עמדת האיסוף.
חשוב: TP לא יכולה לפתוח שקעי TCP ישירות. תקשורת שקע דורשת תוכנית Karel (למשל VIS_READ.PC) מקומפלת וטעונה על הבקר. תוכנית TP קוראת ל-Karel, שמבצעת קריאת השקע וכותבת תוצאות לרגיסטרים.
! === חלק 1: טריגר מצלמה ===
1: DO[10:CAM_TRIG]=ON ; ! פתח טריגר למצלמה
2: WAIT .02(sec) ; ! החזק 20ms — פולס טריגר מינימלי
3: DO[10:CAM_TRIG]=OFF ; ! שחרר טריגר
! === חלק 2: המתן לתוצאת ראייה ===
4: WAIT DI[11:VIS_RDY]=ON,TIMEOUT,LBL[99] ;
! שים לב: פסיק לפני TIMEOUT — חובה בתחביר TP
! === חלק 3: קרא היסט דרך Karel ===
5: CALL VIS_READ ; ! Karel קורא שקע TCP: XOffset→R[20], YOffset→R[21]
6: IF DI[12:VIS_FAIL]=ON,JMP LBL[98] ; ! המצלמה לא מצאה חלק
! === חלק 4: החל היסט על עמדת האיסוף הבסיסית ===
7: PR[5]=P[3:PICK_BASE] ; ! טען עמדת איסוף מלומדת ל-PR[5]
8: R[30]=PR[5,1] ; ! קרא X הנוכחי של PR[5]
9: R[30]=R[30]+R[20] ; ! הוסף היסט X מהראייה
10: PR[5,1]=R[30] ; ! כתוב חזרה לאלמנט X של PR[5]
11: R[31]=PR[5,2] ; ! קרא Y הנוכחי של PR[5]
12: R[31]=R[31]+R[21] ; ! הוסף היסט Y מהראייה
13: PR[5,2]=R[31] ; ! כתוב חזרה לאלמנט Y של PR[5]
! === חלק 5: נוע לעמדה המתוקנת ===
14: J PR[5] 60% CNT50 ; ! התקרב מעל עמדת האיסוף המתוקנת
15: L PR[5] 150mm/sec FINE ; ! גישה מדויקת לעמדה
16: JMP LBL[100] ;
LBL[98:NO_PART] :
17: DO[14:NO_PART_ALM]=ON ; ! הפעל אזעקת חסר-חלק
18: PAUSE ;
19: JMP LBL[100] ;
LBL[99:VIS_TIMEOUT] :
20: DO[14:NO_PART_ALM]=ON ;
21: PAUSE ;
LBL[100:END] :הערות תחביר מרכזיות: (1) TIMEOUT בפקודת WAIT דורש פסיק לפני LBL — "WAIT DI[x]=ON,TIMEOUT,LBL[n]". (2) TP לא יכולה לעשות PR[5,1] = PR[5,1] + R[20] בצעד אחד — חייב לקרוא ל-R[], להוסיף, ואז לכתוב חזרה. (3) תמיד השתמש בתוכנית Karel לקריאות שקע — לעולם אל תנסה TCP ב-TP ישירות.
כיול: כיול יד-עין
לפני שהרובוט יכול להשתמש בעמדות ראייה, עליך לכייל את מערכת הקואורדינטות של המצלמה למערכת הקואורדינטות של הרובוט. למצלמה קבועה (עין-ליד), למד את הרובוט לגעת ב-9+ נקודות על רשת כיול תוך רישום קואורדינטות פיקסל המצלמה לכל אחת. מטריצת הכיול ממירה XY פיקסל ל-XY רובוט.
Xpert Robotics שילבה מערכות ראייה של HikRobot עם רובוטי FANUC ו-Shibaura לבדיקת איכות ואיסוף מתיבה. צור קשר להערכת היתכנות ראייה ממוחשבת.


