فهرست مطالب:

ربات آشفته خودآموز: 3 مرحله
ربات آشفته خودآموز: 3 مرحله

تصویری: ربات آشفته خودآموز: 3 مرحله

تصویری: ربات آشفته خودآموز: 3 مرحله
تصویری: ربات ویزامتریک (رزرو وقت اتوماتیک) (ورژن 3 ربات) 2024, جولای
Anonim
ربات آشفته خودآموز
ربات آشفته خودآموز

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

کد روبات را به گونه ای تکامل می دهد که روبات خزیدن را یاد می گیرد. از ماوس که به عقب کشیده شده بازخورد می گیرد. کد "ژنتیکی" است. این بدان معناست که تعدادی از افراد مورد آزمایش قرار می گیرند و بهترین آنها نگهداری می شوند و نوزاد خواهند داشت. این بدان معناست که کد به صورت تکاملی تکامل می یابد.

مرحله 1: سخت افزار AKA Robot

سخت افزار AKA Robot
سخت افزار AKA Robot
سخت افزار AKA Robot
سخت افزار AKA Robot
سخت افزار AKA Robot
سخت افزار AKA Robot

تو نیاز داری:

- 1 آردوینو به دلیل

- 8 microservos

- 1 ماوس PS/2

- 1 تعویض کننده سطح

- برخی از انواع محافظ سنسور یا مشابه آن ، من از محافظ سنسور خسته شدم و دستگاه خود را جوش دادم.

-سیم ها

منبع تغذیه خارجی 5 ولت برای سروها

- برخی قطعات ضایعات فلزی ، مقداری چسب و مقداری نخ فولادی. و نوار!

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

نکات: از قطعات فلزی نسبتاً سنگین استفاده کنید ، حرکت روبات راحت تر می شود.

سرویس ها را به سررسید وصل کنید ، در مورد من آنها به D39 ، 41 ، 43 ، 45 ، 47 ، 49 ، 51 ، 53 متصل هستند.

سرووها را به منبع تغذیه خارجی 5 ولت وصل کنید. برای این منظور ، نوعی سپر بسازید یا از سپر حسگر یا موارد مشابه استفاده کنید. سرویس ها را از پین 5 ولت معاف نکنید ، کافی نیست ، علت آن می سوزد. من از یک تخته نمونه اولیه کوچک برای توزیع 5 ولت در همه سرویس ها استفاده کردم. این برد همچنین تعویض کننده سطح را برای ساعت موس و خطوط داده PS/2 نگه می دارد. این برد همچنین موس را با 5 ولت تغذیه می کند. به یاد داشته باشید که زمین را از منبع خارجی به زمین مناسب Arduino متصل کنید! شماتیک نحوه اتصال همه آنها را نشان می دهد.

PS/2 را به برق (5 ولت) و زمین متصل کنید. ساعت و خط داده PS/2 را از طریق تغییر سطح به وصل کنید. (زمان خروجی 3.3V ، PS/2 5V می شود). ساعت را در D12 و داده ها را در D13 وصل کنید.

برای جزئیات بیشتر در مورد پروتکل PS/2 ، این یک دستورالعمل بسیار خوب است:

www.instructables.com/id/Optical-Mouse-Od…

کتابخانه PS/2 توسط jazzycamel که من استفاده کرده ام:

مرحله 2: کد

کد
کد

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

کد خودآموز است و این هسته اصلی پروژه است. این بخش سرگرم کننده آن است! این بدان معناست که ربات تکامل می یابد و بهتر و بهتر می شود ، در این حالت در خزیدن بهتر می شود. نکته شگفت انگیز در این مورد این است که ربات به همان چیزی تبدیل می شود که شما از آن تغذیه می کنید. در این حالت یک موس PS/2 را می کشد و هرچه ماوس بیشتر کشیده شود ، امتیاز بالاتری می گیرد.

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

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

کد از 50 مورد استفاده می کند. هسته اصلی این یک آرایه 50x50 بایت است.

یک فرد آرایه ای از بایت است. هنگامی که از فرد برای اجرای ربات استفاده می شود ، این فرد به عملکردی در کد به نام "tolken" ارسال می شود.

