Мазмуну:

Өз алдынча үйрөнүүчү башаламан робот: 3 кадам
Өз алдынча үйрөнүүчү башаламан робот: 3 кадам
Anonim
Өз алдынча үйрөнүүчү башаламан робот
Өз алдынча үйрөнүүчү башаламан робот

Сиз машиналуу үйрөнүүгө кызыгасызбы, AI och robots? Кээ бир кооз университетте иштөөнүн кереги жок. Бул менин башаламан роботумдун сүрөттөмөсү. Бул өзүн -өзү үйрөнүү кодун кантип колдонуу керектигин жана аны arduino платформасына кантип киргизүү керек экенин көрсөтүү үчүн абдан жөнөкөй робот, бул учурда Arduino. Бул абдан арзан платформа!

Код роботту эволюциялап, робот сойлоп кетүүнү үйрөнөт. Бул артта калган чычкандан пикир алат. Код "генетикалык". Бул бир нече инсандар текшерилип, мыктылары сакталат жана балалуу болушат дегенди билдирет. Бул код эволюциялык жол менен өнүгөт дегенди билдирет.

1 -кадам: аппараттык АКА робот

Техникалык жабдыктар АКА робот
Техникалык жабдыктар АКА робот
Техникалык жабдыктар АКА робот
Техникалык жабдыктар АКА робот
Техникалык жабдыктар АКА робот
Техникалык жабдыктар АКА робот

Сизге керек:

- 1 Arduino Due

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

- 1 PS/2 чычкан

- 1 деңгээл которгуч

- сенсордук калканчтын окшош варианты, мен сенсордун калканынан тажап, өзүмдүкүн ширеттим.

-зымдар

-тышкы 5V электр менен камсыздоо

- кээ бир металл сыныктары, кээ бир желим жана кээ бир болоттон жасалган жип. Жана тасма!

Андыктан, Убаданы жерге коюңуз. Серволорду тегерегине шакекче салып коюңуз. Аларды металл сыныктары, желим жана жип менен бириктирип коюңуз. Бул башаламандыктын бир бөлүгү! Дизайнында башаламан болгондуктан, аны сойлоп кетүү үчүн кантип жылыш керектигин алдын ала айтуу мүмкүн эмес. Мына ушундан улам, өз алдынча үйрөнүү коду-бул жол!

Кеңештер: оор металл бөлүктөрүн колдонуңуз, бул роботтун кыймылын жеңилдетет.

Серволорду тийиштүү убакытка туташтырыңыз, менин учурда алар D39, 41, 43, 45, 47, 49, 51, 53 менен байланышкан.

Серволорду тышкы 5В электр булагына туташтырыңыз. Бул үчүн кандайдыр бир калкан жасаңыз же сенсор калканчын же окшошун колдонуңуз. 5V төөнөгүчтөрүнөн серво бербеңиз, бул жетишсиз, Улам күйүп кетет. Мен кичинекей прототип тактасын колдонуп, 5 Вду баардык серволорго тараттым. Бул такта ошондой эле PS/2 чычкан сааты жана маалымат линиялары үчүн деңгээлди алмаштыргычты кармайт. Такта чычканды 5В менен да азыктандырат. Жерди тышкы кубаттан Arduino жерге туташтырууну унутпаңыз! схемалар баарын кантип туташтыруу керектигин көрсөтөт.

PS/2ди электрге (5V) жана жерге туташтырыңыз. Деңгээлди алмаштыргыч аркылуу PS/2нин саатын жана маалымат линиясын Дуга туташтырыңыз. (улам 3.3V, PS/2 5V кетет). 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 адамды сынайт, андан кийин ата -эне болуу үчүн эң мыкты 2 тандайт. Эң жамандарын наристелерге алмаштыргандан кийин, ал инсандардын иштеши боюнча кээ бир маалыматтарды басып чыгарат. Ошондой эле 50x50 массивин басып чыгарат. Муну Excel баракчасына же окшошуна көчүрүү акылдуулукка жатат. (же иштөөдө кээ бир керектүү коддорду жазыңыз) Эгерде мөөнөтү кайра коюлса (бул ар кандай себептерден улам болот), анда сиз окуу ишинизди жоготпойсуз. Сиз массивди кодго көчүрүп/чаптап, калганда тренингди уланта аласыз.

Менин роботум бир нече сааттан кийин сойлоп кетүүнү үйрөндү. Жөрмөлөө үчүн видеону жүктөп алыңыз. Мен ойлогондой багытка кеткен жок!

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

Мүмкүн болгон жакшыртуулар:

1. PS/2 чычканды окуу үчүн өзүнчө нано болсо жакшы болмок, жана иштетилген аралыкты наного сериялуу түрдө көчүрүү. Менин PS/2 чычканды окуу бир аз титиреп кетти. Бул чычкан коддун бөлүктөрүн окуу/тазалоо үчүн негиз болуп саналат.

2. роботту баштапкы абалына кайра сүйрөгөн кандайдыр бир сыноо жабдыгы машыгууну тездетет.

3. Мен аны бир аз жайыраак үйрөтүү акылдуулукка жатат деп ойлойм. Жайыраак окутуу анын "туура багытта" даярдалганына ынандырат. Бир нече сыноолордун орточо аткарылышы мүмкүн болгон жол болушу мүмкүн.

Сунушталууда: