فهرست مطالب:

Roomba Scout Explorer: 8 مرحله
Roomba Scout Explorer: 8 مرحله

تصویری: Roomba Scout Explorer: 8 مرحله

تصویری: Roomba Scout Explorer: 8 مرحله
تصویری: Cicada 3301: An Internet Mystery 2024, جولای
Anonim
Roomba Scout Explorer
Roomba Scout Explorer

پروژه های مریخ نورد مریخ به عنوان یکی از مورد انتظارترین و بسیار مورد بررسی پروژه های آمریکایی ، دستاوردهای بشر در تولید روزافزون سیستم های خودران با تکنولوژی بالا و تنها هدف بررسی و تفسیر خشکی ها و سطوح سیاره سرخ در پشت زمین بوده است. زمین. به عنوان بخشی از یک پروژه شخصی تر به منظور ادای احترام به مأموریت های مریخ ، هدف ما ایجاد یک ربات roomba بود که بتواند در یک بازه زمانی مشخص به طور مستقل عمل کرده و بر اساس معیارهای معینی در مجاورت آن واکنش نشان دهد.

در مورد منحصر به فرد بودن ، ما روی ایجاد نمودار تمرکز کردیم که هر مسیری را که ربات از مبدا خود می گیرد نشان می دهد. علاوه بر این ، ربات قادر خواهد بود تعداد اشیاء در مجاورت خود را به صورت پانوراما شمارش کند.

مرحله 1: تجهیزات

-Roomba با دوربین قابل اتصال (با نام خاص شناخته شده)

-سرور متصل

-Windows 10 / Mac با اتصال به اینترنت

سکوی روشن

-کف تاریک

-هر شیء سرگردان با طراحی تک رنگ

مرحله 2: راه اندازی متلب

راه اندازی متلب
راه اندازی متلب

به منظور ایجاد وظایف و عملکردها برای اتاق خود ، باید کدها و ابزارهای خاصی حاوی دستورات roomba را داشته باشید.

با MATLAB 2016a و بارگیری مجدد ، پوشه ای ایجاد کنید که حاوی این فایلهای ربات باشد و فایل MATLAB زیر را در پوشه وارد کرده و آن را اجرا کنید تا فایلهای باقی مانده roomba لازم را نصب کنید.

پس از آن ، روی پنجره Current Folder راست کلیک کنید ، موس خود را روی "Add a Path" قرار دهید و روی "پوشه جاری" کلیک کنید. در حال حاضر ، مسیری باید طوری تنظیم شود که هریک از این فایل ها برای فعال سازی roomba استفاده شود.

اکنون ، از دستور زیر در پنجره فرمان برای راه اندازی roomba استفاده کنید:

r = roomba (#).

نماد # "شماره" اتاق اتاق مشخص شده است. با این حال ، اگر شما فقط شبیه ساز roomba را می خواهید ، کافی است دستور زیر را تایپ کنید:

r = roomba (0).

شبیه سازی برای آزمایش الگوهای حرکتی توصیه می شود.

اگر کنجکاو هستید که roomba چه دستوراتی را می تواند دنبال کند ، موارد زیر را در پنجره فرمان تایپ کنید:

داک اتاقبا

برای جزئیات بیشتر به وب سایت زیر مراجعه کنید:

ef.engr.utk.edu/ef230-2017-08/projects/roomba-s/setup-roomba-instructable.php

مرحله 3: عملکرد: حرکت

کارکرد: حرکت
کارکرد: حرکت
کارکرد: حرکت
کارکرد: حرکت

در مورد حرکت ، اتاقک باید به طور خودکار برای مدت زمان مشخصی که در ورودی ها ذکر شده است حرکت کند. هدف حرکت ربات این است که وقتی حسگرهای آن (ضربه گیرها ، سپرهای نور و سنسورهای صخره ای) در حضور موانع مختلف تغییر می کند ، واکنش مناسبی نشان دهد. این قسمت به عنوان پایه ای برای همه دستورات roomba عمل می کند زیرا بعداً ویژگی های بیشتری به کد اضافه می شود. برخی از مشخصات مورد نیاز بود:

-برای کاهش آسیب ، ربات باید سرعت را به سرعت کمتری کاهش دهد.

هنگام نزدیک شدن به صخره یا دیوار ، ربات برعکس حرکت می کند و بسته به نقطه برخورد ، زاویه خود را تغییر می دهد.

-بعد از مدتی رانندگی ، در نهایت roomba متوقف شده و از محیط اطراف عکس می گیرد

توجه داشته باشید که مقادیر مورد استفاده در رابطه با شبیه ساز بود. هنگام اطمینان از ثبات و حسابداری خطای تجهیزات ، هنگام استفاده از ربات واقعی ، مقادیری مانند زاویه چرخش سرعت چرخش و تنظیمات از پیش تعیین شده سنسور ربات باید تغییر یابد.

مرحله 4: عملکرد: پردازش تصویر

عملکرد: پردازش تصویر
عملکرد: پردازش تصویر

طبق درخواست ، ما وظیفه داشتیم داده های یک تصویر (یا چندین تصویر) را که توسط دوربین ربات دریافت شده بود ، تغییر دهیم ، به همین دلیل تصمیم گرفتیم که roomba تعداد اشیایی را که در تصویر می بیند "شمارش" کند.

ما از این تکنیک استفاده کردیم که متلب مرزهای اطراف اشیاء سیاه شده را که با زمینه سفید در تضاد هستند ترسیم کند. با این حال ، این عملکرد مستعد مشکل در یک ناحیه باز است زیرا اشکال و رنگ های مختلف توسط دوربین درک می شوند ، که منجر به شمارش غیرمعمول بالا می شود.

توجه داشته باشید که این عملکرد نمی تواند در شبیه ساز کار کند زیرا دوربین ارائه نشده است. در صورت تلاش ، خطایی رخ می دهد که فقط می توان از ماتریس (: ،: ، 3) استفاده کرد.

مرحله 5: عملکرد: نقشه برداری

عملکرد: نقشه برداری
عملکرد: نقشه برداری
عملکرد: نقشه برداری
عملکرد: نقشه برداری
عملکرد: نقشه برداری
عملکرد: نقشه برداری
عملکرد: نقشه برداری
عملکرد: نقشه برداری

یکی دیگر از ویژگی هایی که ما می خواستیم ربات داشته باشد ، نقشه برداری از مکان های آن به عنوان تعامل مستقیم با محیط است. بنابراین ، کد زیر به دنبال بازکردن نقشه و راه اندازی یک سیستم مختصات است که جزئیات هر مکانی را که در آن سنسورهای سپر ربات فشرده می شوند ، مشخص می کند. این طولانی ترین قسمت از این سه قسمت است که به صورت جداگانه آزمایش می شود ، اما وقتی در اسکریپت نهایی اعمال می شود بسیار ساده تر می شود.

به منظور افزودن محدودیت به طول زمان اجرای تابع ، از محدوده n <20 در حلقه while برای آزمایش استفاده شد.

به خاطر داشته باشید که به دلیل پیچیدگی کد ، با اجرای قطعه کد برای مدت طولانی خطاهای بیشتری رخ می دهد. از آزمایش های قبلی ، به نظر می رسد ده ضربه قبل از وقوع خطاهای قابل توجه ، تعداد نقاط باشد.

مرحله ششم: کنار هم قرار گرفتن

کنار هم گذاشتن
کنار هم گذاشتن
کنار هم گذاشتن
کنار هم گذاشتن
کنار هم گذاشتن
کنار هم گذاشتن
کنار هم گذاشتن
کنار هم گذاشتن

از آنجا که همه اینها در یک فایل واحد قرار می گیرد ، ما یک تابع با استفاده از هر یک از دو مرحله قبلی به عنوان زیر مجموعه های آن ایجاد کردیم. یک پیش نویس نهایی با اصلاح زیر در تابع redux به نام "recon" ساخته شد. برای جلوگیری از سردرگمی در MATLAB ، اسکریپت های "counter" و "rombplot3" به ترتیب به عنوان توابع تعبیه شده "CountR" و "plotr" تغییر نام دادند.

برخلاف اسکریپت های قبلی ، چندین نسخه باید در نسخه نهایی اعمال می شد:

-منبع همیشه با یک دایره قرمز مشخص می شود

-هربار که اتاقی از ضربه گیرهای آن متوقف می شود ، محل آن با یک دایره سیاه مشخص می شود

-هربار که اتاقی از سنسورهای صخره ای خود می ایستد ، مکان با یک دایره آبی مشخص می شود

-هربار که roomba از بررسی منطقه متوقف می شود ، مکان با یک دایره سبز مشخص می شود

-تصاویر به گونه ای اصلاح شده اند که قسمت بالایی برداشته شود زیرا مهر زمان به طور بالقوه با نتایج تداخل دارد

به دلیل اعداد نسبتاً زیاد ، مرزها به عنوان یک شی محسوب نمی شوند

چندین متغیر تغییر کرده است ، بنابراین برای جلوگیری از سردرگمی از نسخه های بالا برای مرجع استفاده کنید.

مرحله 7: آزمایش

آزمایش کردن
آزمایش کردن

آزمایشات برای هر جزء جداگانه گاهی اوقات مخلوط می شود ، به همین دلیل اصلاح برخی از مقادیر از پیش تعیین شده ضروری بود. زمینه موضوعی که می خواستیم قابلیت های ربات را در یک منطقه بسته آزمایش کنیم ، به سادگی شامل یک تخته سفید بود که روی یک طبقه بسیار تیره تر قرار گرفته بود. شما می توانید اشیاء را در اطراف منطقه پراکنده کنید. آنها را به عنوان اجسامی برای برخورد یا اجسام دور از منطقه متحرک ربات عمل کنید.

بعد از تنظیم زمان و سرعت تنظیم شده ، roomba رفتار حرکتی مناسبی از خود نشان داد ، از هر "صخره" یا جسمی که در آن گیر می کند متوقف شده و عقب می رود و همچنین با تشخیص چیزی در نزدیکی سرعت خود را کاهش می دهد. با رسیدن به مسافت سه متری مورد نظر ، روبات با توقف و ارزیابی منطقه ، از هر ناحیه 45 درجه عکس می گیرد و در صورت اجازه زمان به جلو حرکت می کند. با این حال ، نوبت های آن بزرگتر از آنچه درخواست شده بود ، به این معنی که داده های مختصات مبهم می شوند.

هر بار که متوقف می شود ، یک نقطه جدید در منطقه تقریبی موقعیت خود در سیستم مختصات قرار می گیرد. با این حال ، ذکر شده است که جهت اولیه ای که roomba شروع می کند نقشی محوری در طراحی نقشه دارد. اگر می توان یک ویژگی قطب نما را پیاده سازی کرد ، از آن به عنوان بخش مهمی در طراحی نقشه استفاده می شد.

زمان واقعی عملکرد برای اجرای کامل همیشه بیشتر از زمان درخواست شده است ، که با توجه به اینکه نمی تواند در میانه یکی از بازیابی های آن متوقف شود منطقی است. متأسفانه ، این نسخه از شمارش تصویر مشکلات خود را دارد ، به ویژه در مناطقی که عمدتا تک رنگ هستند یا از نظر روشنایی متفاوت هستند. از آنجا که سعی می کند بین دو سایه تمایز قائل شود ، تمایل دارد اجسامی را که مورد نظر نیستند تشخیص دهد ، بنابراین همیشه اعداد فوق العاده زیادی را به حساب می آورد.

مرحله 8: نتیجه گیری

نتیجه
نتیجه

در حالی که این کار یک کار بسیار ماجراجویانه و خلاقانه بود که باعث شادی و آرامش می شد ، من ، از مشاهدات شخصی خود ، می توانم تعداد زیادی خطا ببینم که می تواند مشکل ساز باشد ، هم در کد و هم در رفتار ربات.

محدودیت استفاده از مشخصات زمان در حلقه while باعث می شود که کل زمان بیشتر از زمان مورد نظر باشد. فرآیند تکنیک پانوراما و پردازش تصویر در واقع اگر توسط رایانه ای کند اجرا شود یا قبلاً مورد استفاده قرار نگیرد ، می تواند طولانی تر شود. علاوه بر این ، roomba که در ارائه ما مورد استفاده قرار گرفت با تعداد زیادی خطا ، به ویژه در حرکت ، در مقایسه با شبیه ساز عمل کرد. متأسفانه رباتی که مورد استفاده قرار گرفت ، تمایل داشت کمی به چپ متمایل شود ، زیرا مستقیم حرکت می کرد و دور بزرگتر از حد دلخواه می چرخاند. به همین دلیل و بسیاری دیگر ، بسیار توصیه می شود که برای جبران این خطاها ، نیاز به تغییر در زاویه چرخش آن باشد.

با این وجود ، این یک پروژه طولانی و در عین حال تحریک کننده فکری است که به عنوان یک تجربه یادگیری جالب برای استفاده از کدها و دستورات برای تأثیر مستقیم بر رفتار یک ربات واقعی عمل کرده بود.

توصیه شده: