Python + Raspberry Pi + Pixhawk و quadrocopter. أو كيف لا تصنع الروبوتات

مرحبا يا هبر!

اسمي Aleksey ، منذ 7 سنوات كنت مطورًا رائدًا لحلول التلفزيون الذكي في شركة تطوير مخصصة كبيرة من إيجيفسك. في كل عام نقوم بإجراء مسابقة لزينة السنة الجديدة ، وفي كل مرة لا نقوم بتزيين أي شيء ، لكننا قطعنا كل أنواع الأشياء التكنولوجية. هذه المرة عبروا الطائرة بدون طيار وتطبيق التلفزيون الذكي. وما جاء منه - اقرأ أدناه.

كانت الفكرة ممكنة جدا. أرادوا صنع quadrocopter في شكل مزلقة سانتا كلوز ، والتي من شأنها تقديم هدايا للموظفين إلى المكتب للموسيقى. وفي الوقت نفسه ، كان عليه أن يتنقل في الفضاء بمساعدة تحليل علامات ArUco ، والتفاعل مع التطبيقات التلفزيونية ("تفجير" الدخان من الأنابيب مع مسامير العمل ، ونفاد الحيوانات للقاء / رؤية قبالة quadrocopter).

ولكل ثلاثة أشهر. بالطبع ، لم يكن لدينا وقت.

على الرغم من أنه في أوقات مختلفة ، كان ما يصل إلى سبعة أشخاص يعملون في المشروع ، إلا أن النتيجة لم تكن مثالية. بشكل عام ، تعلمنا فقط كيفية تشغيل المروحية وكتب تطبيقات لأجهزة التلفزيون. قم بإعداد تفاعل quadrocopter مع أجهزة التلفزيون. لكن أول الأشياء أولا.



لا أتذكر في رأسه المريض (بالتأكيد ليس في رأسي ، لكن هذا ليس دقيقًا) الفكرة نشأت لإطلاق قاذفة كوادوكوبتر في المكتب. المهمة جديدة وليست سهلة ، لكننا لم نجد أي شيء يتجاوز قوتنا فيها. نعم ، بحثنا عبر الإنترنت بهدف العثور على مكتبة للتحكم في جهاز التحكم في المروحية. نعم ، كان من الضروري نقل صورة الدفق من كاميرا الويب إلى العميل وتحليلها على الخادم. نعم ، كان من الضروري صنع بوابة قنبلة. نعم ، يجب أن تكتب بشكل عام غلافًا يجمع كل هذا في حد ذاته. ماذا بعد؟ لقد قمنا بالفعل بكل هذا (باستثناء التحكم في وحدة التحكم). لذلك ، أعطيت المشروع ضوء أخضر.

الجهاز


يتكون كل خطأ تطوري لطائرة هليكوبتر تقرع فوق رأسك ، من حيث المبدأ ، من مجموعة واحدة من الآليات والمخططات. هذا هو:

  1. تحكم
  2. المحركات المروحة
  3. البطارية
  4. تحكم السرعة (ESC) ،
  5. هوائي القياس عن بعد
  6. وحدة GPS والبوصلة ،
  7. الكاميرا.

آخر نقطتين اختيارية. يمكن رؤية مخطط دارة صديق الطائرة هنا:



يتم وضع هذا الخير على القضية. ومع ذلك ، قرر فيلق لجعل الخاصة بهم. لأن:

  • نفسك مع شارب
  • بحاجة إلى بدن بالضبط في شكل زلاجة ،
  • كان بالفعل مكلفة غير لائق.

المراقب المالي




الجزء الأكثر أهمية في أي يرقة طائرات الهليكوبتر. إنه يحتوي على مقاييس تسارع في ثلاثة محاور ، برامج ثابتة ، مدخلات لتركيب الأجهزة الطرفية وتوصيل المحركات ، وإخراج للتحكم. وبدون ذلك ، لن تطير الطائرة بدون طيار في الهواء. تعتبر القطعة مهمة جدًا بحيث يتم تثبيتها على منصة خاصة لامتصاص الصدمات لتقليل آثار الاهتزاز والصدمات. شيء مثل هذا:



اخترنا وحدة تحكم رئيسية نسبيا. "نسبيًا" ، لأنني بعد ذلك نظرت عن كثب إلى الوحوش التي يتم تقديمها للأعمام الخطرين ... ومع ذلك ، تحتوي وحدة التحكم على نظام GPS ، بوصلة ، طيار آلي ، وجميع أنواع الكعك الجيد الآخر ، تدعم ما يصل إلى 8 محركات.

بالمعنى الدقيق للكلمة ، والمقصود من هذه الضوابط ليس فقط لإخوانه عموديا الارتفاع. يمكن تثبيتها على أي منصة متحركة ، بدءًا من طائرات الهليكوبتر والطائرات التي تنتهي بالسيارات والقوارب. حفنة من حالات الاستخدام. لكننا كنا مشتتا بعض الشيء.

محركات




هناك عدد كبير من هؤلاء الأصدقاء. جولة ، مربع ، منحنيات ، منحرف ، كبيرة ، صغيرة ، باهظة الثمن ورخيصة. الفرق الرئيسي: الحد الأقصى لاستهلاك الطاقة والقوة الحالية وعدد الثورات في الثانية. من الناحية المثالية ، يجب أن تكون الزلاجة قادرة على رفع علبة من البيرة (0.5 كجم). بعد تقدير الوزن الكلي للهيكل ، قمنا بحساب قوة الرفع التقريبية المطلوبة وأخذنا محركات قوية عالية الجودة. كما اتضح لاحقًا ، لم يجروا أبدًا طاقتهم الكاملة. لكن الأفضل هو أكثر من أقل ...

البطارية




المصدر الوحيد للطاقة التي من خلالها ستبقى الكاميكازي في الهواء. خلال العملية ، تم العثور على العديد من النقاط المثيرة للاهتمام.

أولاً ، يأكل كعب التكنولوجيا الصاخب الطاقة مجانًا. سقطت العلبة في الوقت الحالي ، وتستغرق وقتًا طويلاً لشحنها.

ثانياً ، إنه لا يأكل فحسب ، بل يعرف أيضًا كيفية ترك تهمة "في الحجز". الفكرة جيدة ، لأنه عندما يتم الوصول إلى عتبة الجهد الكهربائي ، تقطع السيارة الرحلة وتهبط بشكل بسيط ، ولكن يتم التعبير عن ذلك في حقيقة أن العلبة "هبطت" بشكل أسرع.

تحكم السرعة




شريحة صغيرة ، والتي بدونها لن تعمل المحركات ببساطة. مصممة لتوزيع الجهد من البنوك إلى المحرك. شيء مهم للغاية ، وعادة ما يأتي مع محرك تم شراؤه.

هوائي القياس عن بعد


"

في جوهرها ، المعدات الطرفية ، ومع ذلك ، بدونها ، لن يكون من الممكن التحكم في فرع المسدود لتطوير الأجسام الطائرة. بالإضافة إلى ذلك ، يتم استخدام القياس عن بُعد ليس فقط للتحكم ، ولكن أيضًا لنقل إشارة الفيديو من الكاميرا ، لذلك عادة ما يكون هناك هوائيات. بالمناسبة ، يتم القياس عن طريق إرسال الإشارات وإرسالها إلى قائمة القنوات. يمكن أيضًا التحكم فيها برمجيًا ، لكن هذا غير مستحسن بشكل قاطع ، لأن هذه هي الطريقة التي نتخلى بها عن الطيار الآلي السلكي ونكتب ملكنا. على الركبة. والمواد والعصي. في الليلة الماضية. كيف نحب

وحدة GPS




الطريقة الرئيسية وتقريبا الطريقة الوحيدة لوضع مدمرة الأعصاب الطائرة في الفضاء. عادة ما تحتوي وحدة GPS أيضًا على بوصلة. لمنعها من التأثير على أي شيء أثناء الرحلة ، يتم وضع الوحدة على شريط خاص حتى لا يؤثر أي شيء على الإطلاق. استخدمناها فقط من أجل البوصلة ، لأن GPS في الغرفة ليس جيدًا في اللحاق بالركب. يدعم أنظمة تحديد المواقع الأخرى.

مثل أي نظام GPS يحترم نفسه ، فإنه يمكن أن يخطئ. الخطأ يختلف من عدة أمتار إلى عدة قارات. ولكن بشكل عام ، جهاز ضروري في الشارع للقيام بمهام على مسافة.

الكاميرا




هذا الذي يتم كل شيء. عاصفة رعدية من المطارات الإنجليزية لا يمكن الدردشة فقط تحت الكاميرا. يمكن أن تتحكم وحدة التحكم ، وتتحكم فيها عن بُعد ، وتوفر إعدادات وأدوات مفصلة للغاية لإدارتها. لكننا لم نستخدمها كلها. وقت اخر

الإدارة


يتم التحكم في جميع الحرف الهندسية العاقلة باستخدام أجهزة التحكم بشكل أساسي عن طريق برنامج واحد: Mission Planer. يبدو شيء مثل هذا:



اقرأ المزيد عنها هنا .

يقدم أوسع مجموعة من الميزات والإعدادات. هناك تخطيط لمهمة الرحلة ، وتحديد الموقع الجغرافي ، والتحكم اليدوي ، وإعدادات مختلفة ومعايرة المعدات.

المادة رقم 1: استخدم فقط ما تحتاجه


نعم ، البرنامج ضروري ومفيد. من حيث المبدأ. ولكن ليس من أجل مهمتنا ، لأنه يجب التحكم في مقسم الهواء بواسطة برنامج ، ودمرنا الكثير من الوقت للتعامل مع هذا المجدول.

التحكم اليدوي نفسه يمكن القيام به مهما شاء قلبك. هناك إعدادات للتحكم عن بعد ، لعصا التحكم. يمكنك عرض التحكم على الماوس ولوحة المفاتيح. الشرط الرئيسي هو معايرة لوحة التحكم. حسنا ، إدارة يدويا. نظرًا لأننا مطورون كسولون ، لم نكن نريد الإدارة يدويًا. كنت أرغب في أن تطير الطائرات العمودية بنفسها.

برنامج التحكم


على شبكة الإنترنت ، وجدوا هذه المكتبة فقط ، المصممة للتحكم البرنامجي في شكل الطائرات. وكتب (لفة طبل) في الثعبان. بشكل عام ، بالنسبة للإصدارات 2.x ، ولكن أيضًا على Python 3.5 ، كان يعمل بثبات. المكتبة لديها وظائف غنية وتوثيق جيد نسبيا. ولكن قبل أن تبدأ في كتابة رمز الطائرة بدون طيار للتحكم الضخم ، تحتاج أولاً إلى ... نعم ، تحتاج إلى الاتصال بوحدة التحكم.

تم استخدام الكمبيوتر الصغير Raspberry Pi كمكون لبرنامج التحكم ، والذي تم نشر خادم الويب عليه في إطار aiohttp.

يمكن العثور على مخطط وتعليمات توصيل "التوت" ووحدة التحكم هنا .

بشكل تخطيطي ، يبدو كما يلي:



طريقة الاتصال هي هذه. يتم توصيل جهاز التحكم والتوت بالأسلاك وفقًا للمخطط المحدد. بهذه الطريقة ، يتم محاكاة إشارة الراديو المرسلة والمستلمة من قبل وحدة التحكم. على التوت ، تحتاج إلى تشغيل خادم وكيل ، والتي سوف تتشبث وحدة تحكم ونقل البيانات منه. يمكن إجراء الاتصال عبر القياس عن بعد أو عبر USB. يستخدمون منافذ COM مختلفة. يوضح الشكل الطريقة من خلال القياس عن بعد.

المادة رقم 2: وثائق غير مكتملة. في كثير من الأحيان لا تكتب الأشياء الأكثر وضوحا.


على سبيل المثال ، للاتصال من الثعبان بوحدة التحكم ، يجب عليك تحديد العنوان والمنفذ: connectionString = '127.0.0.1:14540 ′

ولكن اتضح أنه يجب أيضًا تحديد هذا العنوان والمنفذ في سطر الإطلاق للخادم الوكيل. هنا:

mavproxy.py —master=/dev/ttyAMA0 —baudrate 921600 —aircraft MyCopter 

نعم ، هذا واضح ، لكن ليس واضحًا أبدًا. وقضينا الكثير من الوقت لمعرفة ذلك.

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

وبالتالي القاعدة رقم 3: استخدام USB


نعم ، كانت الوثائق الخاصة به أقل بكثير ، لكن استقرار الاتصال سيكون أعلى بالتأكيد. لأنني لن تضطر إلى استخدام دبابيس التوت.

رحلة اختبار




وفجأة اتضح أن:

  1. المروحية لا تطير بسلاسة
  2. أخطاء القياس عن بعد متر أو أكثر ،
  3. للقيام برحلة ، مثل: تسلق 10-20 متر ، الطيران 100 متر إلى الشمال ، إلخ.

اسمحوا لي أن أذكركم بأن هذا التصميم ، الذي تم إنشاؤه تحت تأثير طائرات الهليكوبتر من فيلم "Avatar" ، تم إطلاقه داخل جدران المكتب ، حيث يوجد الكثير من المعدات المكتبية والمصابيح والتهوية والديكور معلقة من السقف. حسنا ، هناك أيضا الموظفين. بشكل عام ، سرعان ما أصبح من الواضح أن الرحلة الداخلية الخطيرة ستكون محفوفة بـ 160 رأس مقطوعة.

المادة رقم 4: استخدام شروط الاختبار العادية


إذا كان حجم خزان الطيران 50 × 60 سم ، فإن وجوده في الهواء في مكان مغلق سيؤدي حتماً إما إلى تلفه أو إلى تلف من بالقرب منه. ستكون منطقة اختبار مثالية غرفة بحجم صالة الألعاب الرياضية.

رؤية الكمبيوتر


بوابة منفصلة إلى الجحيم كانت مهمة رؤية الكمبيوتر. تتمثل الفكرة في قراءة علامات ArUco ، ولكل منها موقع مسجّل في مخطط الغرفة ، والنسبي الذي يحدده المروحية في موضعه ، وكذلك الموضع بالنسبة إلى النقطة الحالية للمسار.

مثال التسمية:



للتنفيذ ، تم استخدام مكتبة openCV . يتم استخدامه للتعرف بشكل عام على كل ما هو ، بوجه خاص: وجوه الأشخاص ، الأشياء ، أرقام السيارات ، وعلاماتنا. أصبح تثبيت المكتبة على نظام التشغيل التوت - Rasbian - كابوسا ، والتي حارب أربعة أشخاص بالتناوب. ومع ذلك ، فقد نجحنا في حلها ، والآن "تعلم" الجهاز التعرف على العلامات في دفق الفيديو من كاميرا الويب. ولكن مرة أخرى ، لم يكن هناك ما يكفي من الوقت لتكوين كل شيء. على سبيل المثال ، من علامتين أو أكثر ، أعادت المكتبة الأرقام المعترف بها لجميع العلامات ، والبيانات فقط. لماذا هذا هناك لغز كبير ...

القاعدة مهمة: خصص وقتًا كافيًا لتحسين الحل


حواس أخرى


حتى أن طفرة أجنحة إيكاروس لا تلتصق بالعقبات الناشئة فجأة ، أرادوا استخدام مجسات المسافة. كان من المفترض أن يكونوا على جميع جوانب السيارة واضطروا إلى الإشارة إلى اقتراب العائق ، ونتيجة لذلك يجب على المروحية أن تتوقف ، وأن تتخذ "خطوة إلى الجانب" وتستمر في التحرك على طول الطريق.

لم يكن لدينا وقت للقيام بهذه الوظيفة على الإطلاق.

طرق


تحدثنا كثيرا عن مسارات طيران المروحية. وأي نوع من الحيوانات هم؟ سأقول على الفور أن هذه الوظيفة تم تنفيذها من قبل الأول والكامل ، ولكن ... لم يكن مفيدًا.

مسارات الحركة عبارة عن رسم بياني متصل برؤوس ، ولكل منها إحداثيات ثلاثية الأبعاد في مساحة الغرفة. وفقًا لذلك ، يجب أن يتبع المروحية من نقطة البداية إلى نقطة النهاية ، في آخر مهمة طيران. يتبع ذلك الانتقال من الرأس الحالي إلى التالي. نظرًا لأن كل قمة نعرف إحداثياتها ، وفي المروحية نعرف موقعها (بوصلة) وموضعها (علامات) ، ثم معرفة مكان الطيران أمر تقني محض. يتم حل مهمة العثور على المسار بين نقطة البداية والنهاية من خلال وظيفة متكررة. يتم تخزين الطرق والحواف والقمم في قاعدة بيانات يتم نشرها على التوت.

القاعدة الأخيرة: افعل فقط ما تحتاج إلى تنفيذه


كومة التكنولوجية


المرسل : توت العليق ، Rasbian ، OpenCV ، Python 3.5 ، aiohttp ، DroneKit ، RPi.GPIO ، SQLite .

الخادم مع ديناميات للتلفزيون: node.js ، Express ، socket.io .

تطبيقات التلفزيون: JavaScript ES6 ، webpack 2 ، Canvas .

مستودع مع رمز المروحية هنا . للنجوم - إيجابيات في الكرمة.

بضع كلمات لتوضيح المصطلحات (أطلب منك أن تنظر في أي تقييمات ذاتية).

  • التوت بي. كمبيوتر صغير متكامل مع دبابيس ومخرجات متوفرة لكاميرا خاصة وشاشة تعمل باللمس. يوجد عليه رمز التحكم ، خادم الويب ، مكتبة openCV. في الواقع ، المروحية هي خادم طيران.
  • راسببيان نظام التشغيل Linux للتوت. هناك العديد منها وبصفة عامة يمكنك وضع أي منها ، ولكن من الأفضل وضع أخرى مصممة ، وإلا فقد تكون هناك مشاكل في التفاعل مع أجهزة الكمبيوتر ، مع نفس المسامير ، على سبيل المثال. هناك حتى نسخة معدلة من ويندوز 10.
  • OpenCV. مكتبة للتعرف على العناصر في دفق الفيديو. يعرف أيضًا كيفية دفق دفق الفيديو ، والذي يُستخدم في المشروع لإصدار صور للعميل. (نعم ، لدى المروحية عميل ويب خاص به)
  • بيثون 3.5. بيثون 3.5. ليس 2. *.
  • Aiohttp. إطار خادم ويب غير متزامن مكتوب ببيثون. لسبب ما ، كان يحب جانغو أكثر. ولكن هناك خيار.
  • DroneKit. مكتبة للاتصال وحدة تحكم المروحية من البرنامج. وظائف غنية جدا ، إلى جانب وثائق جيدة نسبيا. في غياب نظائرها - أداة رائعة.
  • RPi.GPIO. مكتبة بايثون للتفاعل مع دبابيس التوت. يتيح لك تشغيل المسامير وإيقافها ، والاستماع إلى قيمها. لا يمكن تمرير قيم غير 0 أو 1 ts. أو لم أجد.
  • سكليتي الحطب DBMS + DB + مجتمعة في ملف واحد. مثالي للمشاريع التدريبية وغير المتعلقة بالبيع ، إذا كنت لا تحتاج إلى نشر شيء محمّل بشكل كبير. مريحة لإجراء تغييرات.
  • Node.js. جافا سكريبت من جانب الخادم
  • اكسبريس إطار خادم الويب مكتوب في node.js. مريح جدا وأضيق الحدود.
  • Socket.io. خادم ومكتبة العميل لتطبيق بروتوكول webSocket. الإضافة الرئيسية هي ثبات العمل والوظائف الواسعة المتوفرة.

الاستنتاجات


في الصيغة الأصلية ، تكون المهمة ممكنة ، على الرغم من أنها تتطلب مزيدًا من الوقت والجهد. نظرًا لحقيقة أن طرق التحكم الآلي والطيار المرتبط أقل قليلاً من نظام GPS ، يجب التخلي عنها في اتجاه الأوامر المباشرة لقنوات التحكم. هذا يستلزم الحاجة إلى كتابة الطيار الآلي الخاص بك ، وهي المهمة التي يجري حلها. وبعد ذلك - للاختبار والاختبار والاختبار.

شخصيا ، كنت مهتما. وسوف أفعل منفذ التفجير الآلي على أي حال على أي حال. ولكل المهتمين ، ربما سأرحل

القاعدة الوحيدة هي: وضع أهداف عالية وصعبة وانتقل إليهم!


حظا سعيدا للجميع!

Source: https://habr.com/ru/post/ar438496/


All Articles