Мазмұны:

Өздігінен үйренетін хаотикалық робот: 3 қадам
Өздігінен үйренетін хаотикалық робот: 3 қадам

Бейне: Өздігінен үйренетін хаотикалық робот: 3 қадам

Бейне: Өздігінен үйренетін хаотикалық робот: 3 қадам
Бейне: А.В.Клюев - Начало Пути, самое важное и необходимое 💎 2 / 7 2024, Қараша
Anonim
Өздігінен үйренетін хаотикалық робот
Өздігінен үйренетін хаотикалық робот

Сізді машиналық оқыту, AI och роботтары қызықтырады ма? Сізге керемет университетте жұмыс істеудің қажеті жоқ. Бұл менің ретсіз роботымның сипаттамасы. Бұл өзін -өзі үйрену кодын қалай қолдану керектігін және оны arduino платформасына қалай енгізу керектігін көрсететін өте қарапайым робот, бұл жағдайда Arduino. Бұл өте арзан платформа!

Код роботты дамытады, осылайша робот жорғалауды үйренеді. Ол артқы жағындағы тінтуірден кері байланыс алады. Код «генетикалық». Бұл дегеніміз, бірқатар жеке тұлғалар сынақтан өтіп, ең жақсылары балалы болады. Бұл код эволюциялық жолмен дамитынын білдіреді.

1 -қадам: аппараттық құрал АКА робот

AKA робот аппараттық құралы
AKA робот аппараттық құралы
AKA робот аппараттық құралы
AKA робот аппараттық құралы
AKA робот аппараттық құралы
AKA робот аппараттық құралы

Сізге қажет:

- 1 Arduino Due

- 8 микросервос

- 1 PS/2 тінтуір

- 1 деңгей ауыстырғыш

- сенсорлық қалқанның немесе басқа ұқсас нұсқаның сенсорлық қалқанынан шаршадым және өзімді дәнекерледім.

-сымдар

-сервоға арналған 5В сыртқы қуат көзі

- кейбір металл сынықтары, кейбір желім және біраз болат жіп. Және таспа!

Сондықтан төлемді еденге қойыңыз. Серводы айналасындағы сақинаға салыңыз. Оларды металл сынықтары, желім және жіппен біріктіріңіз. Бұл хаос бөлігі! Дизайн ретсіз болғандықтан, оны қозғалу үшін қалай қозғалу керектігін болжау мүмкін емес. Сондықтан өзін-өзі үйрену коды-бұл дұрыс жол!

Кеңестер: ауыр металдан жасалған бөлшектерді қолданыңыз, бұл роботтың қозғалуын жеңілдетеді.

Серверлерді сәйкесінше қосыңыз, менің жағдайда олар D39, 41, 43, 45, 47, 49, 51, 53 -ке қосылған.

Серводы сыртқы 5В қуат көзіне қосыңыз. Ол үшін қалқанның қандай да бір түрін жасаңыз немесе сенсорлық қалқан немесе соған ұқсас құрал қолданыңыз. Сервостарды 5V сымынан алмаңыз, бұл жеткіліксіз, себебі күйіп кетеді. Мен 5 В -ты барлық серверлерге тарату үшін кішкене прототип тақтасын қолдандым. Бұл тақтада PS/2 тінтуір сағаты мен деректер желілерінің деңгейлік ауыстырғышы да бар. Сонымен қатар, тақта тышқанға 5В қуат береді. Жерді сыртқы қуаттан Arduino жерге қосу керектігін ұмытпаңыз! схемалар бәрін қалай қосу керектігін көрсетеді.

PS/2 құрылғысын қуатқа (5В) және жерге қосыңыз. Двигатель арқылы PS/2 сағаты мен деректер желісін Тудеге қосыңыз. (мерзімі 3.3В, PS/2 5В кетеді). D12 -дегі сағатты және D13 -тегі деректерді қосыңыз.

PS/2 хаттамасы туралы толық ақпарат алу үшін бұл өте жақсы нұсқаулық:

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

Мен қолданған jazzycamel PS/2 кітапханасы:

2 -қадам: Кодекс

Кодекс
Кодекс

Алдымен айтайын: мен бағдарламашы емеспін. Кейбір бөліктер өте ауқымды, білікті бағдарламашы, әрине, оны қысқартуы мүмкін.

Код өзін -өзі үйрену болып табылады және бұл жобаның өзегі. Бұл оның қызықты бөлігі! Бұл роботтың дамып келе жатқанын және одан сайын жақсы болатынын білдіреді, бұл жағдайда ол жорғалауда жақсы болады. Бұл таңғажайып нәрсе-бұл робот сіз оны қайта жүктегенге дейін дамиды. Бұл жағдайда ол PS/2 тінтуірін сүйрейді, ал тышқан неғұрлым ұзақ болса, соғұрлым жоғары ұпай алады.

Бұл сонымен қатар сіз бұл кодты роботқа басқа нәрсені жасауға үйрету үшін қолдануға болатынын білдіреді, егер ол өлшеніп, роботқа берілсе!

Суреттерде көріп тұрғаныңыздай, тышқан жұқа сымға сүйреледі. Алдымен оны тышқан кабеліне сүйреп апарды. Алайда, кабель қатал, сондықтан робот тышқанды сүйреп апарудың орнына оны сілкіп үйренді. Жоғары ұпайларды шайқау…

Код 50 жеке адамды қолданады. Мұның өзегі - 50х50 байтты массив.

Жеке адам - бұл байттардың жиыны. Жеке адам роботты басқаруға пайдаланылған кезде, бұл адам «tolken» деп аталатын кодтағы функцияға жіберіледі.

Жүгірудің басында m1, m2, m3, m4, m5, m6, m7 және m8 (әр серво үшін бір) 8 айнымалы болады. Бұл роботта олардың барлығының тұрақты бастапқы мәндері бар. «Толкенде» mś жеке тұлғаның мәніне байланысты жағдайда/свич циклінде өзгертіледі. мысалы, «1» мәні келесі әрекеттерді орындайды: m1 = m1 + m2.

Егер жеке адам: 1, 2, 3, 0, 0, 0, 0….. болса, онда mś келесі түрде өзгертіледі:

m1 = m1 + m2;

m1 = m1 + m3;

m1 = m1 + m4;

Толкен - 256 түрлі математикалық операциялардың тізімі, сондықтан жеке массивтің әрбір мүмкін болатын мәні m мәндерінің математикалық өзгерісін білдіреді.

Толкен процесі 4 рет орындалады, әр айналым арасында оқылады, әр «м» үшін төрт түрлі мотор-код шығарылады. Мотокодтар - бұл кейінірек сервосқа жіберілетін мәндер.

Эволюцияның әр қадамында 4 жеке адам жүгіруден жарысады. Ең жақсы екі адам екі нәрестенің ата -анасы болады, ал балалар екі нашар баланың орнын басады. Бала туылған кезде, бір ата -ананың «генетикалық кодының» қосындысы екінші ата -ананың тіліміне айырбасталады, бұл екі жаңа индивидті жасайды.

Егер бірде -бір адам мүлде әрекет етпесе, онда жаңа адамдардың пайда болуы үшін мутация жүреді.

Сіз кодты GitHub сайтынан таба аласыз:

3 -қадам: Оны қалай үйрету керек?

Бұл қиын бөлігі. Дұрыс жаттығу үшін оны әр жүгіруден кейін «ысыру» керек. Бұл оны әр уақытта сол күйге қою керек дегенді білдіреді.

Мен роботтың бастапқы күйінде екеніне көз жеткізу үшін кодтың ішіне бірнеше бақылау нүктелерін қойдым.

Сондықтан роботты туралап, оны іске қосыңыз.

Ол 4 адамды сынайды, содан кейін ата -ана болу үшін ең жақсысын таңдайды. Нашар сәбилерді алмастырғаннан кейін, ол жеке адамдардың өнімділігі туралы кейбір деректерді басып шығарады. Ол сондай -ақ 50x50 массивін басып шығарады. Мұны Excel парағына немесе соған ұқсас көшірмеге көшірген дұрыс. (немесе өңдеу кезінде қажет кодты жазыңыз) Егер Мерзімі қалпына келтірілсе (бұл әр түрлі себептерге байланысты болса), онда сіз оқу жұмысын жоғалтпайсыз. Сіз массивті кодқа көшіре/қоя аласыз және сіз қалдырған кезде жаттығуды жалғастыра аласыз.

Менің роботым бірнеше сағаттан кейін жорғалап үйренді. Тексеру үшін бейнені жүктеңіз. Бұл мен ойлаған бағытта болмады!

Әр түрлі қабаттарды көріңіз! Менің роботым нейлон кілемде жақсы жұмыс жасады.

Мүмкін болатын жақсартулар:

1. PS/2 тінтуірін оқу үшін бөлек нано болса жақсы болар еді, және өңделген қашықтықты серия бойынша наноға жіберу. Менің PS/2 тінтуірімнің оқуы сәл сілкінді. Бұл тінтуірдің код бөліктерін оқу/тазарту себебі.

2. роботты бастапқы орнына қайтаратын сынақ қондырғысы жаттығуды жылдамдатады.

3. Менің ойымша, бұл жаттығуды маған қарағанда баяу жүргізген дұрыс. Баяу жаттығулар оның «дұрыс бағытта» дайындалатынына кепілдік береді. Бірнеше тестілеудің орташа өнімділігі ықтимал әдіс болуы мүмкін.

Ұсынылған: