Sadržaj:
- Korak 1: Potrebne komponente
- Korak 2: Sklapanje robota
- Korak 3: Kreirajte vlastiti labirint - izborno
- Korak 4: Postavljanje okruženja
- Korak 5: Programiranje GiggleBot -a - I dio
- Korak 6: Programiranje daljinskog upravljača - II dio
- Korak 7: Tumačenje udaljenog ekrana
Video: Napravite Lidar-vođenog robota sa GiggleBotom: 8 koraka
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-30 08:07
U ovom vodiču pokušavamo GiggleBot -u riješiti poteškoće labirinta.
Montiramo servo na GiggleBot na koji pričvršćujemo senzor udaljenosti. Tokom rada, servo će se rotirati naprijed -natrag tako da senzor udaljenosti može izmjeriti udaljenost do svake prepreke. Ovo funkcionira poput LIDAR senzora koji je obično mnogo skuplji.
U isto vrijeme, GiggleBot šalje ove podatke udaljenom BBC micro: bit-u koji prikazuje na svojoj matrici 5 x 5 LED diode svoj relativni položaj prema preprekama.
Vaš posao je da možete upravljati GiggleBotom samo gledajući ono što je prikazano na drugom BBC micro: bitu. Za kontrolu GiggleBot -a koriste se dugmad na daljinskom BBC micro: bit -u.
To zvuči zabavno! Prijeđimo na to, hoćemo li?
Korak 1: Potrebne komponente
Trebat će nam:
- A GiggleBot.
- Baterija za BBC micro: bit. Dolazi zajedno sa BBC micro: bit u svom pakovanju.
- x3 AA baterije za GiggleBot.
- Grove kabel za povezivanje senzora udaljenosti s GiggleBotom.
- Servo komplet iz kompanije DexterIndustries.
- x3 BBC mikro: bitovi. Jedan za GiggleBot i jedan za upravljanje robotom iz daljine.
- Senzor udaljenosti od DexterIndustries.
Ovdje nabavite robota GiggleBot za BBC micro: bit!
Korak 2: Sklapanje robota
Da bi GiggleBot bio spreman za programiranje, moramo ga sastaviti, iako ne treba mnogo 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 prič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, koristio 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 pomoću Grove kabela 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: Kreirajte 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 zaista ovisi o vama.
Ili, ako uopće ne želite pjesmu, možete postaviti GiggleBot u kuhinju ili dnevnu sobu na primjer - to bi trebalo biti dovoljno dobro jer postoji mnogo zidova i prepreka koje još uvijek trebate izbjegavati.
Korak 4: Postavljanje okruženja
Da biste mogli programirati BBC micro: bit u MicroPythonu, morate postaviti uređivač za njega (Mu Editor) i postaviti GiggleBot MicroPython Runtime kao vrijeme izvođenja. Da biste to učinili, morate slijediti upute na ovoj stranici. Od ovog trenutka koristi se verzija v0.4.0 vremena izvođenja.
Korak 5: Programiranje GiggleBot -a - I dio
Prvo, postavimo GiggleBot skriptu. Ova skripta će natjerati GiggleBot da rotira svoj servo motor za 160 stepeni (80 stepeni u svakom smjeru), dok će istovremeno uzeti 10 očitanja sa senzora udaljenosti po okretu.
Kada je uključen, GiggleBot će čekati sve dok ne primi naredbu s daljinskog upravljača. Mogu postojati samo 3 komande: pomaknite se naprijed, ulijevo ili udesno.
Napomena: Sljedećoj skripti možda nedostaju razmaci, a čini se da je to zbog nekog problema u prikazivanju GitHub gista. Kliknite na suštinu da biste se prebacili na njenu 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 stanja mirovanja za uvoz mikrobita |
from utime import ticks_us, sleep_us |
import ustruct |
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 |
rotate_steps = 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 |
radar_index = 0 |
set_servo (DESNO, 0) |
whileTrue: |
# čitanje s radara |
ako ticks_us () - last_read_time> time_per_step: |
# očitavanje sa senzora udaljenosti |
radar [radar_index] = int (ds.read_range_continuous () /10) |
last_read_time = ticks_us () |
ispis (radar_index) |
# uradite logiku za okretanje servo s lijeva na desno |
ako je radar_index == rotirati_korake -1 i servo_rotate_direction == 0: |
set_servo (DESNO, 0) |
servo_rotate_direction = 1 |
elif radar_index == 0i servo_rotate_direction == 1: |
set_servo (DESNO, rotate_span) |
servo_rotate_direction = 0 |
drugo: |
radar_index += 1 ako je servo_rotate_direction == 0else-1 |
# i pošaljite vrijednosti radara |
radio.send_bytes (radar) |
probaj: |
# čitanje naredbi robota |
lmotor, rmotor = ustruct.unpack ('bb', radio.receive_bytes ()) |
# i aktivirajte motore ako postoje primljene naredbe |
set_speed (lmotor, rmotor) |
drive () |
osimTypeError: |
pass |
pogledajte rawgigglebot_lidar_robot.py hostirano sa ❤ od strane GitHub -a
Korak 6: Programiranje daljinskog upravljača - II dio
Ostaje da se uradi programiranje drugog BBC micro: bita koji deluje kao daljinski.
Daljinski upravljač se koristi za prikaz relativne udaljenosti od prepreka na ekranu veličine 5 x 5 piksela. Najviše će biti uključeno 10 piksela.
U isto vrijeme, 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 nekog problema u prikazivanju GitHub gista. Kliknite na suštinu da biste se prebacili na njenu stranicu GitHub gdje možete kopirati i zalijepiti kôd.
GiggleBot sa daljinskim upravljanjem na bazi LIDAR -a - daljinski kod
iz microbit uvoza sleep, display, button_a, button_b |
import ustruct |
uvoz radio |
uvoz matematike |
radio.on () |
rotate_steps = 10 |
rotate_span = 160# u stupnjevima |
rotate_step = rotate_span / rotate_steps |
max_distance = 50# u centimetrima |
side_length_leds = 3 # mereno u # piksela |
radar = bajtr (niz rotacije_koraci) |
xar = bytearray (rotate_steps) |
yar = bytearray (rotate_steps) |
spremljeni_xar = bajtrni niz (rotacijski_koraci) |
sačuvani_godina = bajtrni niz (rotacijski_koraci) |
brzina_motora = 50 |
whileTrue: |
status = radio.receive_bytes_into (radar) |
ako status nije Nijedan: |
# display.clear () |
za c, val inenumerate (radar): |
ako je radar [c] <= maksimalna_daljenost: |
# izračunajte 2d koordinate svake udaljenosti |
angle = rotate_steps / (rotate_steps -1) * rotate_step * c |
kut += (180- rotacija_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 ekran |
x_c = x_c * (side_length_leds -1) / max_distance |
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 tačno gdje se nalaze LED diode |
if x_c - math.floor (x_c) <0,5: |
x_c = math.floor (x_c) |
drugo: |
x_c = math.ceil (x_c) |
if y_c - math.floor (y_c) <0,5: |
y_c = math.floor (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 (lista (zip (xar, yar, radar))) |
stateA = button_a.is_pressed () |
stanjeB = button_b.is_pressed () |
ako stateA i stateB: |
radio.send_bytes (ustruct.pack ('bb', brzina_motora, brzina_motora)) |
print ('naprijed') |
ako stanjeA a ne stanjeB: |
radio.send_bytes (ustruct.pack ('bb', motor_speed, -motor_speed)) |
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)) |
print ('stop') |
pogledajte rawgigglebot_lidar_remote.py hostirano sa ❤ od strane GitHub -a
Korak 7: Tumačenje udaljenog ekrana
"loading =" lazy "kontrolirati GiggleBot, imate sljedeće opcije:
- Pritisnite dugme A i dugme B da biste pomerili GiggleBot napred.
- Pritisnite dugme A da biste okrenuli GiggleBot ulijevo.
- Pritisnite dugme B da biste okrenuli GiggleBot udesno.
Da vidite u kojem smjeru su otkrivene najbliže prepreke, samo pogledajte ekran daljinskog upravljača (udaljeni BBC micro: bit koji držite). Trebali biste moći kontrolirati GiggleBot iz daljine, a da ga ne gledate.
Preporučuje se:
Napravite robota za jelo s Arduino Nano - Zlatni vijak: 5 koraka
Napravite robota za jelo 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 jednostavnog robota od stvari koje možete pronaći u svojoj kući (verzija na vrući točak): 5 koraka
Izrada jednostavnog robota od stvari koje možete pronaći u svojoj kući (verzija na vrući točak): Ova instrukcija će vam pokazati kako napraviti vrući točak koji ide sam od sebe i radi na baterije dvostruke A. Morat ćete koristiti samo stvari koje ćete najvjerojatnije pronaći u svojoj kući. Imajte na umu da ovaj robot vjerojatno neće ići ravno, a
Napravite svog robota za video streaming koji kontrolira internet s Arduinom i Raspberry Pi: 15 koraka (sa slikama)
Napravite svog robota za video streaming koji kontrolira internet s Arduinom i Raspberry Pi: Ja sam @RedPhantom (zvani LiquidCrystalDisplay / Itay), 14-godišnji učenik iz Izraela koji uči u Srednjoj školi za napredne nauke i matematiku Max Shein. Ovim projektom pravim da svi uče i dijele! Možda imate
Napravite vlastitog panoramskog foto robota od 360 koraka: 5 koraka
Napravite vlastiti panoramski foto robot od 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 i implementiram poboljšanja i koristim pa
Napravite vrlo malog robota: Napravite najmanji robot na točkovima na svijetu sa hvataljkom .: 9 koraka (sa slikama)
Napravite vrlo malog robota: Napravite najmanjeg robota na točkovima na svijetu sa hvataljkom.: Izgradite robota od 1/20 kubnih inča sa hvataljkom koja može pokupiti i pomicati male predmete. Upravlja se mikrokontrolerom Picaxe. U ovom trenutku vjerujem da je ovo možda najmanji robot na kotačima sa hvataljkom na svijetu. To će bez sumnje biti