در شروع اجرا 8 متغیر m1 ، m2 ، m3 ، m4 ، m5 ، m6 ، m7 و m8 (یکی برای هر سروو) وجود دارد. در این ربات همه آنها دارای ارزش شروع ثابت هستند. در "tolken" mś بسته به مقادیر فرد در حلقه case/swich تبدیل می شود. برای مثال مقدار "1" موارد زیر را اجرا می کند: m1 = m1 + m2.

اگر یک فرد: 1 ، 2 ، 3 ، 0 ، 0 ، 0 ، 0….. باشد ، متر مربع به شکل زیر تبدیل می شود:

m1 = m1 + m2 ؛

m1 = m1 + m3 ؛

m1 = m1 + m4 ؛

Tolken لیستی از 256 عملیات ریاضی مختلف است ، بنابراین هر مقدار ممکن از آرایه جداگانه نشان دهنده تغییر ریاضی مقادیر m است.

این فرآیند 4 بار انجام می شود و بین هر دور خوانده می شود و چهار کد موتور مختلف برای هر "m" تولید می شود. کد موتورها مقادیری هستند که بعداً به سروها ارسال می شوند.

در هر مرحله از تکامل ، 4 نفر در خزیدن رقابت می کنند. دو فرد برتر والدین دو نوزاد خواهند بود و نوزادان جایگزین دو فرد بدتر می شوند. وقتی بچه ها ساخته می شوند ، یک قطعه "کد ژنتیکی" از یکی از والدین با یک تکه از والدین دیگر خرید و فروش می شود ، این باعث ایجاد دو فرد جدید می شود.

اگر هیچ فردی اصلاً عمل نکند ، جهش افراد برای ایجاد افراد جدید رخ می دهد.

می توانید کد را در GitHub پیدا کنید:

مرحله 3: چگونه آن را آموزش دهیم؟

این قسمتی از مشکل است. برای اینکه به درستی تمرین کنید ، باید بعد از هر بار اجرا آن را "ریست" کنید. این بدان معناست که شما باید هر بار آن را در یک موقعیت قرار دهید.

من چند نقطه بازرسی را در داخل کد قرار داده ام تا مطمئن شوم که ربات در موقعیت اولیه خود قرار دارد.

بنابراین ربات را تراز کنید و بگذارید اجرا شود.

4 فرد را آزمایش می کند و سپس 2 نفر را برای والدین انتخاب می کند. پس از جایگزینی بدترین ها با بچه ها ، برخی از اطلاعات مربوط به عملکرد افراد را چاپ می کند. همچنین آرایه 50x50 را چاپ می کند. عاقلانه است که این را در یک برگه اکسل یا موارد مشابه کپی کنید. (یا برخی از کدهای مورد نیاز را در پردازش بنویسید) در صورت بازنشانی مقررات (این امر به دلایل مختلف اتفاق می افتد) ، کار آموزشی خود را از دست نخواهید داد. می توانید آرایه را در کد کپی/جایگذاری کرده و در صورت ترک به آموزش ادامه دهید.

ربات من بعد از چند ساعت یاد گرفت که خزیدن کند. ویدیو را بارگیری کنید تا خزنده شود. به سمتی که فکر می کردم نرفت!

همچنین طبقات مختلف را امتحان کنید! ربات من بهترین عملکرد را روی فرش نایلونی داشت.

بهبودهای احتمالی:

1. بهتر است یک نانو جداگانه برای خواندن موس PS/2 داشته باشید و فاصله پردازش شده را از طریق سریال به نانو ارسال کنید. خواندن موس PS/2 من کمی متزلزل است. این دلیل خواندن/پاکسازی قسمت های کد توسط ماوس است.

2. برخی از دستگاه های آزمایشی که ربات را به موقعیت اولیه خود می کشاند ، آموزش را تسریع می کند.

3. من فکر می کنم عاقلانه است که آن را کمی کندتر از من آموزش دهم. آموزش آهسته تر اطمینان می دهد که "در جهت درست" آموزش می بیند. میانگین عملکرد چندین آزمایش آزمایشی می تواند یک راه ممکن باشد.

توصیه شده: