فهرست مطالب:

AI در LEGO EV3 Maze-Driving Robot: 13 مرحله
AI در LEGO EV3 Maze-Driving Robot: 13 مرحله

تصویری: AI در LEGO EV3 Maze-Driving Robot: 13 مرحله

تصویری: AI در LEGO EV3 Maze-Driving Robot: 13 مرحله
تصویری: Как охотиться на людей ► 1 Прохождение Manhunt (PS2) 2024, جولای
Anonim
Image
Image
پیچ و خم چگونه حل می شود
پیچ و خم چگونه حل می شود

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

ربات قبلی من در اینجا شرح داده شده است:

این ربات با استفاده از LEGO Mindstorms EV3 ساخته شده است. نرم افزار EV3 بر روی رایانه اجرا می شود و برنامه ای را ایجاد می کند که سپس بر روی میکروکنترلری به نام EV3 Brick بارگیری می شود. روش برنامه نویسی مبتنی بر نماد و سطح بالا است. بسیار آسان و همه کاره است.

تدارکات

قطعات

  1. مجموعه LEGO Mindstorms EV3
  2. سنسور اولتراسونیک LEGO Mindstorms EV3. در مجموعه EV3 گنجانده نشده است.
  3. مقوا راه راه برای پیچ و خم. دو کارتن باید کافی باشد.
  4. یک تکه کوچک از مقوا نازک که به تثبیت گوشه ها و دیوارها کمک می کند.
  5. چسب و نوار برای اتصال قطعات مقوایی به یکدیگر.
  6. یک پاکت کارت تبریک قرمز برای شناسایی خروجی پیچ و خم.

ابزارها

  1. چاقوی کاربردی برای برش مقوا.
  2. خط کش فولادی برای کمک به روند برش.

نرم افزار

برنامه اینجاست:

مرحله 1: چگونه پیچ و خم حل می شود

روش رانندگی ماز

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

روش پیروی از دیوار سمت چپ را انتخاب کردم. ایده این است که ربات با تصمیم گیری زیر هنگام عبور از پیچ و خم ، دیوار را در سمت چپ خود نگه می دارد:

  1. اگر امکان گردش به چپ وجود دارد ، این کار را انجام دهید.
  2. در غیر این صورت ، در صورت امکان مستقیم بروید.
  3. اگر نمی تواند به چپ یا راست برود ، در صورت امکان به راست بپیچید.
  4. اگر هیچ یک از موارد بالا امکان پذیر نیست ، این باید یک بن بست باشد. بچرخ.

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

حل مساله برای یافتن مسیر مستقیم

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

پیچ های احتمالی عبارتند از: چپ ، راست ، عقب (در بن بست) و راست (که یک تقاطع است).

جایگزینی ترکیبات به شرح زیر است:

  • "چپ ، عقب ، چپ" به "راست" تبدیل می شود.
  • "چپ ، عقب ، راست" به "بازگشت" تبدیل می شود.
  • "چپ ، عقب ، راست" به "راست" تبدیل می شود.
  • "راست ، عقب ، چپ" به "بازگشت" تبدیل می شود.
  • "راست ، عقب ، چپ" به "راست" تبدیل می شود.
  • "مستقیم ، عقب ، مستقیم" به "بازگشت" تبدیل می شود.

چگونه روبات ماز من را کنترل می کند

  1. هنگامی که ربات شروع به رانندگی می کند ، فضایی در سمت راست می بیند و Straight را در لیست آرایه ذخیره می کند.
  2. سپس به چپ می چرخد و Left را به لیست اضافه می کند. این لیست در حال حاضر شامل: راست ، چپ است.
  3. با یک بن بست ، می چرخد و به لیست اضافه می کند. این لیست در حال حاضر شامل: راست ، چپ ، عقب است.
  4. با عبور از خطی که از ورودی استفاده می کرد ، Straight را به لیست اضافه می کند. این لیست در حال حاضر شامل: راست ، چپ ، عقب ، راست است. ترکیبی را تشخیص می دهد و چپ ، عقب ، راست به راست را تغییر می دهد. این لیست اکنون شامل Straight، Right است.
  5. با یک بن بست ، می چرخد و به لیست اضافه می کند. این لیست اکنون شامل: راست ، راست ، عقب.
  6. پس از گردش به چپ ، لیست شامل Straight ، Right ، Back ، Left است. ترکیبی را تشخیص می دهد و راست ، عقب ، چپ به عقب را تغییر می دهد. این لیست اکنون شامل Straight، Back است.
  7. پس از چرخش چپ بعدی ، لیست شامل Straight ، Back ، Left است. این ترکیب را به Right تغییر می دهد. این لیست در حال حاضر فقط شامل Right است.
  8. از فضایی عبور می کند و Straight را به لیست اضافه می کند. این لیست در حال حاضر شامل Right ، Straight است.
  9. پس از گردش به راست ، لیست شامل Right ، Straight ، Right است که مسیر مستقیم است.

مرحله 2: ملاحظاتی هنگام برنامه نویسی ربات

ملاحظات مربوط به هر کنترل کننده میکرو

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

هنگامی که ربات تقاطعی را در سمت راست احساس می کند اما به راست نمی چرخد ، متوجه شده ام که خوب است ربات بدون بررسی سنسورهای آن حدود 10 اینچ (25 سانتی متر) به جلو حرکت کند.

ملاحظات ویژه LEGO MINDSTORMS EV3

اگرچه LEGO Mindstorms EV3 بسیار متنوع است ، اما به بیش از هر نوع سنسور متصل به یک آجر اجازه نمی دهد. دو یا چند آجر ممکن است زنجیر دیزی داشته باشند ، اما من نمی خواستم آجر دیگری بخرم و بنابراین از سنسورهای زیر (به جای سه سنسور اولتراسونیک) استفاده کردم: سنسور مادون قرمز ، سنسور رنگ و سنسور اولتراسونیک. این خوب کار کرد.

اما سنسور رنگ دارای محدوده بسیار کوتاهی ، حدود 2 اینچ (5 سانتیمتر) است ، که به ملاحظات خاصی منجر می شود که در زیر توضیح داده شده است:

  1. هنگامی که سنسور رنگ دیواری را در جلو تشخیص می دهد و روبات تصمیم می گیرد به راست بپیچد یا بچرخد ، باید ابتدا پشتیبان گیری کند تا فضای کافی برای چرخش بدون برخورد با دیوار به خود اختصاص دهد.
  2. یک مسئله پیچیده در برخی از تقاطع های "مستقیم" رخ می دهد. به دلیل برد کم سنسور رنگ ، ربات نمی تواند تشخیص دهد که آیا یک تقاطع "مستقیم" را احساس می کند یا به سمت راست بپیچد. من سعی کردم این مشکل را با تنظیم برنامه ای برای ذخیره "Straight" در لیست هر بار که ربات حس می کند و سپس بیش از یک "Straight" پشت سر هم در لیست حذف کنم. این وضعیت را برطرف می کند که در آن یک پیچ راست در پیچ و خم "مستقیم" را دنبال می کند اما وضعیتی که در آن یک "راست" قبل از آن وجود ندارد. من همچنین سعی کردم برنامه را برای حذف "مستقیم" در صورتی که درست قبل از "راست" باشد حذف کنم ، اما اگر یک راست به دنبال "راست" باشد این کار نمی کند. من نتوانستم راه حلی را پیدا کنم که برای همه موارد مناسب باشد ، اما فکر می کنم این امکان وجود داشته باشد که ربات به مسافت طی شده (با خواندن سنسورهای چرخش موتور) نگاه کند و تصمیم بگیرد که آیا "مستقیم" است یا راست دور زدن. من فکر نمی کردم این عارضه برای نشان دادن مفهوم AI در این پروژه ارزش انجام دادن را داشته باشد.
  3. مزیت سنسور رنگ این است که بین رنگ قهوه ای دیوار و قرمز حائلی که در خروجی استفاده کردم تمایز قائل می شود و راهی آسان برای تصمیم گیری روبات هنگام خاتمه پیچ و خم فراهم می کند.

مرحله 3: برنامه اصلی

برنامه اصلی
برنامه اصلی

