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

UTK EF 230 MarsRoomba Project خريف 2018: 5 خطوات
UTK EF 230 MarsRoomba Project خريف 2018: 5 خطوات

فيديو: UTK EF 230 MarsRoomba Project خريف 2018: 5 خطوات

فيديو: UTK EF 230 MarsRoomba Project خريف 2018: 5 خطوات
فيديو: Сборка фургона ТАЙМЛАПС за 5 МИНУТ | Классический Bedford CF ПРЕОБРАЗОВАНИЕ 2024, يوليو
Anonim
UTK EF 230 MarsRoomba Project خريف 2018
UTK EF 230 MarsRoomba Project خريف 2018

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

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

تم تصميم Instructable لمساعدة القارئ في برمجة جهاز Roomba الخاص به لمتابعة "رائد فضاء" بنجاح وإرسال إشارة استغاثة إن أمكن.

الخطوة 1: المواد المطلوبة

المواد المطلوبة
المواد المطلوبة

1) كمبيوتر / كمبيوتر محمول يمكن الوصول إليه عبر الإنترنت

2) MATLAB_R2018a

3) تنزيل Roomba و Roomba

الخطوة 2: الإعداد / التنزيل

الإعداد / التنزيل
الإعداد / التنزيل

قم بتشغيل هذا البرنامج النصي في MATLAB لتنزيل البرنامج المطلوب للوصول إلى Roomba (المحفوظ في ملفه الخاص في مجلد المشروع)

مساعدة إضافية:

٪ برنامج التثبيت لـ EF 230 Roomba Project٪ التحديث الأخير: 13 سبتمبر 2017 (مشكلات الأمان الثابتة المرتبطة بخادم https وتحذير حذف الملف الذي تمت إزالته في حالة حدوث أخطاء) وظيفة roombaInstall clc؛ ٪ قائمة الملفات المراد تثبيت الملفات = {'roomba.m'، 'roombaSim.m'، 'roombaSimGUI.m'، 'roombaSimGUI.fig'}؛ ٪ موقع للتثبيت من الخيارات = خيارات الويب ('CertificateFilename'، '') ؛ ٪ أخبره بتجاهل خادم متطلبات الشهادة = 'https://ef.engr.utk.edu/ef230/projects/roomba-f2016/install/' ؛ dlgTitle = 'تثبيت / تحديث Roomba'؛ ٪ display الغرض والحصول على رسالة تأكيد = {'سيقوم هذا البرنامج بتنزيل ملفات EF 230 Roomba هذه:' '' strjoin (files، '') '' إلى هذا المجلد: '' 'cd' '' هل تريد المتابعة؟ '}؛ زمارة؛ yn = Questdlg (موجه ، … dlgTitle ، … "نعم" ، "لا" ، "نعم") ؛

إذا كان ~ strcmp (yn ، "نعم") ، فارجع ؛ نهاية

٪ الحصول على قائمة الملفات الموجودة الموجودة في الملفات = الملفات (cellfun (exist، files)> 0) ؛ إذا كان ~ isempty (موجود_الملفات)٪ تأكد من أنه لا بأس بالفعل لاستبدالها موجه = {'أنت تستبدل هذه الملفات:' 'strjoin (الموجودة_الملفات،' ')' '' موافق للاستبدال؟ ' } ؛ زمارة؛ yn = Questdlg (موجه ، … dlgTitle ، … "نعم" ، "لا" ، "نعم") ؛ إذا كان ~ strcmp (yn ، "نعم") ، فارجع ؛ نهاية النهاية

٪ تنزيل الملفات cnt = 0 ؛ بالنسبة إلى i = 1: length (files) f = files {i} ؛ disp (['Downloading' f]) ؛ جرب url = [server f] ؛ حفظ الويب (f ، url ، خيارات) ؛ تمت إضافة٪ من الخيارات لتجنب أخطاء الأمان cnt = cnt + 1 ؛ catch disp (["خطأ في التنزيل" f]) ؛ dummy = [f '.html'] ؛ إذا كان موجودًا (وهمي ، "ملف") == 2 حذف (وهمي) نهاية النهاية

إذا كان cnt == length (files) msg = "تم التثبيت بنجاح" ؛ waitfor (msgbox (msg، dlgTitle)) ؛ else msg = 'خطأ في التثبيت - راجع نافذة الأوامر للحصول على التفاصيل' ؛ waitfor (errordlg (msg، dlgTitle)) ؛ نهاية

نهاية٪ roomba تثبيت

الخطوة 3: جزء الكود 1: وظيفة التتبع

جزء التعليمات البرمجية 1: وظيفة التتبع
جزء التعليمات البرمجية 1: وظيفة التتبع

تأخذ هذه الوظيفة متغير Roomba والصورة من الكاميرا الموجودة في Roomba وتجد إحداثيات مركز xy للكائن المتعقب

احفظ هذا الرمز في ملف آخر في نفس المجلد.

function [xm، ym] = trackingblue (r)٪ المدخلات: متغير roomba٪ المخرجات: x و y قيمة مركز الكائن التالي٪ الغرض: البحث عن مركز كائن أزرق معطى صورة٪ Usage [x value، y value] = trackingblue (متغير roomba) img = r.getImage؛ ٪ يقرأ الكاميرا من الحبكة الفرعية للروبوت (1 ، 2 ، 2) subimage (img) ؛ ٪ يظهر الصورة في نفس النافذة مثل عنوان المسار ('صورة التعقب') أحمر = img (:،:، 1)؛ أخضر = img (: ،: ، 2) ؛ أزرق = img (: ،: ، 3) ؛ justBlue = أزرق - أخضر / 2 - أحمر / 2 ؛ وزن الجسم = justBlue> 40 ؛ عقد على الحبكة الفرعية (1 ، 2 ، 2) الصورة الفرعية (وزن الجسم) ؛ [س ، ص] = بحث (وزن الجسم) ؛ إذا كان ~ فارغًا (x) && ~ فارغًا (y) xm = round (متوسط (x)) ؛ ym = round (يعني (y)) ؛ xx = max (1، xm-5): min (xm + 5، size (bw، 1)) ؛ yy = max (1، ym-5): min (ym + 5، size (bw، 2)) ؛ bwbw = أصفار (الحجم (وزن الجسم) ، 'uint8') ؛ bwbw (xx، yy) = 255 ؛ عقد على subplot (1، 2، 2) subimage (justBlue + bwbw) ؛ نهاية

الخطوة 4: جزء الرمز 2: أثناء التكرار

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

مشروع روفر

٪ Jonah Zahn، Wade Price، Noah Sloan٪ jzahn2، wprice15، nsloan1٪ المدخلات: قيمة roomba وبيانات الكاميرا والنتوء ومستشعرات الضوء والجدار٪ الغرض: يتبع رائد الفضاء ويتجنب العقبات. إذا تم التنبيه ، يرسل roomba رسالة بريد إلكتروني٪ توضح بالتفصيل الخريطة ومكانها وفقًا لموضع البداية. النسبة المئوية للاستخدام: ما عليك سوى تشغيل البرنامج بإعلانك عن متغير roomba ، وأيضًا يكون٪ لديك كائنًا أخضر متحركًا٪ المخرجات: يظهر صورة تتبع الصورة وخريطة رسائل البريد الإلكتروني والنص للمستخدم ٪٪ التالي القسم ب = 0 ؛ ٪ تهيئة المتغيرات ج = 0 ؛ س = 0 ؛ ص = 0 ؛ ثيتا = 0 ؛ بينما c == 0٪ Loop لجعله يكتشف الكائن الأزرق والعقبات t = r.timeGet ؛ د = r.getDistance ؛ [xval، yval] = trackingblue (r) ؛ جرف = getCliffSensors (r) ، ٪ تهيئة الهياكل لقيم أجهزة الاستشعار light = getLightBumpers (r) ؛ عثرة = getBumpers (r) ؛ إذا كان light.leftCenter> = 10 || light.rightCenter> = 10٪ الحواس إذا كان هناك جدار بالقرب من r.stop r.setLEDDigits ('help') c = 1٪ while b == 0٪ if bump.right == 1 || bump.left == 1 || bump.front == 1٪ الحواس إذا اصطدم بشيء ما بعد استشعار جدار٪ c = 1٪ b = 1٪ disp ('bump')٪ end٪ end elseif bump.right == 1 || bump.left == 1 || bump.front == 1٪ Senses إذا اصطدم بشيء ما ، إذا كان الأمر كذلك ، فسيتم إرسال بريد إلكتروني r.stop c = 1 b = 1 elseif cliff.leftFront <= 100 || cliff.rightFront <= 100 || cliff.left <= 100 || cliff.right <= 100٪ الحواس إذا كان هناك منحدر بالقرب من r.stop c = 1 r.setLEDDigits ('help') else٪ يضبط سرعات القيادة لتتبع اللون الأزرق إذا كان yval = 100 r.setDriveVelocity (0.1) elseif yval 400 r.turnAngle (-5) end theta = ثيتا + r.getAngle ؛ س = د. * كوسد (ثيتا) + س ؛ ٪ x إحداثي roomba y = d. * sind (ثيتا). * d + y ؛ ٪ y إحداثي مخطط roomba الفرعي (1 ، 2 ، 1) قطعة الأرض (x ، y ، 'bd')٪ يرسم المسار ويضيف عنوانًا ("مسار Roomba") استمر ؛ نهاية

الخطوة 5: جزء الرمز 3: قسم البريد الإلكتروني

سيأخذ هذا المسار والصورة المرسومة ويرسلها إلى عنوان بريد إلكتروني محدد

(يظهر هنا مع مثال البريد الإلكتروني)

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

إذا كان b == 1 saveas (gcf، 'rovermap.png')٪ يحفظ الرقم setpref ('Internet'، 'SMTP_Server'، 'smtp.gmail.com')؛ setpref ("الإنترنت" ، "E_mail" ، "[email protected]") ؛ ٪ حساب بريد للإرسال من setpref ("الإنترنت" ، "SMTP_Username" ، "[email protected]") ؛ ٪ senders username setpref ("الإنترنت" ، "SMTP_Password" ، "gssegsse") ؛ ٪ خاصيات كلمة مرور المرسلين = 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 ("مثال للبريد الإلكتروني" ، "RoverBeacon" ، "توقف رائد الفضاء عن الحركة. للاسترداد ، اتبع الإرشادات الموجودة في الملف المرفق." ، "rovermap.png") disp ("تم إرسال البريد الإلكتروني")

موصى به: