جدول المحتويات:

لوكالينو يتتبع Roomba IRobot ، خرائط البيئة ويسمح بالتحكم: 4 خطوات
لوكالينو يتتبع Roomba IRobot ، خرائط البيئة ويسمح بالتحكم: 4 خطوات

فيديو: لوكالينو يتتبع Roomba IRobot ، خرائط البيئة ويسمح بالتحكم: 4 خطوات

فيديو: لوكالينو يتتبع Roomba IRobot ، خرائط البيئة ويسمح بالتحكم: 4 خطوات
فيديو: Home maps collected by Roomba could be sold to tech giants 2024, يوليو
Anonim
Image
Image

من أجل بناء جسر WiFi-UART ، يمكنك التحقق من مستودع جيثب هذا:

لها أساس جيد لتبدأ به. تأكد من قراءة الإرشادات جيدًا ، لأن جهاز Roomba VCC أثناء الشحن يزيد حتى 20 فولت! إذا قمت بإضافة ESP8266 بدون محول باك مناسب يعمل حتى 20 فولت وتحويل لأسفل إلى 3.3 فولت ، فسوف تتلف المرساب الكهروستاتيكي الخاص بك.

تأكد أيضًا من استخدام مفتاح تغيير المستوى (على سبيل المثال ، باستخدام مقسم الجهد) لتحويل مستويات المنطق 5V UART من Roomba إلى 3.3V ، والتي يستخدمها ESP.

تفصيل آخر مهم هو أن محول باك يجب أن يحتوي على 300 مللي أمبير ، لكن noch أقل أو أكثر بكثير (اعتمادًا على محول باك نفسه). هناك بعض الأشياء التي يمكن أن تفعل أكثر من ذلك بكثير ، ولكن تتسبب في تعطل Roomba لأنها تجتذب الكثير من التيار أثناء بدء التشغيل. اكتشفنا أن منظم الجهد المتدرج Pololu 3.3V و 300mA (D24V3F3) يعمل بشكل مثالي. تسببت الإصدارات البديلة التي لديها 500mA / 600mA في تعطل واجهة Roomba UART. كان جهاز Roomba يتفاعل بشكل أساسي عند الضغط على الزر ، ولكن ليس بناءً على الأوامر عبر واجهة UART. بمجرد حدوث ذلك ، كان علينا إزالة بطارية Roomba وإعادة تشغيل جهاز Roomba على البارد مع توصيل جسر WiFi-UART. ومع ذلك ، فقط D24V3F3 يعمل بشكل جيد.

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

أمثلة داخل اردوينو IDE:

goForward باطلة {char c = {137، 0x00، 0xc8، 0x80، 0x00} ؛ // 0x00c8 == 200 Serial.print (c) ؛ }

goBackward باطلة {char c = {137، 0xff، 0x38، 0x80، 0x00} ؛ // 0xff38 == -200 Serial.print (c) ؛ }

spinLeft باطل () {char c = {137، 0x00، 0xc8، 0x00، 0x01} ؛ Serial.print (ج) ؛ }

spoidRight () {char c = {137، 0x00، 0xc8، 0xff، 0xff} ؛ Serial.print (ج) ؛ }

إذا كنت تكتب بلغة lua ، فستبدو مختلفة بعض الشيء ، سيبدو مثال على منعطف إلى اليسار كما يلي:

if (_GET.pin == "LEFT") ثم اطبع ('137') ؛ --VOR

tmr.delay (100) ؛

طباعة ('00') ؛ - السرعة = 200 = 0x00C8 -> 0 و 200

tmr.delay (100) ؛

طباعة ('200') ؛ -- سرعة

tmr.delay (100) ؛

طباعة ('254') ؛ - نصف القطر = 500 = 0x01F4 = 0x01 0xF4 = 1244

tmr.delay (100) ؛

طباعة ('12') ؛ -- منعطف أو دور

نهاية

تأكد من أنه يتعين عليك تصحيح وصف الواجهة المفتوحة لجهاز Roomba الخاص بك. هناك نوعان من المواصفات المتاحة على الأقل للواجهة المفتوحة.

لسلسلة Roomba 5xx:

لسلسلة Roomba 6xx: https://anrg.usc.edu/ee579/spring2016/Roomba/iRobo …

بمجرد إنشاء جسر WiFi-UART الخاص بك واختبار الأوامر التي قمت بخطوة كبيرة إلى الأمام. يوضح هذا الفيديو أن التطبيق والنهج يعملان. كنا كسالى بعض الشيء ، تفتقد واجهة الويب إلى جميع أوامر التحكم الأخرى ، مثل الأمام والخلف والسرعة واليمين واليسار وما إلى ذلك ، ولكن يمكنك إصدار الأوامر عبر http. على أي حال ، إنه مجرد دليل على أن جهاز التحكم عن بعد في Roomba يعمل مع قطعة سهلة من الأجهزة والبرامج باستخدام ESP8266.

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

الخطوة 3: قم بإعداد نظام التعريب الداخلي الخاص بك

لإغلاق حلقة التغذية الراجعة ، نستخدم نظام التعريب الداخلي. نحن نستخدم Localino لهذا الغرض. يتكون نظام لوكالينو من "نقاط إرساء" و "علامات". يتم وضع المراسي في مواقع ثابتة داخل الغرفة وتحديد موضع العلامة المتحركة (التي يتم وضعها في Roomba). تتم معالجة الموقع في تطبيق كمبيوتر شخصي. هذه ميزة كبيرة ، لأنه يمكنك أيضًا التحكم في Roomba من نفس جهاز الكمبيوتر! هناك كود مصدر مجاني متاح من موقع Localino ، وهو مكتوب بلغة python وهناك أيضًا دفق متوفر في الوقت الفعلي يوفر إحداثيات XYZ للعلامة. يتوفر datastream عبر شبكة UDP ، ولكن يمكنك أيضًا إضافة MQTT أو أي أشياء خيالية أخرى تريدها. إذا كنت تعرف لغة Python ، فهناك الكثير من المكتبات التي تساعدك.

في هذا الفيديو ، تم توضيح توطين Roomba. لذلك لدينا 4 مراسي مثبتة في الغرفة في مواقع ثابتة ، مما يسمح بتحديد المواقع ثلاثية الأبعاد لـ Roomba. بشكل عام ، سنحتاج فقط إلى 3 مراسي ، لأن Roomba ربما لن يتحرك في المحور Z ، وبالتالي سيكون 2D كافياً. ولكن نظرًا لوجود المراسي على ارتفاع سدادات التيار المتردد الرئيسية (وهو ما يقرب من 30 سم فوق سطح الأرض) ، فإن الإعداد ثنائي الأبعاد قد يتسبب في أخطاء قليلة في تقدير الموقع. لذلك قررنا أن يكون لدينا 4 نقاط ارتكاز وأن نحدد موقعها في صورة ثلاثية الأبعاد.

الآن بما أن لدينا موقع Roomba ، فإن خطوتنا التالية هي التحكم في Roomba من نفس التطبيق. الفكرة هي استخدام الحقيقة الأساسية وتقدير مسار التنظيف المثالي للروبوت. باستخدام Localino ، يمكننا إغلاق حلقة التغذية الراجعة والتحكم في الروبوت من تطبيق الكمبيوتر الشخصي.

ملاحظات الإعداد

ضع مثبتات Localino داخل الغرفة في مواضع x و y مختلفة وثلاثة منهم في نفس الموضع z. ضع واحدًا من كل أربعة مراسي على ارتفاع مختلف z لكل غرفة. تأكد من وجود تغطية جيدة من علامة Localino ، والتي سيتم نقلها مع جهاز Roomba.

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

لاحظ المواضع في X و Y و Z ومعرفات الارتساء. هذا مطلوب لبرنامج Localino Processor ويجب تعديله في ملف "localino.ini" في المجلد "LocalinoProcessor"

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

…المزيد قادم.

الخطوة 4: تكييف برنامج Python

ابقوا متابعين. المزيد قادم.

موصى به: