Mundarija:
- 1 -qadam: kerakli komponentlar
- 2 -qadam: Robotni yig'ish
- 3 -qadam: O'zingizning labirintingizni yarating - ixtiyoriy
- 4 -qadam: Atrof -muhitni sozlash
- 5 -qadam: GiggleBot dasturlash - I qism
- 6 -qadam: Masofadan boshqarish pultini dasturlash - II qism
- 7 -qadam: Masofaviy ekranni talqin qilish
Video: GiggleBot yordamida Lidar boshqaradigan robot yarating: 8 qadam
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:26
Ushbu qo'llanmada biz GiggleBot -ga labirintning qiyinchiliklarini engishga yordam beramiz.
Biz GiggleBot -ga servo o'rnatamiz, unga masofa sensori o'rnatamiz. Yugurish paytida servo oldinga va orqaga buriladi, shunda masofa sensori har bir to'siqqa qadar bo'lgan masofani o'lchaydi. Bu, odatda, ancha qimmat bo'lgan LIDAR sensoriga o'xshaydi.
Shu bilan birga, GiggleBot bu ma'lumotni BBCning 5-dan 5-gacha matritsasida to'siqlarga nisbatan o'rnini ko'rsatadigan BBC-ning uzoqdagi mikro: bitiga yuboradi.
Sizning vazifangiz - GiggleBot -da faqat BBC -ning boshqa mikro: bitida ko'rsatilgan narsalarga qarab harakat qilish. GiggleBot -ni boshqarish uchun BBC mikro: bitli masofadagi tugmalar ishlatiladi.
Bu kulgili tuyuladi! Keling, boshlaylik, to'g'rimi?
1 -qadam: kerakli komponentlar
Bizga kerak bo'ladi:
- GiggleBot.
- BBC micro: bit uchun batareya to'plami. U BBC micro: bit bilan birga keladi.
- GiggleBot uchun x3 AA batareyalar.
- Masofa sensorini GiggleBot -ga ulash uchun Grove kabeli.
- DexterIndustries -dan Servo to'plami.
- x3 BBC mikro: bit. Biri GiggleBot uchun, ikkinchisi esa robotni uzoqdan boshqarardi.
- DexterIndustries dan masofa sensori.
BBC micro uchun GiggleBot robotini oling: bu erda bit!
2 -qadam: Robotni yig'ish
GiggleBot -ni dasturlashga tayyor qilish uchun biz uni yig'ishimiz kerak, lekin ko'p narsa qilish kerak emas.
3 ta AA batareyasini GiggleBot ostidagi bo'linmasiga joylashtiring.
Servo paketini yig'ing. GiggleBot -ning oldingi ulagichlariga servo o'rnatish uchun uning oxirgi teshigidan foydalaning. O'z o'rnida yanada mustahkam bo'lishi uchun siz vintni va/yoki simni ishlatishingiz mumkin. Yoki uni taxtaga issiq yopishtirishingiz mumkin. Mening holatimda, servo qo'lni GiggleBot taxtasiga bog'lash uchun vint va qisqa sim ishlatilgan.
Servo qo'lini servoga o'rnatayotganda, servo allaqachon 80 holatiga o'rnatilganligiga ishonch hosil qiling. Buni gigglebot.set_servo (gigglebot. RIGHT, 80) raqamiga qo'ng'iroq qilib qilishingiz mumkin. Bu haqda bu erda ko'proq o'qishingiz mumkin.
Keyin masofa sensori servo paketining old tomoniga joylashtiriladi va yuqoridagi misolda bo'lgani kabi tuzatiladi.
Nihoyat, masofa sensori Grove kabeli bilan har qanday 2 I2C portiga va servo dvigatelni GiggleBot -da o'tirgan o'ng portga ulang - bu erda to'g'ri port ko'rsatilgan.
3 -qadam: O'zingizning labirintingizni yarating - ixtiyoriy
Bunday holda, men NASCAR -ga o'xshash yopiq pastadir yo'lini yaratish uchun bir nechta qutilarni ishlatganman.
Bu bosqichda siz chindan ham ijodiy bo'lishingiz va xohlaganingizcha burishingiz mumkin, yoki buni juda uzoq qilishingiz mumkin, chunki bu sizga bog'liq.
Yoki siz trekni umuman xohlamasangiz, masalan, GiggleBot -ni oshxonaga yoki yashash xonasiga qo'yishingiz mumkin - bu etarli darajada yaxshi bo'lishi kerak, chunki siz hali ham chetlab o'tishingiz kerak bo'lgan devorlar va to'siqlar ko'p.
4 -qadam: Atrof -muhitni sozlash
Siz MicroPython -da BBC micro: bit dasturlash imkoniyatiga ega bo'lishingiz uchun unga muharrir (Mu muharriri) o'rnatishingiz va GiggleBot MicroPython ish vaqtini uning ish vaqti sifatida belgilashingiz kerak. Buning uchun siz ushbu sahifadagi ko'rsatmalarga amal qilishingiz kerak. Hozirgi vaqtda ish vaqtining v0.4.0 versiyasi ishlatiladi.
5 -qadam: GiggleBot dasturlash - I qism
Birinchidan, GiggleBot skriptini o'rnatamiz. Bu skript GiggleBot -ni servo dvigatelini 160 gradusga (har bir yo'nalishda 80 daraja) aylantirishga majbur qiladi, shu bilan birga masofa sensori har burilishda 10 o'qishni oladi.
Yoqilganda, GiggleBot masofadan boshqarish pultidan buyruq olinmaguncha yonida bo'ladi. Faqat 3 ta buyruq bo'lishi mumkin: oldinga, chapga yoki o'ngga.
Eslatma: Quyidagi skriptda bo'sh joylar etishmayotgan bo'lishi mumkin va bu GitHub Gistlarini ko'rsatishda ba'zi muammolarga bog'liq bo'lishi mumkin. Sizni GitHub sahifasiga olib borish uchun mohiyatni bosing, u erda siz kodni nusxa ko'chirishingiz mumkin.
Masofadan boshqariladigan LIDAR-ga asoslangan GiggleBot
gigglebot importidan* |
masofa sensori importidan DistanceSensor |
microbit import uyqusidan |
vaqtidan import ticks_us, sleep_us |
ustruct import |
radio import qilish |
# robot harakatlanayotgan bo'lsa to'xtating |
STOP() |
# radio yoqish |
radio.on () |
# masofa sensori obyekti |
ds = DistanceSensor () |
ds.start_continuous () |
rotate_time = 0.7# soniyalarda o'lchanadi |
rotate_span = 160# daraja bilan o'lchanadi |
rotate_steps = 10 |
qo'shimcha xarajatlar = 1.05# foizlarda aniqlanadi |
time_per_step = 10 ** 6* rotate_time / (rotate_steps* overhead_compensation) |
last_read_time = 0 |
radar = baytray (rotate_steps) |
servo_rotate_direction = 0# 0 yuqoriga ko'tarilish uchun (0-> 160) va aks holda 1 |
radar_index = 0 |
set_servo (O'ng, 0) |
whileTrue: |
# radardan o'qing |
agar ticks_us () - last_read_time> time_per_step: |
# masofa sensori orqali o'qiladi |
radar [radar_index] = int (ds.read_range_continuous () /10) |
last_read_time = ticks_us () |
chop etish (radar_index) |
# servoni chapdan o'ngga aylantirish mantig'ini bajaring |
agar radar_index == rotate_steps -1 va servo_rotate_direction == 0 bo'lsa: |
set_servo (O'ng, 0) |
servo_rotate_direction = 1 |
elif radar_index == 0 va servo_rotate_direction == 1: |
set_servo (O'ng, aylantirish_span) |
servo_rotate_direction = 0 |
boshqa: |
radar_index += 1if servo_rotate_direction == 0else-1 |
# va radar qiymatlarini yuboring |
radio.send_bytes (radar) |
harakat qilib ko'ring: |
# robot buyruqlarini o'qish |
lmotor, rmotor = ustruct.unpack ('bb', radio.receive_bytes ()) |
# va qabul qilingan buyruqlar bo'lsa, dvigatellarni ishga tushiring |
to'siq tezligi (lmotor, rmotor) |
haydash () |
exceptTypeError: |
o'tish |
GitHub tomonidan ❤ bilan uyushtirilgan rawgigglebot_lidar_robot.py faylini ko'rish
6 -qadam: Masofadan boshqarish pultini dasturlash - II qism
Qolgan narsa - masofadan boshqarish pulti vazifasini bajaradigan 2 -chi BBC mikro: bitini dasturlash.
Masofadan boshqarish pulti 5x5 pikselli ekranida to'siqlarga nisbatan masofani ko'rsatish uchun ishlatiladi. Eng ko'p 10 piksel yoqilgan bo'ladi.
Shu bilan birga, masofadan boshqarish pulti sizga GiggleBot -ni 2 tugmachasini bosib masofadan boshqarish imkoniyatini beradi: oldinga, chapga va o'ngga.
Eslatma: Quyidagi skriptda bo'sh joylar etishmayotgan bo'lishi mumkin va bu GitHub Gistlarini ko'rsatishda ba'zi muammolarga bog'liq bo'lishi mumkin. Sizni GitHub sahifasiga olib borish uchun mohiyatni bosing, u erda siz kodni nusxa ko'chirishingiz mumkin.
Masofadan boshqarish LIDAR -ga asoslangan GiggleBot - Masofaviy kod
microbit import uyqu, displey, button_a, button_b |
ustruct import |
radio import qilish |
matematikani import qilish |
radio.on () |
rotate_steps = 10 |
rotate_span = 160# daraja |
rotate_step = rotate_span / rotate_steps |
max_distance = 50# santimetrda |
side_length_leds = 3 # piksellar sonida o'lchanadi |
radar = baytray (rotate_steps) |
xar = baytearray (rotate_steps) |
yar = bytearray (rotate_steps) |
save_xar = baytray (rotate_steps) |
najot_yar = baytray (rotate_steps) |
motor tezligi = 50 |
whileTrue: |
holat = radio.receive_bytes_into (radar) |
holati Yo'q bo'lsa: |
# display.clear () |
c uchun, val qiymatsiz (radar): |
agar radar [c] <= max_distance: |
# har bir masofaning 2d koordinatalarini hisoblang |
burchak = rotate_steps / (rotate_steps -1) * rotate_step * c |
burchak += (180- aylantirish_span) /2.0 |
x_c = math.cos (burchak * math.pi /180.0) * radar [c] |
y_c = math.sin (burchak * math.pi /180.0) * radar [c] |
# 5x5 mikrobitli displeyga mos keladigan masofalarni o'lchash |
x_c = x_c * (yon_ uzunlik_leds -1) / maksimal_ masofa |
y_c = y_c * (yon uzunlik_leds +1) / maksimal_ masofa |
# koordinatalarni qayta joylashtirish |
x_c += (yon_ uzunlik_leds -1) |
y_c = (yon_ uzunlik_leds +1) - y_c |
# dumaloq koordinatalar aynan LEDlar qaerda |
agar x_c - math.floor (x_c) <0,5: |
x_c = math.floor (x_c) |
boshqa: |
x_c = math.ceil (x_c) |
agar y_c - math.floor (y_c) <0,5: |
y_c = matematik.for (y_c) |
boshqa: |
y_c = math.ceil (y_c) |
xar [c] = x_c |
yar [c] = y_c |
boshqa: |
xar [c] = 0 |
yar [c] = 0 |
display.clear () |
x, y inzip uchun (xar, yar): |
display.set_pixel (x, y, 9) |
# chop etish (ro'yxat (zip (xar, yar, radar)))) |
davlatA = tugma_a.is_pressed () |
stateB = button_b.is_pressed () |
agar stateA va stateB bo'lsa: |
radio.send_bytes (ustruct.pack ("bb", motor tezligi, motor tezligi)) |
bosib chiqarish ("oldinga") |
agar davlatA va davlat B bo'lmasa: |
radio.send_bytes (ustruct.pack ("bb", motor tezligi, -motor_speed)) |
bosib chiqarish ("chapda") |
agar davlat A va davlat B bo'lmasa: |
radio.send_bytes (ustruct.pack ('bb', -motor_speed, motor_speed)) |
chop etish ("o'ng") |
if emas davlatA va davlat B emas: |
radio.send_bytes (ustruct.pack ('bb', 0, 0)) |
chop etish ("to'xtatish") |
rawgigglebot_lidar_remote.py faylini GitHub tomonidan ❤ bilan ko'rish
7 -qadam: Masofaviy ekranni talqin qilish
"loading =" dangasa "GiggleBotni boshqaradi, sizda quyidagi variantlar mavjud:
- GiggleBotni oldinga siljitish uchun A va B tugmachalarini bosing.
- GiggleBotni chapga burish uchun A tugmachasini bosing.
- GiggleBot -ni o'ngga aylantirish uchun B tugmachasini bosing.
Eng yaqin to'siqlar qaysi yo'nalishda aniqlanganini ko'rish uchun masofadan boshqarish pultining (siz ushlab turadigan BBC mikro: bit) ekraniga qarang. Siz GiggleBot -ni uzoqdan boshqarmasdan boshqarishingiz kerak.
Tavsiya:
Qanday qilib Arduino yordamida odamni boshqaradigan robot qilish mumkin: 3 qadam
Qanday qilib Arduino yordamida odamni ergashtiradigan robot qilish mumkin: odam robotga ergashadi va odamga ergashadi
Robot: Windows Phone boshqaradigan mobil telefonning ikki yo'li.: 6 qadam (rasmlar bilan)
Robot: Windows Phone tomonidan boshqariladigan ikki yo'lli mobil telefonlar ro'yxati: Ro'yxat: Arduino Uno L 293 (ko'prik) HC SR-04 (Sonar moduli) HC 05 (Bluetooth moduli) Tg9 (Micro Servo) tishli qutisi bo'lgan dvigatel (ikkita) 6 AA) Kontaktli linzalarni ushlab turuvchi simlar (erkak va ayol pinlari) Kabelni issiq yopishtiruvchi (tayoq
Evdu-Arduino o'rnatilgan platformasi yordamida hisoblarni halqa bilan boshqaradigan aqlli basketbol o'yini: 13 qadam
"Evive-Arduino" o'rnatilgan platformasidan foydalangan holda hisoblarni halqa bilan boshqaradigan aqlli basketbol arja o'yini: O'yinlarning eng qiziqarli qismi- bu arkad o'yinlari. Shunday qilib, nima uchun biz o'zimizni uyda qilmasligimiz haqida o'yladik! Mana, biz hozirgacha o'ynagan eng qiziqarli DIY o'yini - DIY Arja Basketbol O'yini! Bu nafaqat
Arduino va kompyuter boshqaradigan robot qo'l: 10 qadam
Arduino va kompyuter tomonidan boshqariladigan robot qo'llari: Robot qo'llari sanoatda keng qo'llaniladi. O'rnatish, payvandlash yoki hatto ISS (Xalqaro kosmik stansiya) ga joylashtirish uchun ishlatiladimi, ular odamlarga ishda yordam beradi yoki odamni butunlay almashtiradi. Men qurgan qo'l kichikroq
Internetga ulangan robot yarating (taxminan 500 dollarga) (Arduino va netbuk yordamida): 6 qadam (rasmlar bilan)
Internetga ulangan robotni (taxminan 500 dollarga) qiling (Arduino va Netbukdan foydalangan holda): Ushbu ko'rsatma sizga o'zingizning Internetga ulangan robotingizni (Arduino mikrokontroller va Asus eee kompyuteri yordamida) qanday qurishni ko'rsatib beradi. Ulangan robot? Albatta o'ynash uchun. Robotingizni xona bo'ylab yoki sanoq bo'ylab haydang