LEGO Mindstorms EV3 دارای روش برنامه نویسی بسیار راحت مبتنی بر آیکون است. بلوک ها در پایین صفحه نمایش روی رایانه نشان داده می شوند و می توانند برای ایجاد یک برنامه ، در پنجره برنامه نویسی کشیده و رها شوند. EV3 Brick ممکن است از طریق کابل USB ، Wi-Fi یا بلوتوث به رایانه متصل شود و سپس برنامه از رایانه به Brick بارگیری شود.

این برنامه شامل یک برنامه اصلی و چندین "بلوک های من" است که زیر روال هستند. فایل بارگذاری شده شامل کل برنامه است که در اینجا آمده است:

مراحل برنامه اصلی به شرح زیر است:

  1. متغیر شمارش نوبت و آرایه را تعریف و مقداردهی کنید.
  2. 5 ثانیه صبر کنید و بگویید "برو".
  3. یک حلقه شروع کنید.
  4. رانندگی از طریق پیچ و خم. وقتی به خروجی رسید ، حلقه خارج می شود.
  5. نمایش بر روی صفحه نمایش آجر ، تقاطع های موجود در پیچ و خم تا کنون.
  6. بررسی کنید که آیا مسیر باید کوتاه شود یا خیر.
  7. تقاطع ها را در مسیر کوتاه نشان دهید.
  8. به مرحله 4 بازگردید.
  9. بعد از حلقه ، مسیر مستقیم را طی کنید.

اسکرین شات این برنامه اصلی را نشان می دهد.

مرحله 4: بلوک های من (زیر روال ها)

بلوک های من (زیر روال ها)
بلوک های من (زیر روال ها)

Navigate My Block ، که نحوه رانندگی ربات را از طریق پیچ و خم کنترل می کند ، نشان داده شده است. چاپ بسیار کوچک است و ممکن است خوانا نباشد. اما این یک مثال خوب از این است که دستورات if (که در سیستم LEGO EV3 سوئیچ نامیده می شوند) چند منظوره و قدرتمند هستند.

  1. پیکان شماره 1 به سوئیچ اشاره می کند که بررسی می کند آیا سنسور مادون قرمز یک شیء را بیش از یک فاصله خاص از ما می بیند یا خیر. اگر چنین است ، سری بالای بلوک ها اجرا می شوند. در غیر این صورت ، کنترل به مجموعه بزرگ و پایین بلوک ها ، جایی که پیکان شماره 2 در آن قرار دارد ، منتقل می شود.
  2. پیکان شماره 2 به سوئیچ اشاره می کند که بررسی می کند سنسور رنگ چه رنگی را می بیند. 3 مورد وجود دارد: بدون رنگ در بالا ، قرمز در وسط و قهوه ای در پایین.
  3. دو پیکان شماره 3 به سوئیچ ها اشاره می کند که بررسی می کند سنسور اولتراسونیک جسمی را بیش از یک فاصله خاص از ما می بیند یا خیر. اگر چنین است ، سری بالای بلوک ها اجرا می شوند. در غیر این صورت ، کنترل به سری پایین بلوک ها منتقل می شود.

بلوک های من برای کوتاه کردن مسیر و رانندگی در مسیر مستقیم پیچیده تر هستند و کاملاً ناخوانا هستند ، بنابراین در این سند گنجانده نشده اند.

مرحله 5: شروع به ساخت ربات: پایگاه

شروع ساخت ربات: پایگاه
شروع ساخت ربات: پایگاه
شروع ساخت ربات: پایگاه
شروع ساخت ربات: پایگاه

همانطور که قبلاً ذکر شد ، LEGO Mindstorms EV3 اجازه نمی دهد بیش از یک نوع حسگر متصل به یک آجر باشد. من از سنسورهای زیر (به جای سه سنسور اولتراسونیک) استفاده کردم: سنسور مادون قرمز ، سنسور رنگ و سنسور اولتراسونیک.

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

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

مرحله 6: بالای پایه ، 1

بالای پایگاه ، 1
بالای پایگاه ، 1
بالای پایگاه ، 1
بالای پایگاه ، 1

مرحله ThIs و 2 مرحله بعدی مربوط به قسمت بالای پایه ربات ، سنسور رنگ و کابل هایی است که همه کابل های 10 اینچی (26 سانتی متری) هستند.

مرحله 7: بالای پایه ، 2

بالای پایگاه ، 2
بالای پایگاه ، 2
بالای پایگاه ، 2
بالای پایگاه ، 2

مرحله 8: بالای پایه ، 3

بالای پایگاه ، 3
بالای پایگاه ، 3
بالای پایگاه ، 3
بالای پایگاه ، 3

مرحله 9: سنسورهای مادون قرمز و اولتراسونیک

سنسورهای مادون قرمز و اولتراسونیک
سنسورهای مادون قرمز و اولتراسونیک
سنسورهای مادون قرمز و اولتراسونیک
سنسورهای مادون قرمز و اولتراسونیک

در مرحله بعد ، سنسور مادون قرمز (در سمت چپ ربات) و سنسور اولتراسونیک (در سمت راست) قرار دارند. همچنین ، 4 پین برای چسباندن آجر در بالا.

سنسورهای مادون قرمز و اولتراسونیک به جای عمودی معمولی به صورت عمودی قرار گرفته اند. این باعث می شود گوشه ها یا انتهای دیوارها بهتر شناسایی شوند.

مرحله 10: کابل ها

کابل ها
کابل ها

کابل ها به شرح زیر به آجر متصل می شوند:

  • بندر B: موتور بزرگ سمت چپ
  • پورت C: موتور بزرگ راست
  • پورت 2: سنسور اولتراسونیک
  • پورت 3: حسگر رنگ
  • پورت 4: سنسور مادون قرمز

مرحله 11: آخرین مرحله در ساخت ربات: دکوراسیون

آخرین مرحله در ساخت ربات: دکوراسیون
آخرین مرحله در ساخت ربات: دکوراسیون
آخرین مرحله در ساخت ربات: دکوراسیون
آخرین مرحله در ساخت ربات: دکوراسیون

بال و باله فقط برای تزئین است.

مرحله 12: پیچ و خم بسازید

پیچ و خم بسازید
پیچ و خم بسازید
پیچ و خم بسازید
پیچ و خم بسازید

دو کارتن مقوایی راه راه باید برای پیچ و خم کافی باشد. دیوارهای پیچ و خم را به ارتفاع 5 اینچ (12.5 سانتی متر) ساختم ، اما اگر کمبود مقوا راه راه دارید ، 4 اینچ (10 سانتی متر) باید به همان خوبی کار کند.

ابتدا ، دیوارهای کارتن ها را به فاصله 10 اینچ (25 سانتی متر) از پایین برش دادم. سپس دیوارها را از پایین به فاصله 5 اینچ برش دادم. این دیوارهای 5 اینچی را فراهم می کند. همچنین ، من ته کارتن ها را برش دادم و حدود 1 اینچ (2.5 سانتیمتر) را برای پایداری به دیوارها وصل کردم.

قطعات مختلف را می توان برش داد و چسباند یا در هر کجا که لازم است برای ایجاد پیچ و خم چسباند. باید بین دیوارهای جانبی در هر مسیری با بن بست یک فاصله 11 یا 12 اینچی (30 سانتی متری) وجود داشته باشد. طول نباید کمتر از 10 اینچ (25 سانتی متر) باشد. این فاصله ها برای چرخاندن روبات مورد نیاز است.

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

همانطور که در تصویر نشان داده شده ، یک خروجی قرمز شامل نیمی از پاکت کارت تبریک قرمز و پایه ای از 2 تکه مقوا نازک است.

مرحله 13: پیچ و خم

بازی ماز
بازی ماز

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

یک راه حل برای حل این مشکل این است که یک روال مستقیم برای صاف کردن مسیر داشته باشید که بتواند ربات را با دیوار چپ فاصله مشخصی داشته باشد. من این را وارد نکردم این برنامه به اندازه کافی پیچیده است و برای نشان دادن مفهوم AI در این پروژه کافی است.

یادآوری نتیجه گیری

این یک پروژه سرگرم کننده و یک تجربه یادگیری عالی بود. امیدوارم شما هم براتون جالب باشه

توصیه شده: