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

مستكشف Roomba: 4 خطوات
مستكشف Roomba: 4 خطوات

فيديو: مستكشف Roomba: 4 خطوات

فيديو: مستكشف Roomba: 4 خطوات
فيديو: Купили РОБОТА А4 ! *ВЛАД А4 вернулся* 2024, شهر نوفمبر
Anonim
مستكشف Roomba
مستكشف Roomba

من خلال استخدام MATLAB و Create2 Robot من iRobot ، سيستكشف هذا المشروع مناطق مختلفة من موقع غير معروف. استخدمنا أجهزة الاستشعار على الروبوت للمساعدة في المناورة في التضاريس الخطرة. من خلال الحصول على الصور وموجز الفيديو من Raspberry Pi المرفق ، تمكنا من تحديد العقبات التي سيواجهها الروبوت ، وسيتم تصنيفها.

الأجزاء والمواد

لهذا المشروع ، سوف تحتاج

-كمبيوتر

- أحدث إصدار من MATLAB (تم استخدام MATLAB R2018b لهذا المشروع)

- تثبيت صندوق الأدوات

-iRobot's Create2 الروبوت

-Raspberry Pi مع الكاميرا

الخطوة 1: التهيئة وأجهزة الاستشعار

التهيئة وأجهزة الاستشعار
التهيئة وأجهزة الاستشعار

قبل البدء في أي برمجة ، قمنا بتنزيل صندوق أدوات roombaInstall ، والذي يسمح بالوصول إلى مكونات مختلفة من الروبوت.

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

يوجد أدناه الرمز (من MATLAB R2018b)

٪٪ التهيئة

dlgPrompts = {'Roomba Number'} ؛

dlgTitle = 'حدد جهاز Roomba الخاص بك'؛

dlgDefaults = {''} ،

OPts. Resize = 'on' ؛

dlgout = inputdlg (dlgPrompts، dlgTitle، 1، dlgDefaults، opts)٪ إنشاء نافذة تطالب المستخدم بإدخال رقم roomba الخاص به

ن = str2double (dlgout {1}) ؛

ص = رومبا (ن) ؛ ٪ يقوم بتهيئة Roomba ٪٪ المحدد من قبل المستخدم لتحديد السرعة من مستشعرات الضوء بينما true s = r.getLightBumpers ؛ ٪ الحصول على أجهزة استشعار الضوء

lbumpout_1 = extractfield (s، 'left') ؛ تأخذ٪ القيم العددية لأجهزة الاستشعار وتجعلها أكثر قابلية للاستخدام. lbumpout_2 = extractfield (s، 'leftFront') ؛

lbumpout_3 = extractfield (s، 'leftCenter') ،

lbumpout_4 = extractfield (s، 'rightCenter') ؛

lbumpout_5 = extractfield (s، 'rightFront') ؛

lbumpout_6 = extractfield (s ، 'right') ؛

lbout = [lbumpout_1 ، lbumpout_2 ، lbumpout_3 ، lbumpout_4 ، lbumpout_5 ، lbumpout_6]٪ يحول القيم إلى مصفوفة

sLbump = فرز (lbout) ؛ يمكن استخراج٪ يفرز المصفوفة إلى أدنى قيمة

lowLbump = sLbump (1) ؛ السرعة =.05 + (lowLbump) *. 005٪ باستخدام أدنى قيمة ، والتي تمثل عوائق قريبة ، لتحديد السرعة ، وسرعة أعلى عند عدم اكتشاف أي شيء

r.setDriveVelocity (السرعة والسرعة)

نهاية

٪ مصدات مادية

ب = r.getBumpers ؛ ٪ الناتج صحيح ، خطأ

bsen_1 = extractfield (ب ، "يسار")

bsen_2 = extractfield (ب ، "يمين")

bsen_3 = extractfield (b، 'front')

bsen_4 = extractfield (b، 'leftWheelDrop')

bsen_5 = extractfield (b، 'rightWheelDrop')

المطبات = [bsen_1، bsen_2، bsen_3، bsen_4، bsen_5] tbump = sum (bums)

إذا كان tbump> 0 r.setDriveVelocity (0 ، 0)

نهاية

٪ مجسات الجرف

c = r.getCliffSensors ٪٪ 2800 آمن ، وإلا مياه

csen_1 = extractfield (c، 'left')

csen_2 = extractfield (c، 'right')

csen_3 = extractfield (c، 'leftFront')

csen_4 = extractfield (c، 'rightFront')

المنحدرات = [csen_1، csen_2، csen_3، csen_4]

ordcliff = فرز (منحدرات)

إذا كان ordcliff (1) <2750

r.setDriveVelocity (0، 0)

إذا كان الجرف <800

ديس "كليف"

آخر

ديس "الماء"

نهاية

ص زاوية الدوران (45)

نهاية

الخطوة الثانية: الحصول على البيانات

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

img = r.getImage ؛ imshow (img) ؛

imwrite (img، 'imgfromcamera.jpg')

photo = imread ('imgfromcamera.jpg')

ocrResults = ocr (صورة)

RecognText = ocrResults. Text ؛

الشكل؛

نص imshow (صورة) (220، 0، RecognText، 'BackgroundColor'، [1 1 1])؛

الخطوة الثالثة: إنهاء المهمة

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

٪ إرسال البريد الإلكتروني

setpref ("الإنترنت" ، "SMTP_Server" ، "smtp.gmail.com") ؛

setpref ("الإنترنت" ، "البريد الإلكتروني" ، "[email protected]") ؛ ٪ حساب بريد للإرسال من setpref ("الإنترنت" ، "SMTP_Username" ، "أدخل البريد الإلكتروني للمرسل") ؛ setpref اسم مستخدم المرسلين ("الإنترنت" ، "SMTP_Password" ، "أدخل كلمة مرور المرسل") ؛ ٪ كلمة مرور المرسلين

props = java.lang. System.getProperties ؛ props.setProperty ('mail.smtp.auth'، 'true') ؛ props.setProperty ('mail.smtp.socketFactory.class'، 'javax.net.ssl. SSLSocketFactory') ؛ props.setProperty ('mail.smtp.socketFactory.port'، '465') ؛

sendmail ("أدخل البريد الإلكتروني المستلم" ، "Roomba" ، "لقد عاد Roomba إلى المنزل !!" ، "imgfromcamera.jpg")٪ حساب بريد للإرسال إليه

ثم يتم الانتهاء من الروبوت.

الخطوة 4: الخاتمة

استنتاج
استنتاج

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

* تذكير: لا تنس أن صندوق أدوات roombaInstall ضروري لكي تتفاعل MATLAB مع الروبوت و Raspberry Pi الموجود على اللوحة.

موصى به: