v4.6.0

v4.6.0 היא גרסה עיקרית עם תכונות חדשות. הבולט שבהם: מודול המצלמה שונה שמו מ-sensor ל-csi (עם כינוי sensor תואם לאחור), מודול חדש ml.postprocessing, תמיכה בחיישן האירועים Prophesee GenX320, ב-PAG7936 ובמצלמות התרמיות FLIR Boson, מאתחל (bootloader) חדש לטעינת DFU מבוסס TinyUSB, האצת Nema GPU ו-MicroPython 1.24. כמו כן היא משנה את טווח ה-alpha בציור, לכן קראו את השינויים שוברי התאימות שלהלן.

עיקרי הדברים

  • sensor הוא כעת גם csi — מודול המצלמה שונה שמו ל-csi; sensor נותר ככינוי תואם לאחור (אין צורך בשינוי קוד עדיין).

  • מודול ml.postprocessing חדשfomo_postprocess, yolo_v2_postprocess, yolo_v5_postprocess.

  • חיישנים חדשים — מצלמת האירועים Prophesee GenX320, PAG7936 והתרמית FLIR Boson 320/640.

  • מאתחל DFU חדש — מאתחל (bootloader) סטנדרטי לטעינת DFU מבוסס TinyUSB מחליף את מאתחל ה-CDC הישן בכל הלוחות.

  • Nema GPU — גרפיקה דו-ממדית/וקטורית מואצת ב-STM32.

  • MicroPython עודכן ל-1.24.0.

  • שובר תאימות: טווח ה-alpha בציור שונה מ-0–256 ל-0–255 (ראו את שינוי טווח האלפא).

תכונות חדשות

  • ml.postprocessing — מודול חדש לפענוח פלט המודל: מפענח FOMO (fomo_postprocess, find_blobs + NMS, עם threshold הניתן להגדרה) וכן yolo_v2_postprocess / yolo_v5_postprocess (עם threshold, anchors, nms_threshold, nms_sigma).

  • הדמיית מצלמת אירועים — שיטות חדשות Image.to_evt_dark() / Image.to_evt_light() ולוחות צבעים PALETTE_EVT_DARK / PALETTE_EVT_LIGHT.

  • הדמיית עומק — שיטה חדשה Image.to_depth() ולוח צבעים PALETTE_DEPTH (בלוחות עם ToF).

  • מבט פנימי על החיישן — ioctl חדש IOCTL_GET_RGB_STATS המחזיר רביעיית סטטיסטיקות ערוצים (R, Gb, Gr, B).

  • הגדרות הטיה מוכנות מראש ל-GenX320 — ioctl חדש IOCTL_GENX320_SET_BIASES עם ההגדרות המוכנות GENX320_BIASES_DEFAULT / LOW_LIGHT / ACTIVE_MARKER / LOW_NOISE / HIGH_SPEED.

  • omv.debug_mode() — פונקציה חדשה לבדיקה האם ממשק ניפוי הבאגים של USB פעיל.

  • Nema GPU — שילוב מנהל ההתקן NemaGFX/NemaVG של Cortex-M55 ב-STM32, עם מעבר ישיר (cut-through) ב-GPU במקום עבור draw_image.

  • PAG7936 — נוספו פלט סרגלי צבע, חשיפה אוטומטית / הגבר (gain) אוטומטי, מצב שינה ומצב MIPI.

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

  • MicroPython עודכן ל-1.24.0; ulab עודכן ל-6.7.3 (מוסיף keepdims).

  • סקריפט אתחול משותף — STM32 / i.MX RT / RP2 חולקים כעת _boot.py היוצר אוטומטית את מערכת הקבצים בזיכרון פלאש (flash)/SD עם main.py ו-README.txt המוגדרים כברירת מחדל, ומשחרר משתנים גלובליים זמניים של ההפעלה.

  • תשתית ל-STM32N6 — תמיכה בסיסית ב-STM32N6, מנהל התקן XSPI, מנהל MPU משותף, וחתימת קושחה/מאתחל (bootloader) ב-STM32.

  • מכונה וירטואלית עם computed-goto — הופעלה ב-STM32 וב-nRF להאצת המפרש.

