v4.6.0

الإصدار v4.6.0 هو إصدار رئيسي يضيف ميزات جديدة. أبرز ما فيه: أُعيدت تسمية وحدة الكاميرا من sensor إلى csi (مع اسم بديل sensor متوافق مع الإصدارات السابقة)، ووحدة جديدة ml.postprocessing، ودعم مستشعر الأحداث Prophesee GenX320 وكاميرات PAG7936 وكاميرات FLIR Boson الحرارية، ومحمّل إقلاع 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 جديد — محمّل إقلاع 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، مع تمرير مباشر عبر GPU في مكانه لـ draw_image.

  • PAG7936 — أُضيف إخراج أشرطة الألوان والتعريض التلقائي/الكسب التلقائي ووضع السكون ووضع MIPI.

تغييرات وتحسينات أخرى

  • تحديث MicroPython إلى 1.24.0؛ وتحديث ulab إلى 6.7.3 (يضيف keepdims).

  • برنامج إقلاع نصي مشترك — تتشارك الآن STM32 / i.MX RT / RP2 ملف _boot.py ينشئ تلقائيًا نظام ملفات ذاكرة الفلاش/بطاقة SD مع main.py وREADME.txt افتراضيين، ويُحرر المتغيرات العامة المؤقتة الخاصة ببدء التشغيل.

  • أساسات STM32N6 — دعم أساسي لـ STM32N6 ومشغّل XSPI ومشغّل MPU مشترك وتوقيع البرنامج الثابت/محمّل الإقلاع على STM32.

  • آلة افتراضية بقفز محسوب (Computed-goto VM) — مُفعَّلة على STM32 وnRF لتسريع المفسّر.

إصلاحات الأخطاء

الكاميرا والمستشعرات:

  • إصلاح حساب PCLK/التعريض في OV5640 (مساران MIPI، وجدول مقسّمات مصحَّح).

  • نسخة Bayer-CFA من MT9V0xx تقبل الآن RGB565/BAYER/GRAYSCALE وتُخرج بيانات Bayer خام صحيحة بدلًا من إصدار خطأ.

  • تفعيل تصحيح تظليل العدسة في PAG7936 وإصلاح إزاحة صور HD؛ وأصبحت set_framerate() الآن محدودة بسقف لكل دقة.

  • إصلاح التقاط FLIR Lepton الحراري على i.MX RT1060 (تصحيح VoSPI CPOL/CPHA)، وأصبحت لقطات Lepton الآن تُرجع رموز خطأ محددة.

  • إصلاح تقريب تردد GenX320.

معالجة الصور:

  • إصلاح تلف الذاكرة في to_ndarray() على صور تدرج الرمادي.

  • إصلاح تنبؤ حدود debayer في تحويل Bayer→RGB/تدرج الرمادي.

  • إصلاح transpose في draw_image() على اللوحات التي لا تحتوي على SDRAM (مخزن مؤقت مقطّع).

  • إصلاح معالجة الوسيطات المنطقية في Image.binary() وراية load_to_fb في ml.Model.

النظام:

  • إصلاح تكوين دبابيس SPI للاستقبال فقط/الإرسال فقط على STM32 وi.MX RT.

  • نقل مخازن DMA الخاصة بإيثرنت Portenta H7 إلى SRAM3 لكي يعمل الإيثرنت.

  • إصلاح إسقاط حرف في إخراج نص قناة التصحيح عبر USB؛ وتقريب أحجام التخصيص الديناميكي لـ ML إلى الأعلى لتجنّب مخازن نماذج أصغر من اللازم.

دعم العتاد واللوحات

  • Prophesee GenX320 مستشعر رؤية قائم على الأحداث (STM32F7 + i.MX RT1060).

  • PAG7936 مستشعر (مع وضع MIPI).

  • FLIR Boson 320/640 كاميرات حرارية (مشغّل IDD 4).

  • Nema GPU تسريع على STM32.

  • STM32N6 أساسات محمّل الإقلاع/XSPI.

  • VL53L5CX — أُضيف دعم دبوس تمكين الطاقة.

تغييرات جذرية في واجهة البرمجة

تغييرات جذرية ظاهرة للمستخدم في واجهة البرمجة بين v4.5.9 وv4.6.0. النطاق: وحدات Python بلغة C في modules/ ومكتبات Python في scripts/libraries/.

كل تغيير موسوم بمدى تأثيره:

  • رئيسي — معظم البرامج النصية التي استخدمته تحتاج إلى تعديلات.

  • طفيف — واجهة برمجة ضيقة؛ يؤثر فقط على البرامج النصية التي استخدمته.

  • سلوكي — نفس الواجهة، نتائج مختلفة؛ أعد التحقق من البرامج النصية المضبوطة.

  • أدوات — يؤثر فقط على أدوات الفلاش/أدوات المضيف/توافر اللوحات.

التغييرات مجمّعة حسب التأثير بهذا الترتيب. إذا كنت تريد فقط نقل الكود الخاص بك، انتقل إلى قائمة التحقق للترحيل في النهاية. كل تجزئة (hash) تعديل ترتبط بفرق التغييرات الخاص بها على 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

تغييرات في واجهة المعالجة اللاحقة لـ ML (طفيف)

ml.postprocessing جديدة في هذا الإصدار وتغيّرت واجهتها خلاله: أُعيدت تسمية الكلمة المفتاحية 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 ككاشف زوايا افتراضي على جميع اللوحات. مجموعات النقاط المفتاحية (وبالتالي مطابقات الواصفات) تختلف عن الإصدارات السابقة — أعد التحقق من خطوط معالجة النقاط المفتاحية المضبوطة. كما أصبح بث مخزن الإطارات في الـ IDE الآن محدودًا بسقف 20 هرتز لتقليل حمل USB.

التعديلات: da6bf6910، bc4e39246

محمّل الإقلاع واللوحات والميزات المُزالة (أدوات)

استُبدل محمّل CDC القديم بمحمّل إقلاع 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 الجديد (تغييرات محمّل الإقلاع/اللوحات).