שילוב AI ב-ROS 2: מהמצלמה ועד לשליטה

על גבי הרובוט, תפיסה ושליטה פועלות לעיתים במעגלים נפרדים — בגלל זה הקו נעצר דווקא במקום שנראה פשוט. אנו מפתחים אינטגרציית ROS AI מקצה לקצה: מאחדים את שני המעגלים לגרף אחד, מגדירים מצבי עבודה ומוסרים את הפתרון לתפעול עם נהלים. קבלן אחד במקום אוסף של מודולים מנותקים.

תחומי פיתוח AI

שאלות נפוצות

העבודות האחרונות

  • פיתוח אפליקציית ווב עבור FEEDME
    פיתוח אפליקציית ווב עבור FEEDME
    1365
  • פיתוח חנות מקוונת לחברת FURNORO
    פיתוח חנות מקוונת לחברת FURNORO
    1330
  • עיצוב לוגו לחברת B2B Advance
    עיצוב לוגו לחברת B2B Advance
    776
  • פיתוח אפליקציית ווב עבור Enviok
    פיתוח אפליקציית ווב עבור Enviok
    1077
  • פיתוח לוגו חברת AIDER
    פיתוח לוגו חברת AIDER
    1022
  • פיתוח CRM עבור Chasseurs
    פיתוח CRM עבור Chasseurs
    1113

היכן מתפרקת אינטגרציית ROS AI על סיפון הרובוט

מודול התפיסה מאתר את האובייקט בביטחון בהקלטת בדיקה, אך על סיפון הרובוט הכול מתפרק: הפקודה נשלחת אל לולאת הבקרה לפי קואורדינטות שהספיקו להתיישן.

הבעיה אינה באיכות המודל, אלא בממשק החיבור — ב-ROS 2 התפיסה והבקרה חיות בצמתים נפרדים ומתקשרות דרך תורי הודעות, ובגבול הזה בדיוק הולך לאיבוד הזמן.

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

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

השהיית התגובה ואובדן האובייקט בקטעים הללו מצטברים למעמד כשל אחד שאינו נראה בעת דיבוג על השולחן. להלן נפרק כיצד זה נסגר: היכן להציב בקרת חיות לצמתים, כיצד לאחד את הזמן למקור אחד ומה לעשות בעת אובדן האובייקט — בלי לשכתב את לולאת הבקרה. אז אינטגרציית ROS AI מפסיקה להיות תלויה במי שהבחין בתקלה ראשון.

מה נותן גרף ROS מאוחד: תפיסה ובקרה בלולאה אחת

גרף ROS 2 מאוחד — זה כאשר הגלאי, העוקב, המתכנן והדרייברים של ההנעות מחליפים הודעות בלולאה אחת, ולא חיים כשירותים מבודדים עם שעונים וחוצצים משל עצמם. לכל טופיק מוגדר פרופיל איכות קשר: לפקודות להנעה — מסירה אמינה, לזרם הווידאו — ויתור על העברה חוזרת של פריימים מיושנים. הנראות מקצה לקצה — ביומן רואים באיזה צומת הפריים הפך למטרה והיכן המטרה אבדה.

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

השנייה — שיעור ההתערבויות הידניות: במקום הפעלה מחדש של תהליכים נפרדים, המפעיל צופה כיצד הצומת התקול עובר מעבר מחזור חיים וחוזר למצב עבודה. משך ההשבתה וזמן ההתאוששות לאחר תקלה נקבעים כעת על ידי פרמטרי ההפעלה מחדש, ולא על ידי מהירות התגובה של התורן.

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

מצבי עבודה של מודול התפיסה: סיפון, תחנה, לולאה חיצונית

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

מצבי עבודה הם שלושה: לולאת סיפון, לולאה שהועברה אל התחנה וסכמה היברידית. בכל אחד מהם מכוון אחרת ה-transport של ROS 2 ומתחלקים התפקידים בין הנודים.

מצב מתי מתאים מגבלות המצב
לולאת סיפון עבודה אוטונומית, תנועה מחוץ לאזור של קשר יציב, תגובה צפויה תקרה במספר ובגודל המודלים, תקציב תרמי, עדכון מודל — עם הפעלה מחדש של נודים
לולאה שהועברה מודלים כבדים, אימון נוסף על זרם אמיתי, מספר רובוטים על מאגר משותף תלות בערוץ: השהיה לא אחידה, אובדנים, התחברות מחדש
סכמה היברידית תגובה מהירה פלוס סמנטיקה: על הסיפון — בטיחות, בתחנה — זיהוי ותכנון התאמת גרסאות מודלים, סנכרון זמן, שני סטים של קונפיגורציות

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

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