תיקוני באגים

מצלמה וחיישנים:

  • תוקן חישוב ה-PCLK/חשיפה של OV5640 (שני נתיבי MIPI, תוקנה טבלת המחלקים).

  • וריאנט ה-Bayer-CFA של MT9V0xx מקבל כעת RGB565/BAYER/GRAYSCALE ומפיק נתוני Bayer גולמיים תקינים במקום לשגות.

  • הופעל תיקון הצללת עדשה של PAG7936 ותוקנה הזחת תמונת HD; set_framerate() מוגבל כעת לכל רזולוציה.

  • תוקן צילום תרמי של FLIR Lepton ב-i.MX RT1060 (תוקנו VoSPI CPOL/CPHA), ותמונות בזק (snapshot) של Lepton מחזירות כעת קודי שגיאה ספציפיים.

  • תוקן עיגול תדר של GenX320.

עיבוד תמונה:

  • תוקן שיבוש זיכרון ב-to_ndarray() בתמונות בגווני אפור.

  • תוקנה חיזוי הגבולות של debayer בהמרת Bayer→RGB/גווני אפור.

  • תוקן transpose של draw_image() בלוחות ללא SDRAM (חוצץ (buffer) מקוטע).

  • תוקן הטיפול בארגומנט בוליאני ב-Image.binary() ובדגל load_to_fb של ml.Model.

מערכת:

  • תוקנה תצורת פיני ה-SPI לקבלה-בלבד / שידור-בלבד ב-STM32 וב-i.MX RT.

  • חוצצי (buffer) ה-DMA של Ethernet ב-Portenta H7 הועברו ל-SRAM3 כדי ש-Ethernet יעבוד.

  • תוקן תו שנשמט בפלט הטקסט של ערוץ ניפוי הבאגים מעל USB; גדלי ההקצאה הדינמית של ML עוגלו כלפי מעלה כדי למנוע חוצצי (buffer) מודל קטנים מדי.

תמיכה בחומרה ובלוחות

  • Prophesee GenX320 — חיישן ראייה מבוסס אירועים (STM32F7 + i.MX RT1060).

  • PAG7936 — חיישן (עם מצב MIPI).

  • FLIR Boson 320/640 — מצלמות תרמיות (מנהל התקן IDD 4).

  • Nema GPU — האצה ב-STM32.

  • STM32N6 — תשתית למאתחל (bootloader)/XSPI.

  • VL53L5CX — נוספה תמיכה בפין הפעלת מתח.

שינויי API שוברי תאימות

שבירות API גלויות למשתמש בין v4.5.9 ל-v4.6.0. היקף: מודולי C של Python ב-modules/ וספריות Python ב-scripts/libraries/.

כל שינוי מתויג לפי מידת השפעתו:

  • עיקרי — רוב הסקריפטים שהשתמשו בו זקוקים לעריכות.

  • מינורי — API צר; משפיע רק על סקריפטים שהשתמשו בו.

  • התנהגות — אותו API, תוצאות שונות; בדקו מחדש סקריפטים מכווננים.

  • כלים — משפיע רק על צריבה / כלי מארח / זמינות לוחות.

השינויים מקובצים לפי השפעה בסדר זה. אם אתם רק רוצים להסב את הקוד שלכם, דלגו אל רשימת ההסבה בסוף. כל גיבוב (hash) של קומיט מקושר ל-diff שלו ב-GitHub. הערה: שינוי שם המודול sensorcsi בגרסה זו אינו שובר תאימות — sensor עדיין עובד ככינוי.

טווח ה-alpha בציור הוא כעת 0–255 (עיקרי)

