v2.7.0

v2.7.0 מודרניזה את ה-API של ההגבר האוטומטי / החשיפה האוטומטית / איזון הלבן של מודול sensor ליחידות פיזיקליות (dB / מיקרו-שניות), משפץ את find_displacement() המבוסס מתאם-פאזה (בהוספת סיבוב/קנה-מידה), ומוסיף את get_similarity() (SSIM), chrominvar() / illuminvar(), חוצצי פריימים נוספים, וספריית MQTT. זוהי גרסה גדולה שוברת-תאימות — קראו את השינויים שוברי-התאימות שלהלן.

עיקרים

  • API חיישן מודרניset_auto_gain() / set_auto_exposure() / set_auto_whitebal() משתמשים כעת ב-dB / מיקרו-שניות, עם get_gain_db() / get_exposure_us() / get_rgb_gain_db() תואמים.

  • מתאם פאזהfind_displacement() משופץ עם סיבוב / קנה-מידה ו-find_rotscale() / linpolar() / logpolar().

  • SSIM — דמיון מבני image.get_similarity().

  • חוצצי פריימים נוספיםsensor.alloc_extra_fb() / dealloc_extra_fb().

  • MQTT — ספריית MQTT חדשה.

  • שובר-תאימות: ה-API של הגבר/חשיפה/איזון-לבן של החיישן, מידות פריים של find_displacement() / FFT, find_number(), כלי הקושחה של WINC, ו-z_rotation() של AprilTag — כולם השתנו — ראו את השינויים שוברי-התאימות.

תכונות חדשות

  • חיישן — נוספו sensor.get_gain_db(), sensor.get_exposure_us(), sensor.get_rgb_gain_db(), מילת מפתח gain_db_ceiling ב-set_auto_gain(), תמיכת hmirror / vflip ל-MT9V034, ו-sensor.alloc_extra_fb() / sensor.dealloc_extra_fb() לחוצצי פריימים נוספים בזיכרון RAM.

  • תמונה — נוספו remove_shadows(), min() / max() (הפרשת פריימים), get_similarity() (SSIM) עם דוגמת דמיון-מבני, chrominvar() / illuminvar(), find_rotscale(), linpolar() / logpolar(), מילות מפתח threshold / offset / invert במסנני האדפטיביים mean() / mode() / median() / midpoint(), len() / אינדוקס על אובייקט נקודות המפתח, ו-.match() כגישה על אובייקט התאמת נקודות-המפתח.

  • ספריות / רשת — נוספה ספריית MQTT (עם דוגמת MQTT ב-WiFi) ומצב network.WINC.MODE_BSP לתכנות קושחת WINC על פני ה-UART לניפוי באגים.

  • דוגמאות — נוספו דוגמאות צריכת-חשמל-נמוכה deep_sleep.py / stop_mode.py, זרימה אופטית מתקדמת, וסקריפטי דוגמה לינארי/לוג-קוטבי; הקושחה מנתחת כעת uart.ini בעת האתחול כדי לאפשר REPL UART.

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

  • get_regression() קיבל מילות מפתח area_threshold / pixels_threshold ורגרסיה חסינה מהירה יותר (למעקב-קו / מירוץ); get_pixel() תומך כעת בתמונות Bayer; נוספה תשתית STM32H7 (כותרות CMSIS / HAL / מאתחל (bootloader) — לוח ה-H7 עדיין אינו שמיש); עודכנה קושחת WINC1500 המצורפת (19.4.4 / 19.5.2).

תיקוני באגים

הדמיה:

  • תוקנו באג חריגה-מגבולות בחיפוש-יהלום של find_template(), השחתת logpolar / linpolar, ו-illuminvar() שיוצא משליטה בערכי צבע קרובים-לאפס.

חיישן ומערכת:

  • תוקנו באגים בבקרת הגבר אוטומטית, שוחזר גודל MAIN_FB ב-snapshot() (כך ש-copy_to_fb ברזולוציה שונה, שינוי גודל FB, ואיגום זרימה אופטית עובדים שוב), פסק-הזמן של gethostbyname ב-WINC, ניקוי-הסטטוס של pydfu במאתחל (bootloader) של ה-H7, ומצבי עצירה/המתנה בצריכת-חשמל-נמוכה.

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

  • STM32H7 — תשתית (CMSIS / HAL / מאתחל (bootloader)); לוח OpenMV H7 עדיין אינו שמיש בגרסה זו.

  • WINC1500 — עודכנה הקושחה המצורפת.

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

שבירות API נראות-למשתמש בין v2.6.0 ל-v2.7.0. היקף: מודולי C של Python בתוך modules/ וספריות Python בתוך scripts/libraries/.

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

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

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

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

השינויים מקובצים לפי השפעה בסדר זה. אם אתם רק רוצים להסב את הקוד, דלגו אל רשימת הבדיקה להסבה בסוף. כל hash של commit מקושר ל-diff שלו ב-GitHub.

sensor.set_auto_gain() שופץ ל-dB (מהותי)

sensor.set_auto_gain() אינו מקבל עוד את מילת המפתח השלמה value= ואינו מחזיר עוד True / False. השתמשו ב-sensor.set_auto_gain(False, gain_db=...) (ערך dB מסוג float), קראו אותו בחזרה עם sensor.get_gain_db() החדש, ועטפו את הקריאה ב-try / except שכן כשל מעלה כעת ValueError.

Commits: b906c5f19

sensor.set_auto_exposure() שופץ למיקרו-שניות (מהותי)

sensor.set_auto_exposure() אינו מקבל עוד את מילת המפתח השלמה value= ואינו מחזיר עוד True / False. השתמשו ב-sensor.set_auto_exposure(False, exposure_us=...), קראו אותו בחזרה עם sensor.get_exposure_us() החדש, וטפלו ב-ValueError המועלה בעת כשל.

Commits: 7be0a7a18

מידות פריים של find_displacement() / FFT שופצו (מהותי)

מתאם הפאזה שופץ. image.find_displacement() מחזיר כעת אובייקט תזוזה (עם x_translation() / y_translation() — לשעבר x_offset / y_offset — בנוסף ל-rotation() / scale() ומילות המפתח החדשות logpolar / fix_rotation_scale); אובייקט הסיבוב-קנה-מידה הנפרד הוסר ו-find_rotscale() נוסף. קבועי מידת הפריים של FFT שונו-שם/הוסרו: sensor.B40x30 הוסר לחלוטין, ו-sensor.B64x32 / B64x64 שונו-שם לאותיות רישיות sensor.B64X32 / B64X64 (עם B128X64 / B128X128 חדשים).

Commits: c78f91b42, 213396d09

sensor.set_auto_whitebal() שופץ ל-dB (משני)

sensor.set_auto_whitebal() החליף את מילת המפתח השלמה value=[r, g, b] ב-rgb_gain_db=[r, g, b] (dB מסוג float) ומחזיר כעת None (מעלה ValueError בעת כשל) במקום True / False. השתמשו ב-sensor.get_rgb_gain_db() החדש כדי לקרוא את ההגברים בחזרה.

Commits: 30ecbdc4f

set_hmirror() / set_vflip() מחזירים None (משני)

sensor.set_hmirror() ו-sensor.set_vflip() מחזירים כעת None ומעלים ValueError בעת כשל במקום להחזיר סטטוס True / False. הסירו כל קוד המסתעף לפי ערך ההחזרה שלהם.

Commits: aeb023804

כלי הקושחה של WINC דורשים נתיב קובץ (משני)

כלי הקושחה של network.WINC השתנו: wlan.fw_dump() / wlan.fw_update() מקבלים כעת ארגומנט חובה של נתיב-קובץ-קושחה וה-WINC נפתח במצב תכנות (network.WINC(mode=...)). עדכנו קריאות ללא ארגומנט להעברת נתיב (לדוגמה wlan.fw_update("/winc_19_5_2.bin")).

Commits: fcc3b0b9c

image.find_number() דורש ROI בגודל 28x28 (התנהגות)

image.find_number() (LeNet) דורש כעת ROI בגודל מדויק של 28x28 הנכנס לתוך התמונה ומעלה שגיאה אחרת (במקום לרוץ על ROI שרירותי/מלא-תמונה). העבירו roi=(x, y, 28, 28) מפורש.

Commits: 4d09a13f3

סימן z_rotation() של AprilTag התהפך (התנהגות)

z_rotation() של AprilTag (וה-rotation() הקשור) משתמש כעת במוסכמת קואורדינטות ימנית, כך שהזווית המוחזרת מנוגדת בסימן לעומת גרסאות קודמות. סקריפטים התלויים בסימן הישן חייבים להפוך את הערך או להתאים את חישוב הזווית שלהם.

Commits: 7673aaf74

רשימת בדיקה להסבה

להסבה נקייה ל-v2.7.0 העבודה הטיפוסית היא:

  1. הסבו set_auto_gain() ל-gain_db= + get_gain_db() וטפלו ב-ValueError (שיפוץ ההגבר האוטומטי).

  2. הסבו set_auto_exposure() ל-exposure_us= + get_exposure_us() (שיפוץ החשיפה האוטומטית).

  3. עדכנו את find_displacement() לאובייקט התזוזה ושנו את שמות קבועי מידת הפריים של FFT (שיפוץ ה-find_displacement).

  4. הסבו set_auto_whitebal() ל-rgb_gain_db= + get_rgb_gain_db() (שיפוץ איזון הלבן) והפסיקו לבדוק את ערך ההחזרה של set_hmirror() / set_vflip() (שינוי ה-mirror/flip).

  5. העבירו נתיב קושחה לכלי fw_* של WINC (שינוי כלי ה-WINC).

  6. העבירו roi בגודל 28x28 ל-find_number() (שינוי ה-find_number) והתאימו את חישוב הזווית של AprilTag לסימן z_rotation() ההפוך (שינוי ה-z_rotation).

כל שאר הסקריפטים פועלים ללא שינוי.