v5.1.0#

v5.1.0 إصدار ميزات. ينمو الجزء أسفل مخزن الإطارات من مدرج تكراري إلى مجموعة من العروض الحية -- Board Info وMemory وStatistics وعرض Channels الجديد الذي يحوّل القيم التي ينشرها البرنامج النصي إلى عناصر واجهة ورسوم بيانية وأطياف وخرائط عمق ويسجّلها إلى ملفات -- ويحصل مخزن الإطارات على مُحدِّد مصدر للكاميرات متعددة المستشعرات، ويتعلم الـ IDE تحميل مستودعات الطرف الثالث من اللوحات والبرامج الثابتة والأمثلة والنماذج والملفات الهيكلية، وتنتقل تسجيلات الفيديو إلى H.264. وتُدعم لوحات ومستشعرات جديدة، وجرى تحصين أدوات البرنامج الثابت بتدقيق كامل لكل تغيير منذ v5.0.0، ونُقلت حفنة من السلوكيات من OpenMV Studio. وهو مبني على Qt Creator 14.0.2 ويضمّ البرنامج الثابت v5.0.1.

أبرز الميزات#

  • عروض الجزء -- يكتسب شريط عنوان جزء المدرج التكراري مُحدِّدًا يبدّل الجزء بين عروض Histogram وBoard Info (عتاد الكاميرا المتصلة وإصداراتها وقدراتها) وMemory (رسوم بيانية حية لكومة MicroPython وكل تجمّع UMA، مع تتبع الذروة) وStatistics (عدّادات حزم بروتوكول التصحيح وأخطائه وأحداث كل قناة) وChannels.

  • عرض Channels -- يمكن للبرنامج النصي نشر قنوات مسمّاة من البيانات وعناصر التحكم عبر بروتوكول التصحيح، ويعرضها الـ IDE مباشرةً: تسميات ومفاتيح تبديل وأشرطة تمرير ومربعات زيادة ونقصان وأزرار اختيار وحقول نصية وقوائم اختيار وأزرار ضغط وكتل نص تكتب قيمها إلى الكاميرا؛ ورسوم بيانية للأشكال الموجية مع التحريك والتكبير والعلامات والمشغّلات والسجل ومحلّل طيف؛ وخرائط عمق بلوحات ألوان الكاميرا نفسها وثلاثة مرشّحات تحجيم وتعيين للدرجات اللونية. يمكن تسجيل أي رسم بياني أو خريطة إلى ملفات CSV أو WAV أو NumPy أو Edge Impulse بصيغتي JSON وCBOR -- بما في ذلك Record All لقناة كاملة -- لجمع بيانات التدريب. وتبقى آخر القيم على الشاشة عند توقف البرنامج النصي.

  • مُحدِّد مصدر مخزن الإطارات -- تعرض الكاميرات التي تحوي أكثر من مستشعر صورة مُحدِّدًا في شريط عنوان مخزن الإطارات لاختيار المستشعر الذي يبث إلى الـ IDE (أو لإيقاف البث)، وأصبح مفتاح JPG مُحدِّدًا لوضع البث JPG / RAW، ويسمّي عنوان الجزء الصيغة التي وصل بها كل إطار.

  • مستودعات الطرف الثالث -- يمكن للمورّد نشر مستودع من اللوحات والبرامج الثابتة (قناتا الإصدار والتطوير) والأمثلة ونماذج التعلّم الآلي وملفات .pyi الهيكلية؛ ويثبّته الـ IDE من عنوان URL أو من مجلد أودعه مثبّت، ويدمجه مع محتواه الخاص، ويبقيه محدّثًا، ويتيح لك ترتيب المورّدين حسب الأولوية. يُدار من Preferences → OpenMV → Third Party Repositories.

  • عتاد جديد -- لوحة OpenMV N6 Classic (بما في ذلك تعريف محمّل الإقلاع الخاص بها، وقاعدة udev، ومدخل استرداد ROM-DFU) ومستشعرا FLIR Lepton 3.1R وUW.

  • تسجيلات H.264 -- يرمّز مسجّل مخزن الإطارات ومحوّل الفيديو الآن بصيغة H.264 بدلًا من MPEG-4 Part 2، مع فاصل ثابت للإطارات المفتاحية بحيث يمكن التنقل في التسجيلات بسلاسة، ومع تقريب معدّل الإطارات إلى عدد صحيح.

  • إصلاحات التدقيق -- رُوجع كل التزام (commit) منذ v5.0.0 مرتين بحثًا عن الانحدارات، مع اهتمام خاص بمسارات البرنامج الثابت ومحمّل الإقلاع وROMFS؛ والعيوب التي عُثر عليها مُصلَحة في هذا الإصدار (انظر إصلاحات الأخطاء).

ميزات جديدة#

  • عروض Board Info وMemory وStatistics في جزء المدرج التكراري، بتنسيق يملأ الجزء بالكامل في السمتين الداكنة والفاتحة ونص قابل للتحديد (cdea506655b, 7629a588db9, e21bd94a395, b55dcc412f6, fc744920011, e7dc3bf0092, 448e21db0bd).

  • عرض Channels -- مجموعة عناصر التحكم الكاملة (تسمية، مفتاح تبديل، شريط تمرير، مربع زيادة ونقصان، زر اختيار، حقل نصي، قائمة اختيار، زر ضغط، نص)، ورسوم بيانية للأشكال الموجية مع محلّل طيف (نوافذ Hann وHamming وBlackman والنافذة المستطيلة، وحساب المتوسط، وتثبيت الذروة، والتردد اللوغاريتمي)، ومشغّلات على الحافة الصاعدة والهابطة، وعلامات، وسجل، وتصدير الرسم؛ وخرائط عمق بلوحات الألوان Depth وRainbow وIronbow وEvent، وتحجيم بالأقرب / ثنائي الخطية / ثنائي التكعيب، وتعيين للدرجات اللونية بأوضاع Script Range / Auto Range / Equalize، وزر إيقاف مؤقت، وقراءة عند التحويم، وترويسة تعرض النطاق المعلَن والحد الأدنى / الأقصى / المتوسط للإطار، وSave Image؛ وتسجيل إلى CSV وWAV وNumPy وEdge Impulse بصيغتي JSON / CBOR مع تسمية Edge Impulse اختيارية، وتقسيم إلى أجزاء للالتقاطات الطويلة، وRecord All؛ وفاصل Channel Polling في تفضيلات البروتوكول (5b4f31a6b3a, d1252a24f14, bfd7fd72f94, d1c2ab02a5f, 4808b8ffe26, dfc323b4ec7, 61c077df9a5, 8c2cd6cf1f1, 1534225fcee).

  • مُحدِّد مصدر مخزن الإطارات وقراءة الصيغة -- اختر المستشعر الذي يبث على الكاميرات متعددة المستشعرات، أو Off؛ وتُعرض صيغة الإطار المستلَم في عنوان الجزء؛ وأصبح مفتاح JPG الآن مُحدِّد JPG Mode / RAW Mode (e76284bde9e, c2baff8d60c, afece31cb6a, 76448d7b9dd).

  • مستودعات الطرف الثالث -- مستودعات برامج ثابتة مدفوعة بالملفات تُدمج مع قائمة اللوحات المدمجة، وتحديثات عبر الشبكة مع صفحة في Preferences، وقناة برنامج ثابت تطويرية لكل مورّد، وأولوية مورّدين يتحكم بها المستخدم، وأمثلة المورّد مدمجة في File → Examples، ونماذج المورّد مدمجة في Model Zoo، وملفات .pyi هيكلية مخصّصة تُغذّى إلى إكمال الشيفرة، وتحذيرات تجاوز عندما يحجب مورّد محتوى مدمجًا، وفحص ترخيص للوحات المورّد (21a63a74949, b5512efe949, b15afdac479, 1fe693f0b61, ae11ffeffc4, cf47a37ba65, 100bdeb530b, 252924901f7, c75a81f2a4a, 3e7f077a738, 5c5aa3e657c, e3f36adbdcb, b04da8ee888).

  • إزالة التعليقات قبل التشغيل -- تُزال التعليقات من البرنامج النصي قبل إرساله إلى الكاميرا، مما يوفّر ذاكرة RAM الكاميرا في البرامج النصية الكثيرة التعليقات؛ وتُحفَظ الأسطر كما هي، فتبقى أرقام الأسطر في تتبع المكدس مطابقة للمحرّر (677546ee033).

  • علامة خطأ مضمّنة -- عندما يموت برنامج نصي باستثناء، يعلّم المحرّر السطر المسبب باللون الأحمر مع نص الخطأ بجانبه؛ وتُمسح العلامة عندما تحرّر الملف أو تشغّله مجددًا أو تقطع الاتصال (677546ee033).

  • السحب والإفلات على محرّر ROMFS -- تمرّ الملفات المُفلَتة من سطح المكتب عبر ترجمة البرنامج النصي وتحويل النموذج نفسيهما كما في Add File، إلى المجلد الذي أُفلتت عليه (677546ee033).

تحسينات المحرّر والطرفية والواجهة#

  • تُحسب المدرجات التكرارية من RGB كامل بعمق 8 بت بدلًا من جداول RGB565 الخاصة بالكاميرا، مع لوحة ألوان مشتركة للرسوم، وتعبئات ممزوجة بالشفافية، وخطوط شبكة أخفت (238e099373e, f126e8f34c0, cebbf0c9e2c).

  • عروض الجزء المخفية لا تقوم بأي عمل -- يتخطى المدرج التكراري حسابه وإعادة رسمه أثناء ظهور عرض آخر أو طيّ الجزء، ويلحق بالركب عند إظهاره مجددًا؛ وأُسكتت عمليات إعادة الرسم بحجم صفري (c8730df8399).

  • تُفتح البرامج النصية للأمثلة بسطر فارغ بعد الاستيرادات، وأُعيد تنسيق الأمثلة المضمّنة بالطريقة نفسها (1f88f617ec5, 87c8f7d41c7).

  • إكمال الشيفرة يعرض الأسماء الخاصة -- لم يعد خادم اللغة المضمّن يصفّي الأعضاء التي تبدأ بـ _، والتي تستخدمها وحدات الكاميرا (23ab5b38bb3).

  • macOS -- لم تعد مربعات مجموعات عناصر تحكم البروتوكول في التفضيلات متزاحمة، وأصبحت عروض العناصر محمية من انهيارات إمكانية الوصول في Cocoa، ويُحذَّر مستخدمو Apple Silicon من إعداد الأمان "Allow accessories to connect"، ويُحذَّر مستخدمو RT1062 عندما لا يكون إذن Input Monitoring ممنوحًا (تحديثات البرنامج الثابت تحتاجه)؛ ويُعرض كلا التحذيرين بعد الاتصال (7d7b69367bf, 69fe7ffc913, 742cb4d8c0b, 8890eb77834, 89646292e8d).

  • اختصارات وضع العارض -- عُطّلت الاختصارات الشاردة التي كانت تعطّل وضع العارض (والـ IDE العادي)، ولم يعد وضع العارض يحفظ اختصاراته الممسوحة في إعدادات الـ IDE الكامل (251b422f642, 0d153671c1d).

  • تُسمّى المستشعرات غير المعروفة بمعرّف الشريحة في شريط الحالة بحيث يمكن التعرف عليها وإضافتها إلى جدول المستشعرات (df561775b54).

البرنامج الثابت واللوحات والأدوات#

  • دعم OpenMV N6 Classic: مدخل اللوحة، وتعريف DFU لنظام Windows ورموز المثبّت، وقاعدة udev لنظام Linux (4ff4a1f239d, bdd6c96ef47, 25fcdc13c6a, 7730b699f60).

  • دعم مستشعرَي FLIR Lepton 3.1R وUW (12c03024f3c).

  • تسليم محمّل إقلاع IMX -- يستولي ماسك مُهيَّأ مسبقًا على محمّل إقلاع RT1062 لحظة تعداده، ليحل محل حلقة التشغيل لكل فحص التي كانت قد تفوّت نافذة الثانية الواحدة على مضيف مُثقَل (3d8b63c6859).

  • ملفات zip للبرنامج الثابت -- يقبل Load Custom Firmware الحزم التي تحتوي ROMFS فقط والحزم الخالية من ROMFS، ويُجهَّز البرنامج الثابت المخصّص أو التطويري للوحات IMX الموجودة أصلًا في وضع محمّل الإقلاع (b6f16f54c1a, 94d5fd5c30e).

  • أدلّة تجهيز خاصة للبرنامج الثابت التطويري / المخصّص، وصور محرّر ROMFS، والملفات المؤقتة لأدوات الفيديو، بحيث لا يمكن أبدًا برمجة ملفات قديمة من عمليات أخرى أو تحويلها عن طريق الخطأ (939154501af, a288fe712e7, 5c8c717adec).

  • فيديو H.264 -- تُرمَّز التسجيلات والتحويلات بصيغة H.264 مع فاصل ثابت للإطارات المفتاحية؛ ويُقرَّب معدّل الإطارات المسجّل القريب من عدد صحيح إليه بحيث تبلّغ المشغّلات عن 30 FPS بدلًا من 29.97 (6ad1968341d, d62c110e155, bab488a54fe).

  • مجموع تحقق لملف zip الموارد -- يُتحقق من تحديث موارد الـ IDE مقابل SHA-256 منشور إلى جانب الإصدار (677546ee033).

  • User-Agent صادق في الطلبات الموجّهة إلى خوادم OpenMV (c4279c0213e).

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

مرّتا مراجعة على كل تغيير منذ v5.0.0 وجدتا ما يلي وأصلحتاه (ccea3b17d01, 71826200611):

  • مسارا البرنامج الثابت ومحمّل الإقلاع -- كان تحميل ملف zip عبر Load Custom Firmware على لوحة موجودة أصلًا في وضع محمّل الإقلاع يبرمج بناء الإصدار الرسمي بدلًا منه؛ ويرفض مسار استرداد Alif الآن البناء المخصّص بدلًا من برمجة الإصدار الرسمي؛ وكانت لوحة N6 Classic المعطّلة تُصلَح بمحمّل إقلاع N6 العادي وبرنامجه الثابت؛ وكان جذر موارد طرف ثالث قديم قد يوجّه لوحة مدمجة معطّلة إلى ملفات المورّد؛ وكان ماسك IMX قد يمضي في البرمجة بعد انهياره، ويتجاهل Cancel أثناء انتظار محمّل البرمجة (flashloader)، ويترك المنفذ التسلسلي مفتوحًا بعد الإلغاء أثناء التهيئة؛ ولم يكن لمحمّل إقلاع N6 Classic قاعدة udev؛ وكان في رموز الخروج المقبولة لمثبّت تعريفات Windows خطأ مطبعي.

  • محرّر ROMFS -- كان Cancel أثناء قراءة ROMFS يبلّغ عن "Failed to unpack ROMFS!" وينتظر عشر ثوانٍ كاميرا لا تزال في محمّل الإقلاع؛ وكان Cancel أثناء الكتابة ينتهي بصمت مع ROMFS ربما يكون جزئيًا؛ وكان خطأ dfu-util أثناء الكتابة يُبلَّغ عنه كنجاح؛ وكان Cancel في مربع الحوار اللاحق يتجاهل كل التعديلات؛ وكان Auto Reconnect قد يتصل من تحت المحرّر المفتوح؛ وكان Edit ROMFS أثناء الاتصال يقطع الاتصال ويعيده أولًا دون داعٍ؛ وكانت الأدلّة المؤقتة للمحوّل تتسرّب. وبعد عملية ملغاة يُطلب من محمّل الإقلاع الآن مغادرة DFU حتى تعود الكاميرا من تلقاء نفسها.

  • مستودعات الطرف الثالث -- يُتحقق من مدخلات zip قبل الاستخراج (لا اجتياز للمسارات ولا روابط رمزية)، وتحتفظ عمليات تثبيت الأجزاء وإعادة التثبيت بالنسخة القديمة حتى تحل الجديدة محلها، ولم تعد لوحة مورّد مرفوضة تُسقط معها اللوحة المدمجة التي تداخلت معها، وكان قناع PID المفقود لا يطابق شيئًا في وقت التشغيل، ولم تعد صفوف فهرس الأمثلة / النماذج الأساسية تلتقط ملفات مورّد تحمل الأسماء نفسها.

  • مخزن الإطارات والمستشعرات -- كان مستشعر الأحداث GENX320 (معرّف شريحة أعلى من 0x80000000) يعطّل مخزن الإطارات؛ ولم يكن اختيار المستشعر المحفوظ يصمد بعد إعادة التشغيل؛ ولم يكن تفضيل "disable frame buffer" القديم يُرحَّل؛ وأصبح أمر مصدر البث مشروطًا بإصدار البروتوكول؛ وكان مقياس التركيز يتجمد أثناء إخفاء صفحة المدرج التكراري؛ وكانت صيغة الإطار تبقى في العنوان بعد قطع الاتصال.

  • مسار الاتصال -- كان بإمكان تحذيرات macOS أن تبتلع "Yes" في مطالبة ترقية البرنامج الثابت؛ وكان Model Zoo يُفتح دائمًا مطويًا دون استعادة أي تحديد؛ وكان الرجوع إلى محرك الأقراص الوحيد لمحرك الكاميرا غير قابل للوصول عندما تكون الكاميرا موصولة لأكثر من عشر ثوانٍ.

  • عرض Channels والمسجّل -- كان بإمكان أحجام الإطارات العدائية أن تتجاوز فحوصات الحجم؛ وكانت مسجّلات Edge Impulse تعيد تخصيص الذاكرة مع كل قطعة وأصبحت الآن محدودة بـ 64 ميغابايت لكل جزء؛ وكان مخطط (schema) يحوي فواصل في الأسماء قد يفهرس إلى ما بعد قائمة السجلات؛ وكانت السجلات المكررة تترك مسجّلًا قيد التشغيل يتيمًا؛ وتُسقَط الكتابات أثناء تجميد العرض؛ وتُحدَّث قائمة القنوات الآن عند أحداث إلغاء التسجيل وإعادة الإقلاع البرمجية.

  • الفيديو -- كان عرض فردي يدخله المستخدم يعطّل ترميز H.264 في بُنى libx264؛ وكانت تحويلات .bin الملغاة أو الفاشلة تترك إطارات يضمّها التشغيل التالي.

  • البروتوكول -- أصبح تفريغ القراءة الذي يُجرى قبل اكتشاف البروتوكول محدودًا (issue #336) (77cd13af76f)؛ ولم يعد ربط محرك أقراص الكاميرا يخسر السباق أمام وحدات التخزين الأخرى (9877480c304).

  • تحذير -Wdeprecated-copy في غلاف معلومات المنفذ التسلسلي (abcfaa8af5e).

التعريب#

  • حُدّثت الكتالوجات الـ 37 جميعها لعروض الجزء، وعرض Channels وخريطة عمقه، وكل سلسلة نصية جديدة في هذا الإصدار (1b71f243733, dc13c23ed81, a7debafdafa, 173a57422f7).

دعم المنصّات والأدوات#

  • أساس Qt Creator: 14.0.2.

  • رُفع إصدار OpenMV IDE إلى 5.1.0.

  • البرنامج الثابت المضمّن: v5.0.1 (انظر سجل تغييرات البرنامج الثابت).

  • لوحات ومستشعرات جديدة: OpenMV N6 Classic؛ وFLIR Lepton 3.1R وUW.

التغييرات الكاسرة#

لا شيء للمشاريع الحالية. أصبح مفتاح JPG في شريط عنوان مخزن الإطارات الآن مُحدِّد JPG Mode / RAW Mode، ويُرحَّل إعداده القديم "disable frame buffer" إلى مدخل Off في مُحدِّد المصدر الجديد. وتُزال التعليقات من البرامج النصية قبل تشغيلها؛ فالبرنامج النصي الذي يعتمد على قراءة نص مصدره في وقت التشغيل لا ينبغي له ذلك.