جدول المحتويات:
- الخطوة 1: المواد المطلوبة
- الخطوة 2: الإعداد / التنزيل
- الخطوة 3: جزء الكود 1: وظيفة التتبع
- الخطوة 4: جزء الرمز 2: أثناء التكرار
- الخطوة 5: جزء الرمز 3: قسم البريد الإلكتروني
فيديو: UTK EF 230 MarsRoomba Project خريف 2018: 5 خطوات
2024 مؤلف: John Day | [email protected]. آخر تعديل: 2024-01-30 07:40
حاليًا ، تُستخدم مركبات المريخ الجوالة لجمع البيانات على سطح المريخ من خلال طرق مختلفة ، للوصول إلى النهاية النهائية لمعرفة المزيد عن إمكانات الكوكب للحياة الميكروبية. تستخدم المركبات الجوالة في المقام الأول أدوات التصوير الفوتوغرافي وتحليل التربة لجمع البيانات ، ولكن تشمل المركبات الجوالة أيضًا أدوات الملاحة وكاشفات الإشعاع وأجهزة استشعار الغلاف الجوي والليزر لتبخير عينات الصخور. هدف مهمة روفر 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: وظيفة التتبع
تأخذ هذه الوظيفة متغير 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 ("تم إرسال البريد الإلكتروني")
موصى به:
تحويل لمبة تيار متردد 230 فولت إلى طاقة USB!: 6 خطوات (بالصور)
تحويل لمبة 230 فولت تيار متردد إلى طاقة USB!: صادفت هذه المصابيح الأنيقة ذات تأثير اللهب على موقع eBay ، والتي تومض ولديها رسوم متحركة دقيقة مضمنة. وعادة ما يتم تشغيلها بواسطة مدخلات التيار المتردد 85-265 فولت ، ولكن للتطبيقات المحمولة مثل شعلة مزيفة أو فانوس مزيف ليس مثالياً. تعديل
مشروع الروبوت UTK 2017: 3 خطوات
مشروع الروبوت UTK 2017: المهمة: تم تعيين فريق المهندسين لدينا من قبل Froogle ، وهي مؤسسة غير ربحية لتطوير التكنولوجيا مفتوحة المصدر ، لتطوير فرق مبتكرة لمساعدة الإنسان في Mars Rover.-Out & quot؛ rover & quot؛ هو جهاز Roomba قمنا بترميزه لتنفيذ سلسلة
Venus Flytrap - ITM خريف 2019: 5 خطوات
Venus Flytrap - ITM Fall 2019: ما الذي ينقص مكتب الجميع؟ مصيدة ذباب فينوس ميكانيكية تحمل أقلام الرصاص والأقلام وأشياء أخرى
مشروع Mars Roomba UTK: 4 خطوات
Mars Roomba Project UTK: إخلاء المسئولية: لن يعمل هذا إلا إذا تم إعداد غرفة Roomba بطريقة محددة من AVERY ، تم إنشاء هذا التعليمات ومن أجل استخدامه من قبل طلاب جامعة TENNESSEE وكلية TENNESSEE يتم استخدام هذا الرمز لإعداد Roomba للتشغيل محليًا مكتوب و
كيفية وضع صورة مخصصة على لوحة تحكم Xbox 360 الخاصة بك. (ما قبل تحديث 08 خريف): 8 خطوات
كيفية وضع صورة مخصصة على لوحة تحكم Xbox 360 الخاصة بك. (ما قبل تحديث 08 خريف): في هذه التعليمات ، سأوضح لك كيفية وضع صورة مخصصة كخلفية لك على جهاز xbox 360 الخاص بك ، وهناك نفس الخطوات للقيام بذلك باستخدام لوحة القيادة الجديدة والقديمة. عندما أحصل على فرصة ، سأقوم بتحديث كل شيء بصور جديدة