Mundarija:

O'z-o'zini o'rganadigan xaotik robot: 3 qadam
O'z-o'zini o'rganadigan xaotik robot: 3 qadam

Video: O'z-o'zini o'rganadigan xaotik robot: 3 qadam

Video: O'z-o'zini o'rganadigan xaotik robot: 3 qadam
Video: Muhammadali Eshonqulov qaysi kitoblarni sevib o'qigan? 2024, Iyul
Anonim
O'z-o'zini o'rganadigan xaotik robot
O'z-o'zini o'rganadigan xaotik robot

Sizni mashinasozlik, AI va robotlar qiziqtiradimi? Siz biron bir oliy o'quv yurtida ishlashingiz shart emas. Bu mening tartibsiz robotim tavsifi. Bu o'z -o'zidan o'rganish kodini qanday ishlatishni va uni arduino platformasida, bu holda Arduino to'lashi kerak bo'lgan ko'rsatadigan juda oddiy robot. Bu juda arzon platforma!

Kod robotni rivojlantiradi, shunda robot emaklashni o'rganadi. U sichqonchaning orqasida joylashgan fikrlarni oladi. Kod "genetik". Bu shuni anglatadiki, bir qator shaxslar sinovdan o'tkazilib, eng yaxshilarini asrab, farzandli bo'lishadi. Bu shuni anglatadiki, kod evolyutsion tarzda rivojlanadi.

1 -qadam: AKA robot apparati

AKA robot uskunasi
AKA robot uskunasi
Robot AKA uchun uskunalar
Robot AKA uchun uskunalar
AKA robot uskunasi
AKA robot uskunasi

Senga kerak:

- 1 Arduino muddati

- 8 mikroservo

- 1 PS/2 sichqoncha

- 1 daraja almashtirgich

- Sensor qalqoni yoki shunga o'xshash bir nechta variant, men sensor qalqonidan charchadim va o'zim payvandladim.

-simlar

-servo uchun 5V tashqi quvvat manbai

- ba'zi metall bo'laklari, bir qismi elim va bir oz po'lat ip. Va lenta!

Shunday qilib, Zaminni erga qo'ying. Servolarni halqaga joylashtiring. Ularni metall qoldiqlari, elim va ip bilan birlashtiring. Bu betartiblikning bir qismi! Dizaynida xaotik bo'lgani uchun, uni emaklab olish uchun qanday harakat qilish kerakligini oldindan aytib bo'lmaydi. Shuning uchun o'z-o'zini o'rganish kodi-bu yo'l!

Maslahatlar: juda og'ir metall qismlardan foydalaning, bu robotning harakatlanishini osonlashtiradi.

Servolarni to'g'ri ulang, mening holimda ular D39, 41, 43, 45, 47, 49, 51, 53 ga ulangan.

Servolarni tashqi 5V quvvat manbaiga ulang. Buning uchun qandaydir qalqon yasang yoki sensorli qalqon yoki shunga o'xshashlardan foydalaning. Servolarni 5V pog'onadan boqmang, bu etarli emas, yonib ketadi. Men 5 V ni barcha servolarga tarqatish uchun kichik prototip taxtasidan foydalandim. Bu taxtada PS/2 sichqoncha soati va ma'lumotlar liniyalari uchun daraja almashtirgich ham mavjud. Kengash sichqonchani 5V bilan ham oziqlantiradi. Erni tashqi kuchdan Arduino -ga ulanishini unutmang! Sxemalar hammasini qanday ulash kerakligini ko'rsatadi.

PS/2 ni quvvat manbaiga (5V) va erga ulang. PS/2 ning soat va ma'lumotlar chizig'ini darajaga o'zgartirish moslamasi orqali Duega ulang. (muddati 3.3V, PS/2 5V ketadi). D12 -dagi soatni va D13 -dagi ma'lumotlarni ulang.

PS/2 protokoli haqida batafsil ma'lumot olish uchun bu juda yaxshi ko'rsatma:

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

Men foydalangan jazzycamelning PS/2 kutubxonasi:

2 -qadam: Kod

Kodeks
Kodeks

Avvaliga aytaman: men dasturchi emasman. Ba'zi qismlar juda keng, malakali dasturchi uni qisqartirishi mumkin va hokazo.

Kod o'z -o'zini o'rganishdir va bu loyihaning asosiy qismi. Bu uning qiziqarli qismi! Bu shuni anglatadiki, robot rivojlanmoqda va tobora yaxshilanmoqda, bu holda u emaklashni yaxshilaydi. Buning ajablanarli tomoni shundaki, robot siz nima ovqatlantirsangiz, o'sadi. Bu holda u PS/2 sichqonchasini tortadi va sichqon qancha uzoq bo'lsa, shuncha yuqori ball oladi.

Bu shuni anglatadiki, siz ushbu kod yordamida robotni boshqa narsaga o'rgatish uchun ishlatishingiz mumkin, agar u o'lchanib robotga qaytarilsa!

Rasmlarda ko'rib turganingizdek, sichqoncha ingichka simga sudraladi. Avvaliga u sichqoncha kabeliga tortildi. Biroq, kabel juda qattiq, shuning uchun robot sichqonchani sudrab yurishning o'rniga silkitishni o'rgandi. Ishlab chiqarilgan yuqori nuqtalarni silkitish …

Kod 50 kishidan iborat. Buning asosiy qismi 50x50 baytli massivdir.

Individ - bu baytlar majmuasi. Individ robotni boshqarishda ishlatilganda, bu shaxs "tolken" kodidagi funktsiyaga yuboriladi.

Yugurishning boshida 8 o'zgaruvchi mavjud m1, m2, m3, m4, m5, m6, m7 va m8 (har bir servo uchun bittadan). Bu robotda ularning barchasi doimiy boshlang'ich qiymatlarga ega. "To'lken" da mś individual qiymatlarga qarab sumka/halqa aylanasiga aylanadi. masalan, "1" qiymati quyidagilarni bajaradi: m1 = m1 + m2.

Agar individual: 1, 2, 3, 0, 0, 0, 0….. bo'lsa, mś quyidagicha o'zgaradi:

m1 = m1 + m2;

m1 = m1 + m3;

m1 = m1 + m4;

Tolken - 256 xil matematik operatsiyalar ro'yxati, shuning uchun individuallar massivining har bir mumkin bo'lgan qiymati m qiymatlarining matematik o'zgarishini bildiradi.

Token jarayoni 4 marotaba bajariladi, har bir davrada o'qiladi va har bir "m" uchun to'rt xil motor kodi ishlab chiqariladi. Motorkodlar keyinchalik servolarga yuboriladigan qiymatlardir.

Rivojlanishning har bir bosqichida 4 nafar shaxs emaklashda raqobatlashadi. Eng yaxshi ikkita shaxs ikkita ota -onaning ota -onasi bo'ladi, bolalar esa eng yomon ikki kishining o'rnini bosadilar. Chaqaloq tug'ilganda, bir ota -onaning "genetik kodi" bo'lagi boshqa ota -onaning bir bo'lagiga almashtiriladi, bu ikkita yangi shaxsni yaratadi.

Agar biror kishi umuman harakat qilmasa, yangilarini yaratish uchun mutatsiyalar sodir bo'ladi.

Siz kodni GitHub-da topishingiz mumkin:

3 -qadam: uni qanday o'rgatish kerak?

Bu murakkab qism. To'g'ri mashq qilish uchun har yugurishdan keyin uni "qayta o'rnatish" kerak. Bu shuni anglatadiki, uni har safar bir xil holatga qo'yish kerak.

Men robotning boshlang'ich pozitsiyasida ekanligiga ishonch hosil qilish uchun kod ichiga bir nechta nazorat nuqtalarini qo'ydim.

Shunday qilib, robotni tekislang va uni ishga tushiring.

U 4 kishini sinovdan o'tkazadi, so'ngra ota -ona bo'lish uchun eng yaxshisini tanlaydi. Eng yomoni bolalarga almashtirilgandan so'ng, u odamlarning ishi haqidagi ba'zi ma'lumotlarni chop etadi. Shuningdek, u 50x50 qatorni chop etadi. Buni Excel varag'i yoki shunga o'xshash nusxaga ko'chirish oqilona. (yoki ishlov berishda ba'zi kerakli kodlarni yozing) Agar Ta'mirlash muddati qayta tiklansa (bu turli sabablarga ko'ra sodir bo'ladi), siz mashg'ulotlaringizni yo'qotmaysiz. Siz qatorni kodga nusxa ko'chirishingiz/joylashtirishingiz mumkin va qolganingizda mashg'ulotlarni davom ettirishingiz mumkin.

Mening robotim bir necha soatdan keyin emaklashni o'rgandi. Ko'rish uchun videoni yuklab oling. Bu men o'ylagan tomonga ketmadi!

Shuningdek, turli qavatlarni sinab ko'ring! Mening robotim neylon gilamda eng yaxshi ishladi.

Mumkin bo'lgan yaxshilanishlar:

1. PS/2 sichqonchasini o'qish uchun alohida nano bo'lishi va ketma -ket harakatlanuvchi masofani nanoga yuborish yaxshiroq bo'lardi. PS/2 sichqonchamning o'qilishi biroz chayqaldi. Bu sichqonchaning kod qismlarini o'qish/tozalashining sababi.

2. robotni boshlang'ich pozitsiyasiga qaytarib olib boradigan sinov uskunasi mashg'ulotni tezlashtiradi.

3. Menimcha, uni mendan biroz sekinroq o'rgatish oqilona. Sekinroq mashg'ulotlar uning "to'g'ri yo'nalishda" o'qitilishini ta'minlaydi. Bir nechta test sinovlarining o'rtacha ishlashi mumkin bo'lgan yo'l bo'lishi mumkin.

Tavsiya: