v4.8.1

v4.8.1 בנויה על Qt Creator 14.0.2 ומתמקדת בפרוטוקול מצלמה חדש ואמין במיוחד OpenMV V2, ב-Code Profiler מובנה, ובתהליך שמירה שמשאיר את המצלמה מחוברת במקום להוציא אותה. הקושחה המצורפת ומערך הדוגמאות המלא עודכנו ל-4.8.1. אין שבירות ב-API של הסקריפטים, אך התנהגות השמירה-ללא-הוצאה והסרת כמה דגלים סריאליים בזמן הפעלה הן שינויים בתהליך העבודה שגלויים למשתמש.

עיקרי הדברים

  • OpenMV Protocol V2 הוא מחסנית מצלמה חדשה ואמינה במיוחד (OMVCamera/OMVTransport/OMVDebug) עם CRC32, רצף, ACK/NAK, שידור חוזר, אירועים, ופיצול. הוא נקבע אוטומטית בזמן ההתחברות ומניע איפוס, אתחול, הזרמה, הרצת סקריפטים, וסטטיסטיקות.

  • Code Profiler הוא חלון חדש (Window > Show Code Profiler) שדוגם רשומות פרופיילינג לכל פונקציה מהמצלמה ומציג קריאות, מיקרו-שניות (μs) מינימום/מקסימום/סך הכל/ממוצע, מחזורים ממוצעים, אחוז, ומוני אירועים בטבלה הניתנת למיון.

  • שמירה במקום כבר אינה מוציאה את כונן המצלמה; ה-IDE כותב כעת את main.py ומרוקן את הכרך לדיסק כך שההתקן נשאר מחובר.

  • זיהוי ריבוי חיישנים מדווח על כל מצלמה בלוח, ומוצג בשורת המצב כ-Sensors: X, Y כאשר החיישן הראשי מופיע ראשון.

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

  • הקושחה והדוגמאות המצורפות עודכנו ל-4.8.1 בכל הלוחות, בתוספת דוגמאות חדשות של מצלמת אירועים GenX320, TensorFlow ML, Alif OLED, ומגן LCD/Touch-LCD.

תכונות חדשות

  • נוסף פרוטוקול התקשורת OpenMV V2: שכבת תעבורה ועסקאות מלאה עם CRC32, רצף, ACK/NAK, שידור חוזר, אירועים, ופיצול, בתוספת מחלקת OMVCamera שנקבעת אוטומטית בעת ההתחברות ומשולבת במנהל ההתקן הסריאלי (2fde9eb3f, fff1bf2ba, 8c41fcfad, 7fc7ed4bc, 84c3956af, 669039adf, a49259852, 07af1922a, 85f0c7c87, 5070cc213, e314459cc, e0367ca95, 0da2f79d0, 2b6fc9866, 534ecffbe).

  • נוסף חלון Code Profiler (Window > Show Code Profiler), שדוגם רשומות פרופיילינג לכל פונקציה ומציג קריאות, מיקרו-שניות (μs) מינימום/מקסימום/סך הכל/ממוצע, מחזורים ממוצעים, אחוז, ומוני אירועים, ומתרגם כתובות לסמלים באמצעות מנתח ELF מסוג ELFIO מצורף (019d3cd2c, 57cd9e1cc).

  • נוספה תיבת דו-שיח Debug Protocol Settings המציגה System Info, Host Stats, ו-Device Stats בזמן אמת המתרעננים מדי שנייה, וחושפת קצבי דגימה לכל ערוץ בתוספת בקרות דגימה משולבת לעומת מפוצלת (5220a6125, 0da2f79d0).

  • נוסף זיהוי ריבוי חיישנים: לוח עם יותר ממצלמה אחת מדווח על כולן בשורת המצב כ-Sensors: X, Y, כשהחיישן הראשי ראשון (cebc79ce7).

  • נוספה קריאת פריימים דינמית (פעילה כברירת מחדל), המחשבת מחדש את רזולוציית ההזרמה הגולמית המתאימה ביותר לכל פורמט פיקסל (BINARY, GRAY, RGB565, ARGB8, JPEG, PNG) ומגדירה מחדש את הזרם (75c073bdb, 0da2f79d0).

  • נוסף פענוח של חוצץ פריימים (frame buffer) עבור פורמטי הפיקסל הגולמיים BINARY (מונוכרום 1-bpp) ו-ARGB8 (אלפא 32 ביט) כך שסוגי תמונה אלו מוצגים כעת במציג (dabb82062).

  • ב-Windows, Connect סורק כעת התקני USB המסומנים על ידי מערכת ההפעלה כבעלי בעיה ומזהיר עם רשימה של ההתקנים הפגומים שעלולים לחסום את ההתחברות (1a5beb081, 1b59cd78e).

  • נוסף מחוון רישום בשורת המצב: כפתור Registered ירוק או Unregistered בצבע אלמוג עבור המצלמה המחוברת, הניתן ללחיצה לרישום הלוח (a8c98a4b9).

  • מציג חוצץ הפריימים (frame buffer) יכול כעת להציג הודעת טקסט ממורכזת שנשלחה מהסקריפט הרץ באמצעות קוד escape חדש FB_MESSAGE במקום תמונה (530048201).

  • נוספו ערכים חדשים ל-model-zoo: מודלי הערכת עומק ST FastDepth (224/256/320), מודל תנוחת נקודות-ציון לראש של ST, מודלי כף יד לזיהוי כף יד ונקודות-ציון של היד, ומודל זיהוי פנים קדמי BlazeFace (551668410, 4d64556d4, fadd6c4ed, b8277bb88, a8c98a4b9).

  • נוסף סקריפט בדיקה-עצמית לבנייה-מפעלית בלבד (מצלמה, IMU, ToF, WiFi, LAN) שמצורף ונפתח אוטומטית בעת ההפעלה בגרסת ה-IDE המפעלית (0db7fbbb0); חלק ה-LAN של RT1060 בבדיקה מושבת כעת (48370d022).

שינויים ושיפורים נוספים

  • שמירה במקום: שמירת סקריפט כבר אינה מוציאה את כונן המצלמה; ה-IDE כותב את main.py ומרוקן את הכרך לדיסק (FlushFileBuffers ב-Windows, syncfs ב-Linux, sync_volume_np/F_FULLFSYNC ב-macOS) כך שההתקן נשאר מחובר (1614c572f, 6928b51ea, 35ed53967).

  • פעולות סרגל כלים שנלחצות בזמן שהמצלמה עסוקה (השבתת חוצץ פריימים (frame buffer), דחיסת JPEG, שמירת סקריפט, הגדרת תצורה) מתווספות כעת לתור ומורצות אוטומטית כשההתקן פנוי במקום להציג תיבת דו-שיח של שגיאת Busy (f4315f0a4).

  • מציג חוצץ הפריימים (frame buffer) משתמש כעת כברירת מחדל בהתאמה-לתצוגה כך שהתמונה מותאמת אוטומטית לחלון בעת ההפעלה, וחלונית פלט מסוף הסריאלי מוצגת כעת כברירת מחדל בעת ההפעלה (f3ce4dc75).

  • קובצי מודל מהודרים עם הסיומת .lite מזוהים כעת בכל מקום: סינון והצגה בדפדפן model-zoo, יישור ROMFS של הקושחה, והמהדרים Vela/STEdge AI מפיקים כעת פלט .lite (f3ce4dc75).

  • תיבת הדו-שיח להידור מודל STEdge AI (N6) מנתחת ומדווחת כעת על אחוזי שימוש ב-NPU RAM וב-hyperRAM ומעתיקה את פלט הרשת המוקצה מחדש לקובץ התואם את סיומת המודל (f3ce4dc75).

  • דפדפן ה-model-zoo מציג כעת את עמודת הגודל של הקובץ ומותח את עמודת השם כדי להתאים, במקום להסתיר את הגודל (f3ce4dc75).

  • תבנית הסקריפט החדש עודכנה ל-API החדש של מודול ה-csi ומשתמשת כברירת מחדל בגודל פריים VGA, ודוגמת ה-Hello World המצורפת הוחלפה מגודל פריים QVGA ל-VGA (f3ce4dc75).

  • תיבת הדו-שיח Convert Video נכתבה מחדש כדי להשתמש בתיבת הדו-שיח המשותפת של הטעינה עם פלט צבעוני, הודעות הצלחה/כישלון, כפתור OK-לסגירה, ושגיאה ברורה כש-FFMPEG אינו זמין בפלטפורמה (f56efc7be).

  • מציג חוצץ הפריימים (frame buffer) מציג כעת אזהרה מהבהבת כאשר תמונת JPEG/PNG גדולה מדי כדי לאגור ולשלוח, באמצעות קוד escape חדש FB_BUFFER_ERROR (fda826126).

  • כניסה למאתחל (bootloader) DFU כופה כעת על המאתחל (bootloader) להישאר תושב בקושחת פרוטוקול V2, עם זיהוי גרסה שחוזר לאיפוס רגיל במאתחלים ישנים יותר (<1.0.2) שעלולים להיתקע כאשר נכפים (975857221).

  • שונה שמן ואורגנו מחדש של תיקיות מודלי זיהוי אובייקטים של ST (st_yolo_lc_v1 ל-yolo_lc, tiny_yolo_v2 ל-yolo_v2, מודלי אדם yolov8n לקבצים בעלי שם-גודל פשוט) והוסרו הווריאנטים הגדולים של tiny_yolo_v2 בפורמט int8 (34240cc3c).

  • תזמון הסריאלי מכוונן כעת באמצעות מפתחות העקיפה של protocol ב-settings.json של הקושחה (overrideReadTimeout, overrideReadStallTimeout, overridePerCommandWait, ומפתחות V2 overrideCRC/overrideSEQ/overrideACK) במקום דגלי שורת פקודה בזמן הפעלה (019d8bf1d).

  • מגבלת אורך השורה של שרת השפה של Python נקבעה ל-120 עמודות עבור flake8 ו-pycodestyle כך ששורות ארוכות כבר אינן מסומנות בברירת המחדל של 79 (dabb82062).

  • מערך מודלי הלמידה החישובית המצורף צומצם על ידי העברת אוסף המודלים של Qualcomm ו-google/mobilenet_v1 אל models_unused כדי לכווץ את תוכנת ההתקנה (c44ddba20).

תיקוני באגים

  • תיבות הדו-שיח של התקדמות הורדת קושחה ועדכון משאבים נעשו עמידות לקריסה באמצעות שומרי QPointer כך שהן כבר אינן משתמשות בתיבת דו-שיח שנמחקה אם היא נסגרת באמצע ההורדה (f3ce4dc75).

  • סריקת הכוננים ממשיכה כעת לסרוק מחדש עד שכונן ה-USB של המצלמה נמצא ומנקה ערכי כונן ישנים בעת ניתוק, ובכך מסירה את הפריצה הקודמת של טיימר חד-פעמי (a31d41b4e).

  • כמה תיקוני התחברות וסריאל: חיישנים מוסתרים (למשל SoftCSI) כבר אינם מבלבלים את סוג החיישן המוצג, טיימר keep-alive סריאלי ב-Windows מונע תקיעות USB, Start כבר אינו מפעיל מחדש סקריפט שכבר רץ, וערוץ המצלמה מנותק בצורה נקייה בעת סגירת הפורט (a8e467be6).

  • תצוגת ה-profiler שיחזרה את בחירת מוני אירועי ה-PMU שלה לכל עמודה (תפריטי אירועים הניתנים לסימון) ושמרה את מצב המונה/הכותרת שהושבת זמנית (40c679e90).

תמיכת פלטפורמה וכלים

  • בסיס Qt Creator: 14.0.2.

  • קושחה מצורפת: עודכנה מ-4.7.0 ל-4.8.1, ובנייה מחדש של הקושחה עבור OPENMV2/3/4/4P/PT, OPENMV_N6, OPENMV_AE3, OPENMV_RT1060, ולוחות Arduino GIGA/Nicla Vision/Portenta H7 (2657818ca).

  • תוקנה לחיצת היד של גרסת הפרוטוקול ב-macOS עבור לוחות RT1062 ו-AE3 על ידי פיצול ההעברה הרב-פקודתית ב-USB לחתיכות בגודל USBDBG_LEN שלוחות אלו יכולים לטפל בהן (6b9d5f842).

  • חבילת מנהלי ההתקן של Windows המצורפת עובדה מחדש: נוספו קובצי מנהל התקן חתומים .cat/.inf לכל לוח (AE3, H7, H7Plus, M4, M7, N6, Pico/PT, RT1062) ומנהלי ההתקן הסריאליים CDC הועברו לתיקייה חדשה openmvcdc עם מתקין אוטומטי מבוסס dpinst (439557829, ba3b01bfb).

  • נוספה תמיכה בגרסאות ישנות יותר של חיישן המצלמה MT9V032 על ידי רישום מזהי חיישן 0x1311 ו-0x1312 (לצד 0x1313 הקיים) כ-MT9V0X2 (eaaa624e3).

שינויים שוברים

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

  • שמירת סקריפט כבר אינה מוציאה או מנתקת את כונן ה-USB של המצלמה. ה-IDE מרוקן כעת את חוצצי הכרך במקום, כך שההתקן נשאר מחובר לאחר שמירה.

  • דגלי הסריאל בזמן הפעלה -override_read_timeout (ברירת מחדל 5000 ms), -override_read_stall_timeout (ברירת מחדל 1000 ms), ו--override_per_command_wait (ברירת מחדל 1 ms, 2 ms ב-macOS) הוסרו; תזמון הסריאלי מוגדר כעת באמצעות מפתחות העקיפה של protocol ב-settings.json של הקושחה (019d8bf1d).

  • מאתחלי האתחול (bootloaders) המצורפים נשלחים כעת כ-.bin בלבד; קובצי הקושחה והמאתחל .dfu לכל לוח הוסרו.