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, ומפתחות V2overrideCRC/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לכל לוח הוסרו.