הארגומנט alpha של draw_image() וכל שכבת על המקבלת אותו (FIR, ToF, תצוגה, TV, MJPEG, טבלאות אלפא) משתמש כעת בטווח 0–255 במקום 0–256. סקריפטים שהעבירו 256 לאטימות מלאה, או שחישבו אלפא כנגד 256, חייבים להיות מותאמים מחדש ל-0–255.

קומיט: 1f87b5bb6

שמות קבועי ה-ioctl של FLIR Lepton שונו (מינורי)

שלושה קבועי ioctl של Lepton קוצרו: IOCTL_LEPTON_SET_MEASUREMENT_MODEIOCTL_LEPTON_SET_MODE, IOCTL_LEPTON_SET_MEASUREMENT_RANGEIOCTL_LEPTON_SET_RANGE, IOCTL_LEPTON_GET_FPA_TEMPERATUREIOCTL_LEPTON_GET_FPA_TEMP. הדוגמאות המצורפות עודכנו.

קומיט: 12582d54d

שינויים ב-API של עיבוד-בתר ב-ML (מינורי)

ml.postprocessing הוא חדש בגרסה זו וה-API שלו השתנה במהלכה: מילת המפתח score_threshold בבנאי של yolo_v2_postprocess שונתה ל-threshold, ותוצאות עיבוד-בתר ריקות מחזירות כעת () במקום []. שם המודל המצורף yolov5_rgb_person שונה ל-yolo_v5_224_nano. ml.apps.MicroSpeech מעביר כעת **kwargs שרירותיים אל audio.init() במקום gain_db=24 קבוע.

קומיטים: d67bd1ad7, 979b4e8ee, b89b815b2, 6671d9df5, 5c2f4388c

AGAST הוא מזהה הפינות שבברירת מחדל (התנהגות)

find_keypoints() משתמש כעת ב-AGAST במקום ב-FAST כמזהה הפינות שבברירת המחדל בכל הלוחות. קבוצות נקודות המפתח (ולכן גם התאמות המתאר (descriptor)) שונות מגרסאות קודמות — בדקו מחדש צינורות נקודות מפתח מכווננים. הזרמת חוצץ הפריימים (frame buffer) ל-IDE מוגבלת כעת ל-20 הרץ כדי להפחית את העומס על USB.

קומיטים: da6bf6910, bc4e39246

מאתחל (bootloader), לוחות ותכונות שהוסרו (כלים)

מאתחל ה-CDC הישן הוחלף במאתחל (bootloader) חדש מסוג standard DFU מבוסס TinyUSB בכל הלוחות — מנגנון עדכון הקושחה השתנה; עדכנו את זרימת העבודה/הכלים לצריבה בהתאם. לוח ה-OpenMV Pro, בנייית ה-Raspberry Pi Pico העצמאית, ותכונת ה-IDE המרוחק לניפוי באגים ב-WiFi (wifidbg) הוסרו.

קומיטים: a03fc90d8, c2e616aae, af3ea774b, f8bca9799, 59a38a0d3, 7edeb4fbe, d58d77fa2

רשימת הסבה

להסבה נקייה ל-v4.6.0 העבודה האופיינית היא:

  1. התאימו מחדש כל ערך alpha של ציור/שכבת על מטווח 0–256 ל-0–255 (שינוי טווח האלפא).

  2. שנו שם של כל קבועי ה-ioctl של FLIR Lepton לצורות המקוצרות שלהם (שינוי שם ה-ioctl של Lepton).

  3. אם השתמשתם במעבדי-הבתר החדשים של ML, החליפו score_threshold ב-threshold, טפלו בתוצאה ריקה (), ועדכנו את שם המודל yolo_v5_224_nano (שינויי ה-ML).

  4. בדקו מחדש צינורות מבוססי find_keypoints() בעקבות שינוי מזהה AGAST (שינוי מזהה הפינות).

  5. עדכנו את זרימת העבודה לצריבת הקושחה עבור מאתחל ה-DFU החדש (שינויי המאתחל/הלוחות).