مرحبا الرفاق!
خلال عطلة نهاية الأسبوع، تم عقد hackasborkaton - سباق على نماذج السيارات ذاتية القيادة على أساس donkeycar عدة بمساعدة X5 ، FLESS و المجتمع من عشاق ذاتية القيادة .
كانت المهمة على النحو التالي: أولاً كان من الضروري تجميع سيارة من قطع غيار ، ثم تعليمها اجتياز المسار. تم تحديد الفائز من خلال أسرع إنجاز لثلاث لفات. لضرب مخروط - تنحية.
على الرغم من أن مهمة التعلم الآلي هذه ليست جديدة ، إلا أن الصعوبات يمكن أن تنتظر على طول الطريق: من عدم القدرة على جعل شبكة wifi تعمل بشكل طبيعي إلى عدم رغبة النموذج المدرب في تجربة الأجهزة على طول المسار. وكل هذا في إطار زمني ضيق!
عندما كنا ذاهبون إلى هذه المسابقة ، كان من الواضح على الفور أنها ستكون ممتعة للغاية وصعبة للغاية ، لأننا حصلنا على 5 ساعات فقط ، بما في ذلك استراحة الغداء ، لتجميع آلة كاتبة وتسجيل مجموعة بيانات وتدريب نموذج.
آلة حمار
يتكون Donkeycar من حالة يتم فيها توصيل كاميرا بعدسة واسعة الزاوية (170 درجة) ، و Raspberry Pi3 + ، ولوحة تحكم مؤازرة ، وبرامج ، وكل شيء بشكل أساسي. ولكن كما اتضح لاحقًا ، قد يستغرق تجميع مثل هذا الجهاز البسيط في وقت محدود ومواطن الخلل العشوائية في المعدات وقتًا طويلاً ، ولن يكون لديك وقت.
المجسم
بدأت المنافسة بحقيقة أنه كان من الضروري أولاً تفكيك الآلة وتجميعها مرة أخرى. يجب أن نشيد بالمنظمين ، لم يُعرض علينا جمع مجموعة غير مفهومة من الأجزاء من الصفر ، ولكن تم منحنا الفرصة لفهم الجهاز باستخدام مثال جاهز. لقد وفرنا الكثير من الوقت من خلال التقاط صور لجميع الاتصالات ، وأعدنا الجهاز في غضون 10 دقائق.
التوصيل بآلة كاتبة والتحقق من العمل
بعد أن قمنا بتجميع السيارة ، كان هناك توقف مؤقت ، لأنه كان علينا توصيل السيارة بشبكة Wi-Fi والبدء في معايرة الهيكل. كما اتضح ، سيكون العمل مع Wi-Fi في المستقبل أحد أكبر المشاكل عند العمل مع Raspberry ، ويبدو أنه كان عليك استخدام Wi-Fi بهوائي.
قررنا ألا نشعر بالملل والاتصال عبر كبل Ethernet ، والذي يكمن دائمًا في حقيبتي ، جنبًا إلى جنب مع بقية الأشياء غير المرغوب فيها. لسبب ما ، إما أن الآلة الكاتبة لا تحتوي على خادم DHCP ، أو أنها لا تعمل ، أو لا ينبغي أن تكون موجودة على الإطلاق ، وأدركنا أن wireshark سيحصل بسهولة على عنوان IP المصدر عن طريق البث عند توصيل الكبل بـ Raspberry. وهذا ما حدث ، ولكن بعد تسجيل الدخول إلى الجهاز ، أمضينا الكثير من الوقت في محاولة تشغيل wifi. في النهاية ، تم طرد جميع المشاركين من ملف خاص حيث تم وضع التكوين.
معايرة الهيكل وتوصيل عصا التحكم
استغرق الأمر منا حوالي 35 دقيقة لتوصيل عصا التحكم ، بينما كنا نقرأ الأرصفة وفحصنا البلوتوث ، في محاولة لإقران الآلة الكاتبة وعصا التحكم. اتضح أن المشكلة تكمن في وجود عدد كبير جدًا من أذرع التحكم في الغرفة وتم إقرانها بشكل عشوائي مع سيارات من زملائها في السباق - كان من الممتع جدًا أن تجد أنك كنت تتحكم في هيكل سيارة عشوائية =)
كانت الخطوة التالية هي معايرة التوجيه والخانق ، أي PWM بدوره والغاز.
كان هذا أحد أهم المعلمات ، فقد كان مطلوبًا جعل القيمة مرتبطة بسرعة السيارة ويتواءم الطراز مع عنصر التحكم.
بالحدس ، حاولنا أن نجعل التسارع والانعطاف حتى تسير السيارة بسرعة كافية ، ولكن في نفس الوقت يمكن التحكم فيها.
لم يتبق سوى حوالي ساعتين حتى نهاية الحدث ، مع مراعاة أداء الفرق ، وكان من الضروري الإسراع بشكل عاجل. ركضنا لتدوين البيانات مع التفكير في أنه من الضروري إنشاء أكثر الظروف تنوعًا التي ستبقى فيها الآلة. افترضنا أنه عند بدء المنافسة ، من المرجح أن يتم إعادة ترتيب الأضواء ، وستظهر الأجسام الغريبة بالقرب من المسار ، وما إلى ذلك.
سجلنا حوالي 18 ألف صورة جنبًا إلى جنب مع قيم الخانق والانعطاف ، في محاولة لجذب الكثير من الأشخاص إلى الإطار ، ركضنا حول المسار ، وقفزنا فوقه ، وضعنا الكراسي ، وصنعنا الجسور ، ووضعنا الأضواء بشكل عشوائي ، وذهبنا في الاتجاه المعاكس.
أضفنا أيضًا الألبومات كتعزيز وحاولنا إضافة أكبر عدد ممكن منها!
في هذه الشوكةلقد قمت بتشفير الزيادات الثقيلة بشكل خبيث مع مغلف من بيل والعكس صحيح - كما تطلب الأمر أيضًا إعادة بناء البيئة للآلة الكاتبة ، مما أثر على الوقت.
بحلول الوقت الذي تم فيه تدريب النموذج الأول ، كان لدينا بالفعل رمز النموذج الثاني ، جلب الرجال بيانات جديدة من مسار مجاور وركضوا للتحقق من كيفية عمل النموذج الأول.
قاد النموذج الأول 3 لفات مع وجود أخطاء وأخذ 4 لفات. بعد ذلك ، فقدنا 20 دقيقة أخرى ، لأننا نسينا إدخال بطاقة SD في الجهاز.
تم تدريب النموذج النهائي على 19 ألف صورة مع زيادة مخصصة وتنظيف البيانات.
هكذا تبدو الشبكة نفسها:
يمكن ملاحظة أن هناك مجالًا للانعكاس ، يمكنك على الأقل قطع دفعة عادية للبدء ، لكننا قررنا أن نلمسها على الأقل ، حتى لا يحدث خطأ.
علاوة على ذلك ، فإن مخططات النموذجين الأول والثاني مع أفضل خسارة MSE قدرها 0.093 و 0.086 ، على التوالي.
يبدو أن الرسم البياني الثاني يبدو أفضل!
يتضح من الفيديو أننا قمنا بمعايرة التوجيه بشكل سيئ وقمنا بتنظيف مجموعة البيانات بشكل سيئ ، لكن هذا كان كافياً بالنسبة لنا.
فيديو من GoPro سجلناه بعد الإطلاق الرئيسي:
الاخير
كنا أول من بدأ السباق وذهبنا إلى المضمار ، لكننا كنا في حالة فشل ، وكانت شبكة Wi-Fi تتراجع باستمرار ، وكادت أن تكون خارج المنافسة. والآن ، عندما اقتربت البداية ، بدأت الآلة في العودة فجأة. على ما يبدو ، لقد خلطت شيئًا ما عند معايرة دواسة الوقود.
لكن لا شيء ، مما يضحك الجمهور كله ، تقدمت وحافظت على الحلقات الكريمة 8 أو 9 على المسار ، وتهربت بقوة ، لكنها ما زالت تحقق لنا نصراً مستحقاً!
أحاول ألا أنظر إلى الإطار.
شكر وتقدير
بفضل مجتمع ods.ai ، من المستحيل التطوير بدونه! شكراً جزيلاً لزملائي في الفريق: Valea Biryukova ، Egor Urvanov (Urvanov) ، Roma Derbanosov (Yandex). نحن نتطلع إلى مراجعة فيديو من فيكتور روجولينكو (FLESS).
ملاحظة: شكر خاص لفاليا بيريوكوفا ، التي ، للأسف ، كانت درجة الحرارة فيها 38.5 في اليوم السابق للمنافسة ، لكنها ساعدت كثيرًا في الارتباط .
أوروراي ، ذ