שלבי ההטמעה: מסקר העמדה עד ההעברה לתפעול

את העבודה מתחילים בסקר העמדה: מצלמים מפת צמתי ROS 2, תדרי הפרסום של הטופיקים, המחשבים הזמינים והיכן כרגע הולך לאיבוד הזמן — בלכידת הפריים, באינפרנס או בהעברת הפקודה למנגנון המבצע. לפי המפה הזו רואים מה ניתן למחזר מחדש, ומה יהיה צורך לשכתב; בלעדיה כל אומדן הופך לניחוש.

  1. סקר העמדה. ספירת מלאי של צמתים, טופיקים ושירותים, מדידת תדרים והשהיות אמיתיים, בדיקת הספק ומחשבים, רשימת מגבלות האתר.
  2. סכמת הגרף. מתכננים את הגרף: מי מפרסם ומי נרשם, היכן מוצבים חוצצים ומדיניות מסירת הודעות, כיצד מופרדות לולאות התפיסה והבקרה כך שנפילת צומת אחד לא תעצור את הפלטפורמה.
  3. כיוון הצמתים. מרכיבים ומגדירים את הרכיבים, מוציאים פרמטרים לקבצים, מפעילים הקלטת טלמטריה ומצב השמעה — עליו מדבגים בלי לצאת אל האובייקט.
  4. בדיקה במגרש. מריצים תרחישים עם תנאים חוזרים, מודדים השהיה מהפריים עד הפקודה ואת שיעור ההפעלות, לוכדים דעיכה בתאורה חזקה, ברטט ובאובדן קשר.
  5. תפעול ניסיוני. המערכת עובדת על האובייקט תחת השגחת מהנדס: מפרקים כל כשל לפי הלוגים, מתקנים ספים ולוגיקת מעברים.
  6. העברה לתפעול. סכמת הגרף, קונפיגורציות, נהלי הפעלה והתאוששות, הדרכת המשמרת ותוכנית נסיגה מוסכמת לקונפיגורציה הקודמת.

כל שלב נסגר בארטיפקט שאפשר לקבל בנפרד: פרוטוקול הסקר, סכמה, קונפיגורציות, דוח הרצות המגרש, יומן התפעול הניסיוני. כך המעבר לשלב הבא לא נראה כמו קפיצה אל הלא נודע — ברשות הלקוח תמיד יש מצב מעודכן של המערכת.

חבילת ההעברה: קונפיגורציות, סכמות גרף, נהלים והרשאות

פרויקט על ROS 2 נמסר לא בהדגמה של רובוט עובד, אלא בסט ארטיפקטים שלפיהם הצוות שלכם יוכל לתפעל את המערכת בלעדינו. אם ההעברה מצטמצמת לארכיון עם קוד מקור, בעוד חודשיים איש לא ייזכר מדוע צומת הבקרה של המנוע מפרסם פקודות בהשהיה כזו ומה יקרה אם משנים את סף ההפעלה. להלן — מה בדיוק נשאר אצל הלקוח.

  • קונפיגורציות צמתים — קבצי פרמטרים לכל צומת: תדרי פרסום, גדלי תורים, ספי הפעלה, הצמדה לטופיקים ולמרחבי שמות. לצדם — הערות אילו ערכים שונו תחת עומס ומדוע.
  • סכמות גרף — דיאגרמת צמתים, טופיקים ושירותים עם פרופילי איכות קשר ונקודות שבהן זרם הנתונים מהמצלמה מתפצל מזרם פקודות הבקרה.
  • נהלי תפעול — סדר הפעלה ועצירה שוטפים, תגובה לאובדן קשר עם המצלמה או עם הבקר, סימני תקרית ופעולות המפעיל עד להגעת מהנדס.
  • הוראות לשירות התחזוקה — כיצד לקרוא יומנים, מה משמעותן של הודעות אבחון, אילו מטריקות למדוד בעת האטה בתגובה.
  • הרשאות גישה — מודל תפקידים: מי רשאי לשנות קונפיגורציה, מי רק לצפות, למי יש הרשאות להפעלה מחדש של צמתים וגישה ליומנים.
  • נוהל נסיגה — ניהול גרסאות של קונפיגורציות ודרך להחזיר את סט הפרמטרים התקין הקודם בפקודה אחת.
  • מטריצת עקיבות — קשר בין דרישות לצמתים ולבדיקות, כך שבעת שיפור נראה מה בדיוק מושפע.

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

מקרה בוחן: כיצד הקו הפסיק להיעצר בגלל כשל תפיסה

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

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

מה שינו

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

מה היה לתוצאה

מטריקה לפני אחרי
עצירות קו באשמת התפיסה, למשמרת 6–8 0–1
זמן שחזור המחזור עד 12 דק' עד 2 דק'
התערבויות ידניות של המפעיל למשמרת 20+ 2–3

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

מה לעשות אם מודול התפיסה שלכם כבר פרוס?

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

דווקא כאן נחשפת לרוב הסיבה לאי-הסנכרון — הצמתים תואמים פורמלית, אך חיים במערכות ייחוס ובזמנים שונים.

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

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

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

התלבטויות לפני התחלה: מפרקים סיכונים טכניים

רוב השאלות לפני ההתחלה — לא על המודל, אלא על האופן שבו צומת ROS 2 יתקיים בשלום עם לולאה שכבר עובדת. ואלו הם הסיכונים הטכניים העיקריים: תאימות, התנהגות בעת כשלים, השהיות בלולאה.

האם יהיה צורך להחליף חיישנים ובקרים?

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

מה יקרה בעת אובדן קשר או כשל של צומת?

בלולאה נשאר טיימר שמירה: בעת אובדן זרם נתונים הצומת מסיר את הבקרה ומעביר את המערכת למצב בטוח, ולא ממשיך בתנועה לפי נתונים מיושנים. בנפרד בודקים שלאחר שחזור הקשר הלולאה חוזרת לעבודה בלי הפעלה מחדש ידנית.

כיצד אתם בודקים השהיות בלולאה?

כותבים טלמטריה לאורך כל השרשרת — מהפריים של המצלמה ועד לפקודת הבקרה — ובוחנים את התפלגות ההשהיות, ולא את הממוצע. מריצים תרחישים בתנאים אמיתיים: תאורה חלשה, עומס בערוץ, מכשולים לא שגרתיים — כך נקודות צוואר הבקבוק נראות לפני ההעברה.

מה קורה לאחר ההעברה?

מוסרים תיעוד לאבחון כשלים: אילו מטריקות לבחון, היכן נמצאים יומני האירועים, מה משמעותה של כל שגיאה. הליווי לאחר ההעברה כולל פירוק תקלות וחידוד הנוהל — אינכם נותרים לבד עם הלולאה לאחר ההפעלה.

נדון במשימה ונחזור עם אומדן ותוכנית עבודה

אומדן לפי תיאור "צריך זיהוי על המצלמות" תמיד יוצא משוער. כדי לחשב את היקף העבודה, אנחנו צריכים את גרף הצמתים הנוכחי, את הרכב החיישנים ואת הדרישות ללולאת הבקרה — לפיהם רואים אם התפיסה משתלבת בטופיקים הקיימים או תדרוש ענף חליפין נפרד.

מה לשלוח לצורך האומדן:

  • תיאור הפלטפורמה: מודול חישוב, מאיץ, ענף ROS 2 המותקן;
  • הרכב חיישנים עם ממשקים ותדרי פרסום: מצלמות, לידאר, יחידה אינרציאלית, אודומטריה;
  • גרף הצמתים הנוכחי — אילו טופיקים ושירותים כבר קיימים, מי מפרסם ומי נרשם;
  • דרישות לתגובת הלולאה: השהיה מותרת, תדר בקרה, התנהגות בעת אובדן פריימים;
  • תרחישים שהפתרון מחויב לעבור, כולל מורכבים — תאורה לקויה, חפיפות, מכשולים דינמיים;
  • הקלטות של הרצות עמדה ולוגים, אם הם נשמרים.

לתוכנית העבודה ייכנסו: סכמת אינטגרציה של התפיסה עם הגרף הקיים, בחירת מודל ופורמט חליפין נתונים, צמתים עם מדיניות מסירת הודעות, מבחני עמדה וקבלה על תרחישים של הלקוח. את סדר השלבים מתקבעים מראש, כך שבכל צעד תהיה תוצאה ניתנת לאימות.

תארו את המשימה ושלחו חומרים — נחזור עם אומדן, סדר שלבים ותנאי הפעלה.