جدول المحتويات:
- الخطوة 1: التهيئة وأجهزة الاستشعار
- الخطوة الثانية: الحصول على البيانات
- الخطوة الثالثة: إنهاء المهمة
- الخطوة 4: الخاتمة
فيديو: مستكشف Roomba: 4 خطوات
2024 مؤلف: John Day | [email protected]. آخر تعديل: 2024-01-30 07:40
من خلال استخدام 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 الموجود على اللوحة.
موصى به:
تحويل جهاز Roomba الخاص بك إلى مركبة Mars Rover: 5 خطوات
تحويل جهاز Roomba الخاص بك إلى Mars Rover:
مستكشف الروبوت: 13 خطوة
روبوت إكسبلورادور: كومو إينجينيروس أون ميكاترونيكا سي نوس بيد كيو سيموس كاباس دي بودير رياليزار برويكتوس كيو كومبينن ديسينتاس كليات كومو لا ميكانيكا ، لا إلكترونيكا وي لا برمجي. استمرارية بحد ذاتها ، تعريف لوس باسو a seguir para la realizacion de un
Roomba Bot the Bulider: 5 خطوات (بالصور)
Roomba Bot the Bulider: Bot the Builder هو Roomba ، مع & quot؛ grabbers & quot؛ تعلق على الجبهة سوف تكون قادرة على تحريك الأشياء. تم تعيين الكود الموجود به لتسجيل الحركة الأولى باستخدام مربع واجهة المستخدم الرسومية الذي يمكنك التحكم فيه بمجرد نقرة على الماوس. بعد
مستكشف Roomba Scout: 8 خطوات
مستكشف Roomba Scout: كواحد من أكثر المشاريع الأمريكية المتوقعة والأكثر بحثًا ، أصبحت مشاريع Mars Rover من الإنجازات البشرية في الإنتاج المتطور باستمرار للأنظمة الذاتية عالية التقنية لغرض وحيد هو التحقيق والتعمق
من Roomba إلى Rover في 5 خطوات فقط!: 5 خطوات
من Roomba إلى Rover في 5 خطوات فقط!: روبوتات Roomba هي طريقة ممتعة وسهلة لتغمس أصابع قدميك في عالم الروبوتات. في هذا Instructable ، سنشرح بالتفصيل كيفية تحويل Roomba البسيطة إلى عربة جوالة يمكن التحكم فيها والتي تحلل محيطها في نفس الوقت. قائمة الأجزاء 1.) MATLAB2.) Roomb