لقد صنعنا كاميرا لاكتشاف AprilTag و ArTag باستخدام mROS. تواصل عبر Uart أو Ethernet.
حاولنا JeVois و OpenMV ، ونقدر الإيجابيات والسلبيات ، وقمنا بتجميع الكاميرا.

ابحث عن العلامات المرئية واتجاه الروبوت استنادًا إلى البيانات. نحن نعمل على تطوير
روبوت لجمع كرات الجولف في مجال القيادة . الآن في العالم تبيع شركة واحدة فقط روبوتًا لحل هذه المشكلة. السوق واعد للغاية ، فقد شجعنا على تحويل المشروع من DIY إلى شركة ناشئة في مجال التكنولوجيا.
باستخدام GPS بدون RTK للتنقل في الروبوت ، يصعب تحقيق الدقة المطلوبة للبحث بشكل صحيح عن قاعدة وموقف للسيارات. باستخدام Real Time Kinematic ، سأواجه مشاكل عند الاقتراب من المباني. لقد جربنا خيارات مختلفة وقررنا صنع الكاميرا الخاصة بنا للبحث عن علامة بصرية عند مدخل القاعدة.
جزء من تطوير الروبوت كان وقوفه في محطة الإرساء لتفريغ حجرة الكرة وشحن البطاريات. فكرنا لفترة طويلة في كيفية إيقافه ، واتفقنا على أن يجد الروبوت كائنًا ضوئيًا ساطعًا ويتبعه.
تم اختيار علامتي AprilTag أو ArTag كهدف ، اعتمادًا على كيفية إظهارهما في الحقل. لأن نحن لا نعاني من متلازمة
NIH - بدأ البحث عن كاميرات رؤية الجهاز مع دعم هذه العلامات ومع دعم النص على الكاميرا مباشرة.
جيفوا الأولى
من ما تم العثور عليه بسرعة -
JeVois ، الذي طوره مختبر جامعة جنوب كاليفورنيا. لسوء الحظ ، كان علي أن أطلب إلى روسيا عبر الأمازون ، لم يكن هناك بائعون داخليون ولن يكون هناك أي بائعين على ما يبدو - يبدو أن التسويق والمبيعات يتم من قبل المطورين أنفسهم (لقد فوجئنا تمامًا عندما اضطررنا إلى التبديل من Jevois إلى Jevois inc لشراء كاميرا ، ثم تبحث عن رابط إلى الدليل - حدد الكاميرا في مكان ما في منتصف 10-12 موقعًا).

كانت عمليات التشغيل الأولى على الكمبيوتر مشجعة للغاية ، بشكل عام ، كل شيء يعمل بشكل صحيح بمجرد ظهوره في الصندوق وبدا مثيرًا للاهتمام بما فيه الكفاية. ومع ذلك ، بعد الاختبارات مع الاتصال بلوحة التحكم ، أصبحت أربع مشاكل خطيرة واضحة:
إن 60-90 إطارًا في الثانية الموضحة في المواد الإعلانية هي بدقة 160 × 120 أو 320 × 240 ، وهي ليست مناسبة على الإطلاق لمواقف السيارات - لا يزال الالتقاط مرغوبًا من مسافة لا تقل عن 5 أمتار. ولكي يسقط مربع في الحبوب 160x120 من 6-8 أمتار - تحتاج إلى جعله بحجم نصف متر على الأقل وعند الاقتراب منه ، يغلق الإطار تمامًا ، ثم يتوقف عن الكشف على الإطلاق.
استهلاك 800mA ، في حين أن الطاقة تكون فقط عبر كابلات USB مع USB صغير ، والتي يمكن أن تصمد أمام هذا التيار دون انخفاض الجهد. اتضح أنه من الصعب جدًا العثور على كابل بطول نصف متر على الأقل بمثل هذه الميزات - تم اختيار حوالي 15 خيارًا ، ولم تكن النتيجة مرضية للغاية على أي حال.
الكاميرا إما عمياء في الليل أو يومض في النهار. يعمل التوازن التلقائي بشكل يتجاوز الخير والشر.
يتم تبريد الكاميرا بواسطة مروحة. المروحة صغيرة جدًا ، والسرعة عالية - ضوضاء عالية التردد أو ببساطة صرير.
الروبوت الصراخ هو آخر شيء أردنا القيام به.
تعد كتابة كود التنفيذ داخل الكاميرا وسيلة ترفيه منفصلة - يعد تثبيت البيئة أمرًا مربكًا إلى حد ما ، ويستغرق التجميع والتحميل على بطاقة SD ما لا يقل عن 2-5 دقائق. نعم ، لا يوجد فلاش - كل شيء موجود على بطاقة SD.
الخلاصة: كاميرا للعب مع هواة في الداخل وإضاءة جيدة. في الوقت نفسه ، سيكون من المرغوب فيه إذا كان المتحمسون طلابًا - فقد ذكّرتني الواجهة والتوثيق وأساليب العمل مع الكاميرا بشكل واضح بالعمل المخبري للطلاب ، حيث لم يتم إيلاء أي اهتمام تقريبًا لراحة العمل مع النظام والتجاوزات الأخرى. هذا عن وحدات C ++ ، بالطبع. يمكن تحرير نصوص Python من خلال Jevois Inventor ، ولكن FPS أيضًا أقل بكثير من ذلك. خارج المبنى ، لم تنج الكاميرا حتى من أمطارين ، وسدت المروحة الأوساخ في الميدان بسرعة الفضاء.
النتيجة - أنها ليست مناسبة للاستخدام على الروبوت ، ولكن تم إثبات الإمكانية الأساسية لوقوف السيارات.
OpenMV 3 وجميع متغيراته

في وقت البحث الأول ، لم يكن متاحًا ببساطة - كانت هناك حملة على
Kickstarter .
بعد أن لعبنا بما فيه الكفاية مع JeVois وألقيت 100 دولارات في سلة المهملات - تم العثور على بائع بالأسهم وتم شراء قطعتين.
بشكل عام ، فإن الانطباعات ممتعة للغاية - واجهة مدروسة بشكل ملحوظ في OpenMV IDE ، وتجميع الثعبان الشفاف ، ومن الملائم مشاهدة عمل الخوارزمية وتصحيحها. ومع ذلك ، كانت هناك مشاكل هنا:
- يمكن أن تكون الدقة موجودة ، ولكن يمكن البحث عن AprilTag فقط في مساحة لا تزيد عن 200 × 200 بكسل. نعود إلى مشكلة الحبوب ، إلخ. أوصى المطور أولاً بسحب النقط ، ثم انظر إلى الرموز الموجودة فيها. ولكن على شيء آخر بخلاف الخلفية العادية (من الناحية المثالية جدار أبيض) لا يعمل هذا ، فالعشب الأخضر والشمس الساطعة على الخلفية يحولان كل شيء إلى عصيدة. بالإضافة إلى FPS تنخفض إلى 5 كحد أقصى.
- مستشعر Omnivision رخيص + بصريات رخيصة = صورة صابونية. بصريا ، هذا ليس ملحوظًا جدًا عند مشاهدة دفق فيديو ، ولكن عند عرض إطارات فردية ، يكون مرئيًا بوضوح.
- لا يوجد ستارة IR ، ولكن هناك إضاءة IR. [ماذا؟]
- لا توجد حماية من البيئة الخارجية. لا على الإطلاق.

تم تصحيح البرنامج النصي على هذه الكاميرا ، وتم إجراء عدة عشرات من مواقف السيارات. ومع ذلك ، بعد أن انتقل الروبوت من موسكو إلى سانت بطرسبرغ والعودة ، توقفت الكاميرا عن البدء - خرج منظم الطاقة. كان الإجراء الواضح هو التغليف واستقرار الطاقة. وهنا تم اكتشاف الشيء الأكثر إثارة للاهتمام - الحالة مع IP المناسب لهذه الكاميرا ببساطة لا يمكن العثور عليها ، أو كانت صناديق ذات أغطية شفافة ، بدون حوامل داخلية ومدخلات / مخرجات كابل ضيقة. نتيجة البحث ، تم العثور على كتلة من كاميرات المراقبة الصينية الرخيصة مع الحالات المناسبة. تم شراء الكاميرا وحرقها ، وقفت نسخة ثانية من OpenMV بدلاً من اللوحة ، وعمل كل شيء.
لكن المساء والليل أصبحا عقبة لا يمكن التغلب عليها - ليس هناك ستارة IR.
النتائج: الكاميرا ملائمة للغاية للنماذج الأولية ، والموارد محدودة ، ولا توجد حماية من البيئة الخارجية على الإطلاق (ثم ذهبت الكاميرا الثانية إلى المجمد الصناعي ولم تنج -30). ليس جيد
ثم أصبح من المثير للاهتمام بالنسبة لنا ما هو نوع الألواح التي حصلنا عليها من الكاميرات الصينية
استنساخ HiSilicon
بعد الفحص الدقيق ، تبين أن اللوحة تحتوي على معالج ARM ثنائي النواة ، ومعالج DSP ، وستارة IR ، وإضاءة IR ، ومستشعر لائق من Sony ، ويتم تغطية اللوحة بمركب وقائي + مبيت للشارع. ما تحتاجه بالضبط - يبقى جمع البرامج.
في الداخل تبين أن نسخة لينكس تعمل بشكل جيد من HiSilicon + u-boot.
اضطررت إلى تنزيل SDK من الموارد الصينية والتعامل مع التجميعات. من حيث المبدأ ، لم يتم العثور على أي شيء رهيب على طول الطريق ، باستثناء أنه كان من الضروري إصلاح عدة ملفات داخل SDK - توزيع Linux الذي كانت عليه SDK قديمة جدًا ، وقد تغيرت بعض ملفات الرأس منذ ذلك الحين. حسنًا ، كان علي تغيير القشرة من zsh إلى bash. سأحذف التفاصيل ؛ للخير ، يجب أن تكون هذه مقالة منفصلة.
ساعدت هذه الموارد:التحليل ، الاتصال بالكاميرانموذج لمخطط تجميع البرامجثم سار كل شيء وفقًا للمخطط المعروف:

في معظم الوقت الذي استغرقه الحصول على الصورة من المستشعر ، أنهيت الباقي في 4 ساعات فقط ، فقط أقوم بتحويل الخوارزمية المصححة من Python إلى C ++.
استغرق العمل مع المستشعر حوالي أسبوع ونصف. بالطبع لا يوجد / dev / video0 في هذه الأجهزة ، الأجهزة شبه عارية مع العمل المباشر مع الذاكرة والمنافذ.
يجب أن نقول على الفور أن العينات من SDK تعمل بدون تعديل فقط على لوحات تصحيح ملفات SDK هذه ، وإلا فإنها تتطلب الكثير من التعديلات الطفيفة. مضحك كما قد يبدو ، المشكلة الرئيسية هي تحديد أي مستشعر في الكاميرا ، لأنه يكتب الصينيون أحدهم في الوصف ، والآخر يتم وضع علامة على اللوح ، ويتم تهيئة النموذج الثالث في البرنامج. على سبيل المثال ، تحتوي الكاميرا على مستشعر IMX323 في الوصف ، ويتم تمييز اللوحة على أنها SC2235 ، وعندما يتم إطلاقها في البرامج النصية init ، تبدأ على أنها AR130 ، ويقوم برنامج الكاميرا بتهيئتها على أنها SC2235P.
أسباب كل هذا بسيطة للغاية: بالنسبة للمستخدم النهائي ، أن IMX323 ، و SC2235 متشابهان ، والصورة متشابهة جدًا. تم تجميع النواة والجذور مع النصوص البرمجية من SDK مع الحد الأدنى من التغييرات ولم تهتم ببرنامج نصي منفصل لكل نموذج - فقط معلمات الإطلاق صحيحة ، وترك الاسم كما كان. في برنامج العمل مع الكاميرا ، تم بالفعل تشغيل الجزء الثاني من تهيئة DSP باستخدام المستشعر والنموذج الدقيق للكاميرا مهم بالفعل هناك - وبالتالي ، فإن السجلات تحتوي بالفعل على النموذج الدقيق - SC2235P. P - هذا مهم ، إنه جهاز استشعار مختلف من حيث الخصائص ، والذي يعمل حتى بتردد ناقل مختلف قليلاً ودقة مختلفة مقارنة بـ SC2235.
الجزء الثاني من البحث هو أوراق البيانات على أجهزة الاستشعار ، والتي ليست كذلك بشكل عام. لذلك ، اضطررت إلى إعادة بناء وحدة hi_i2c مع الطباعة إلى السجل عبر printk واستبدالها في التفريغ الذي تمت إزالته من الكاميرا ، وكتابة مخمد تكوين DSP لمعالج الفيديو وإزالة التكوينات من الكاميرا العاملة ، بالإضافة إلى عدة مرات للنظر في برامج التشغيل من مشروع DafangSoftware. بالتفصيل ، يرسم هذا 3-4 مقالات منفصلة ، أعتزم كتابتها بعد NG.
في النهاية ، تحول كل شيء بشكل أفضل مما كان متوقعًا - عمل واثق لالتقاط AprilTag من 6 أمتار حتى في الظلام الدامس تقريبًا ، 25-12 إطارًا في الثانية ، وحدة التحكم في التحكم في وقوف السيارة PID ، إلخ.
والنتيجة - إنها الأكثر أهمية للعمل في الميدان ، وقد تم أخذ أشياء كثيرة في الاعتبار للحماية من الظروف الخارجية. الشيء الوحيد الذي لا يمكن التحقق منه بشكل كامل هو العمل في الشمس الساطعة ، حيث تدهور الطقس منذ أكتوبر.
فكرة للتنمية
وهنا كانت لدينا فكرة - لدينا في أيدينا تناظرية لـ OpenMV مع ميزات أفضل للأجهزة والإنتاج الضخم. يبقى إحضار العمل بالكاميرا إلى مستوى OpenMV ، إلى الميكروبيثون هناك ، وإنشاء IDE مناسب والتحقق مرة أخرى من كيفية عمل البرامج النصية الحالية من OpenMV. بالإضافة إلى ذلك ، تم نقل mRos بالكامل إلى هناك ، وهذا يوسع على الفور استخدام هذه الكاميرات لأنظمة ROS.
ونتيجة لذلك ، نخطط لتقديم نظائر OpenMV في مارس و
mROS بحلول مايو.
من أجل تقليل سعر تخصيص الكاميرا ، نحن على استعداد لتقديمها لك.
املأ النموذج وسنتصل بك عندما نكون مستعدين لطلب الدفعة الأولى.