Sadržaj:
- Korak 1: Potrebne komponente
- Korak 2: Sastavljanje robota
- Korak 3: Izradite vlastiti labirint - izborno
- Korak 4: Postavljanje okruženja
- Korak 5: Programiranje GiggleBota - I. dio
- Korak 6: Programiranje daljinskog upravljača - dio II
- Korak 7: Tumačenje udaljenog zaslona
Video: Napravite Lidar-vođenog robota s GiggleBotom: 8 koraka
2024 Autor: John Day | [email protected]. Zadnja promjena: 2024-01-30 09:35
U ovom vodiču tjeramo GiggleBot da se nosi s teškoćama labirinta.
Montiramo servo na GiggleBot na koji pričvršćujemo senzor udaljenosti. Tijekom rada servo će se okretati naprijed -natrag tako da senzor udaljenosti može izmjeriti udaljenost do svake prepreke. Ovo funkcionira poput LIDAR senzora koji je obično puno skuplji.
U isto vrijeme, GiggleBot šalje te podatke udaljenom BBC micro: bit-u koji prikazuje na svojoj matrici 5 x 5 LED diode svoj relativni položaj prema preprekama.
Vaš je posao moći upravljati GiggleBotom samo gledajući ono što je prikazano na drugom BBC micro: bitu. Za upravljanje GiggleBotom koriste se gumbi na daljinskom BBC micro: bit.
To zvuči zabavno! Prijeđimo na to, hoćemo li?
Korak 1: Potrebne komponente
Trebat će nam:
- GiggleBot.
- Baterija za BBC micro: bit. Dolazi s BBC micro: bit u pakiranju.
- x3 AA baterije za GiggleBot.
- Grove kabel za povezivanje senzora udaljenosti s GiggleBotom.
- Servo komplet iz tvrtke DexterIndustries.
- x3 BBC mikro: bitovi. Jedan za GiggleBot i jedan za upravljanje robotom iz daljine.
- Senzor udaljenosti iz tvrtke DexterIndustries.
Ovdje nabavite robota GiggleBot za BBC micro: bit!
Korak 2: Sastavljanje robota
Da bi GiggleBot bio spreman za programiranje, moramo ga sastaviti, iako ne treba puno učiniti.
Umetnite 3 AA baterije u odjeljak ispod GiggleBot -a.
Sastavite servo paket. Na njegov rotirajući krak servo -a, upotrijebite njegovu posljednju rupu da učvrstite servo na prednje konektore GiggleBot -a. Možete upotrijebiti vijak i/ili neku žicu kako biste ga učinili stabilnijim na svom mjestu. Ili ga možete vruće zalijepiti za ploču. U mom slučaju, upotrijebio sam vijak i kratku žicu za vezanje servo kraka na GiggleBot ploču.
Prilikom postavljanja servo kraka na servo, provjerite je li servo već postavljen na položaj 80. To možete učiniti pozivom na adresu gigglebot.set_servo (gigglebot. RIGHT, 80). Više o tome možete pročitati ovdje.
Zatim postavite senzor udaljenosti na prednju stranu servo paketa i popravite ga kao u gornjem primjeru.
Na kraju, spojite senzor udaljenosti Grove kablom na bilo koji od 2 I2C priključka, a servo motor na desni priključak koji se nalazi na GiggleBotu - na njemu se spominje desni priključak.
Korak 3: Izradite vlastiti labirint - izborno
U ovom slučaju, koristio sam hrpu kutija za stvaranje staze zatvorene petlje, slične NASCAR -ovoj.
U ovom koraku možete postati zaista kreativni i učiniti ga kako želite uvrnutim ili ga učiniti jako dugim jer to doista ovisi o vama.
Ili, ako uopće ne želite pjesmu, možete postaviti GiggleBot u kuhinju ili dnevni boravak na primjer - to bi trebalo biti dovoljno dobro jer postoji mnogo zidova i prepreka koje još morate izbjeći.
Korak 4: Postavljanje okruženja
Da biste mogli programirati BBC micro: bit u MicroPythonu, morate za njega postaviti uređivač (Mu Editor) i postaviti GiggleBot MicroPython Runtime kao vrijeme izvođenja. Za to morate slijediti upute na ovoj stranici. Od ovog trenutka koristi se verzija v0.4.0 vremena izvođenja.
Korak 5: Programiranje GiggleBota - I. dio
Prvo, postavimo GiggleBot -ovu skriptu. Ova će skripta natjerati GiggleBot da rotira svoj servo motor za 160 stupnjeva (80 stupnjeva u svakom smjeru), dok će u isto vrijeme uzeti 10 očitanja sa senzora udaljenosti po zavoju.
Kada je uključen, GiggleBot će čekati sve dok ne primi naredbu s daljinskog upravljača. Mogu postojati samo 3 naredbe: pomaknite se naprijed, ulijevo ili udesno.
Napomena: Sljedećoj skripti možda nedostaju razmaci, a čini se da je to zbog problema u prikazivanju GitHub gista. Pritisnite suštinu da biste se prebacili na njegovu stranicu GitHub gdje možete kopirati i zalijepiti kôd.
GiggleBot sa daljinskim upravljanjem baziran na LIDAR-u
iz gigglebot uvoza* |
from distance_sensor import DistanceSensor |
iz mikrobita uvozni san |
from utime import ticks_us, sleep_us |
uvozni ustrukt |
uvoz radio |
# zaustavite robota ako se već kreće |
Stop() |
# omogući radio |
radio.on () |
# objekt senzora udaljenosti |
ds = Senzor udaljenosti () |
ds.start_continuous () |
rotate_time = 0.7# mjereno u sekundama |
rotate_span = 160# mjereno u stupnjevima |
rotacija_koraka = 10 |
nadzemna_kompenzacija = 1,05# definirano u postocima |
time_per_step = 10 ** 6* rotate_time / (rotate_steps* nadzemna_kompenzacija) |
last_read_time = 0 |
radar = bajtr (niz rotacije_koraci) |
servo_rotate_direction = 0# 0 za kretanje prema gore (0-> 160) i 1 u suprotnom |
indeks radara = 0 |
set_servo (DESNO, 0) |
whileTrue: |
# čitanje s radara |
ako ticks_us () - last_read_time> time_per_step: |
# očitavanje s senzora udaljenosti |
radar [radarski_indeks] = int (ds.čitani_rang_naprez_kontinuirano () /10) |
last_read_time = ticks_us () |
ispis (radar_index) |
# učinite logiku za okretanje servo s lijeva na desno |
ako je radar_index == rotate_steps -1i servo_rotate_direction == 0: |
set_servo (DESNO, 0) |
servo_rotate_direction = 1 |
elif radar_index == 0i smjer servo_rotacije_ = = 1: |
set_servo (DESNO, rotate_span) |
servo_rotate_direction = 0 |
drugo: |
radarski_indeks += 1ako je servo_rotacijski_smjer == 0else-1 |
# i poslati vrijednosti radara |
radio.send_bytes (radar) |
probati: |
# čitanje naredbi robota |
lmotor, rmotor = ustruct.unpack ('bb', radio.receive_bytes ()) |
# i aktivirajte motore ako postoje primljene naredbe |
set_speed (lmotor, rmotor) |
voziti() |
osimTypeError: |
proći |
pogledajte rawgigglebot_lidar_robot.py hostirano sa ❤ od strane GitHub -a
Korak 6: Programiranje daljinskog upravljača - dio II
Ostaje učiniti programiranje drugog BBC micro: bita koji djeluje kao daljinski.
Daljinski upravljač služi za prikaz relativne udaljenosti od prepreka na ekranu veličine 5 x 5 piksela. Najviše će biti uključeno 10 piksela.
Istodobno, daljinski upravljač daje vam mogućnost daljinskog upravljanja GiggleBotom pritiskom na njegova 2 gumba: pomaknite se naprijed, ulijevo i udesno.
Napomena: Sljedećoj skripti možda nedostaju razmaci, a čini se da je to zbog problema u prikazivanju GitHub gista. Pritisnite suštinu da biste se prebacili na njegovu stranicu GitHub gdje možete kopirati i zalijepiti kôd.
GiggleBot sa daljinskim upravljanjem baziran na LIDAR -u - kod na daljinu
iz microbit uvoza sleep, display, button_a, button_b |
uvozni ustrukt |
uvoz radio |
uvoz matematike |
radio.on () |
rotacija_koraka = 10 |
rotate_span = 160# u stupnjevima |
rotate_step = rotate_span / rotate_steps |
max_distance = 50# u centimetrima |
side_length_leds = 3 # mjereno u # piksela |
radar = bajtr (niz rotacije_koraci) |
xar = bytearray (rotate_steps) |
yar = bytearray (rotate_steps) |
spremljeni_xar = bytearray (rotacijski_koraci) |
spremljeni_god = bajtrni niz (rotacijski_koraci) |
brzina_motora = 50 |
whileTrue: |
status = radio.receive_bytes_into (radar) |
ako status nije Nijedan: |
# display.clear () |
za c, val bez broja (radar): |
ako je radar [c] <= maksimalna_daljenost: |
# izračunajte 2d koordinate svake udaljenosti |
kut = koraci zakretanja / (koraci zakretanja -1) * korak zakretanja * c |
kut += (180- zakretanje_span) /2,0 |
x_c = math.cos (kut * math.pi /180,0) * radar [c] |
y_c = math.sin (kut * math.pi /180,0) * radar [c] |
# skalirajte udaljenosti tako da stane na 5x5 mikrobitni zaslon |
x_c = x_c * (bočne_dužine_vlake -1) / max_daljenost |
y_c = y_c * (side_length_leds +1) / max_distance |
# koordinate repozicije |
x_c += (side_length_leds -1) |
y_c = (side_length_leds +1) - y_c |
# okrugle koordinate točno gdje se nalaze LED diode |
ako je x_c - matematički pod (x_c) <0,5: |
x_c = matematički pod (x_c) |
drugo: |
x_c = math.ceil (x_c) |
if y_c - math.floor (y_c) <0,5: |
y_c = matematički pod (y_c) |
drugo: |
y_c = math.ceil (y_c) |
xar [c] = x_c |
yar [c] = y_c |
drugo: |
xar [c] = 0 |
yar [c] = 0 |
display.clear () |
za x, y inzip (xar, yar): |
display.set_pixel (x, y, 9) |
# ispis (popis (zip (xar, yar, radar))) |
stanjeA = gumb_a.is_pressed () |
stanjeB = button_b.is_pressed () |
ako stanjeA i stanjeB: |
radio.send_bytes (ustruct.pack ('bb', brzina_motora, brzina_motora)) |
ispis ("naprijed") |
ako stanjeA, a ne stanjeB: |
radio.send_bytes (ustruct.pack ('bb', brzina_motora, -motor_brzina)) |
ispis ('lijevo') |
ifnot stanjeA i stanjeB: |
radio.send_bytes (ustruct.pack ('bb', -motor_speed, motor_speed)) |
ispis ("desno") |
ifnot stanjeA i ne stanjeB: |
radio.send_bytes (ustruct.pack ('bb', 0, 0)) |
ispis ('stop') |
pogledajte rawgigglebot_lidar_remote.py hostirano sa ❤ na GitHubu
Korak 7: Tumačenje udaljenog zaslona
"loading =" lazy "kontrolirati GiggleBot, imate sljedeće mogućnosti:
- Pritisnite gumb A i gumb B za pomicanje GiggleBot -a prema naprijed.
- Pritisnite gumb A da biste okrenuli GiggleBot ulijevo.
- Pritisnite gumb B da biste okrenuli GiggleBot udesno.
Da biste vidjeli u kojem smjeru su otkrivene najbliže prepreke, samo pogledajte zaslon daljinskog upravljača (daljinski BBC mikro: bit koji držite). Trebali biste moći kontrolirati GiggleBot iz daljine, a da ga ne gledate.
Preporučeni:
Napravite robota za prehranu s Arduino Nano - Zlatni vijak: 5 koraka
Napravite robota za prehranu s Arduino Nano | Zlatni vijak: Ideja za ovaj projekt došla je od moje kćeri. Ona želi robota, a ovaj robot može otvoriti usta kako bi mogao staviti hranu u usta. Dakle, tražio sam u zatvorenom prostoru stvari koje su bile dostupne: karton, arduino nano, ultrazvučni senzor, servo motor
Napravite svog robota za video streaming sa internetskom kontrolom s Arduinom i Raspberry Pi: 15 koraka (sa slikama)
Napravite svog robota za video streaming sa internetom kontroliranog s Arduinom i Raspberry Pi: Ja sam @RedPhantom (poznat i kao LiquidCrystalDisplay / Itay), 14-godišnji učenik iz Izraela koji uči u Srednjoj školi za napredne znanosti i matematiku Max Shein. Izrađujem ovaj projekt za svakoga da uči i dijeli! Možda imate
Napravite plešućeg robota bez 3D pisača i Arduina/#pametna kreativnost: 11 koraka (sa slikama)
Napravite plešućeg robota bez 3D pisača i Arduina/#pametne kreativnosti: Pozdrav prijatelji, u ovom vodiču ću vam pokazati kako napraviti plešućeg robota kod kuće bez 3D pisača i bez Arduina. Ovaj robot može plesati, auto balansirati, stvarati glazbu i hodati. Dizajn robota također izgleda tako super
Napravite vlastitog panoramskog foto robota od 360 koraka: 5 koraka
Napravite svoj vlastiti panoramski foto robot 360: ovo je moj panoramski foto robot od 360, ideja je snimanje u 360 stupnjeva u što kraćem vremenu bez grešaka, snimite panoramu u teškim uvjetima i zabavno!. Ovaj projekt traje 1 mjesec provodim poboljšanja i koristim pa
Napravite vrlo malog robota: Napravite najmanji robot na kotačima sa hvataljkom na svijetu .: 9 koraka (sa slikama)
Napravite vrlo malog robota: Napravite najmanjeg robota na kotačima sa hvataljkom na svijetu.: Napravite robota od 1/20 kubnih inča s hvataljkom koja može pokupiti i pomicati male predmete. Njime upravlja Picaxe mikrokontroler. Vjerujem da je u ovom trenutku ovo možda najmanji robot na kotačima s hvataljkom na svijetu. To će bez sumnje biti