Turinys:
- 1 žingsnis: reikalingi komponentai
- 2 žingsnis: Surinkite robotą
- 3 žingsnis: sukurkite savo labirintą - neprivaloma
- 4 žingsnis: aplinkos nustatymas
- 5 žingsnis: „GiggleBot“programavimas - I dalis
- 6 žingsnis: nuotolinio valdymo pulto programavimas - II dalis
- 7 veiksmas: nuotolinio ekrano aiškinimas
Video: Sukurkite „Lidar“valdomą robotą naudodami „GiggleBot“: 8 žingsniai
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:47
Šioje pamokoje mes siekiame, kad „GiggleBot“įveiktų labirinto sunkumus.
Mes montuojame servo ant „GiggleBot“, ant kurio pritvirtiname atstumo jutiklį. Bėgimo metu servo sistema sukasi pirmyn ir atgal, kad atstumo jutiklis galėtų išmatuoti atstumą iki kiekvienos kliūties. Tai veikia panašiai kaip LIDAR jutiklis, kuris paprastai yra daug brangesnis.
Tuo pačiu metu „GiggleBot“siunčia šiuos duomenis į nuotolinį BBC mikro: bitą, kuris ant 5x5 šviesos diodų matricos rodo savo santykinę padėtį su kliūtimis.
Jūsų užduotis yra sugebėti naršyti „GiggleBot“tik žiūrint į tai, kas rodoma kitame „BBC micro: bit“. Norint valdyti „GiggleBot“, naudojami nuotolinio „BBC micro: bit“mygtukai.
Tai skamba smagiai! Eikime prie jo, ar ne?
1 žingsnis: reikalingi komponentai
Mums reikės:
- „GiggleBot“.
- Akumuliatorius „BBC micro: bit“. Komplekte yra „BBC micro: bit“.
- x3 AA baterijos „GiggleBot“.
- „Grove“kabelis, skirtas atstumo jutikliui prijungti prie „GiggleBot“.
- Servo rinkinys iš „DexterIndustries“.
- x3 BBC mikro: bitai. Vienas skirtas „GiggleBot“, kitas - valdant robotą iš toli.
- Atstumo jutiklis iš „DexterIndustries“.
Gaukite „GiggleBot“robotą „BBC micro: bit“čia!
2 žingsnis: Surinkite robotą
Kad „GiggleBot“būtų paruoštas programuoti, turime jį surinkti, nors daug ką reikia padaryti.
Įdėkite 3 AA baterijas į skyrių po „GiggleBot“.
Surinkite servo paketą. Prie besisukančios servo rankenos naudokite paskutinę jos skylę, kad pritvirtintumėte servo prie „GiggleBot“priekinių jungčių. Galite naudoti varžtą ir (arba) laidą, kad jis būtų stabilesnis savo vietoje. Arba galite karštu klijuoti jį prie lentos. Mano atveju aš naudoju varžtą ir trumpą laidą, kad pririščiau servo ranką prie „GiggleBot“plokštės.
Montuodami servo svirtį ant servo, įsitikinkite, kad servo jau nustatyta į 80 padėtį. Tai galite padaryti paskambinę gigglebot.set_servo (gigglebot. RIGHT, 80). Daugiau apie tai galite paskaityti čia.
Tada įdėkite atstumo jutiklį į priekinę servo pakuotės pusę ir pritvirtinkite, kaip nurodyta aukščiau pateiktame pavyzdyje.
Galiausiai prijunkite atstumo jutiklį „Grove“kabeliu prie bet kurio iš 2 „I2C“prievadų, o servo variklį - prie dešiniojo „GiggleBot“prievado - jame nurodytas tinkamas prievadas.
3 žingsnis: sukurkite savo labirintą - neprivaloma
Šiuo atveju aš panaudojau daugybę dėžių, kad sukurtų uždaro ciklo takelį, panašų į NASCAR.
Atlikdami šį žingsnį, galite būti tikrai kūrybingi ir padaryti tai, kaip norite, arba padaryti tai labai ilgai, nes tai tikrai priklauso nuo jūsų.
Arba, jei visai nenorite takelio, galite, pavyzdžiui, įdėti „GiggleBot“į virtuvę ar svetainę - tai turėtų būti pakankamai gerai, nes vis dar yra daug sienų ir kliūčių, kurių reikia vengti.
4 žingsnis: aplinkos nustatymas
Kad galėtumėte programuoti „BBC micro: bit“„MicroPython“, turite nustatyti jo redaktorių („Mu Editor“) ir nustatyti „GiggleBot MicroPython Runtime“vykdymo laiką. Norėdami tai padaryti, turite vadovautis šiame puslapyje pateiktomis instrukcijomis. Šiuo metu naudojama vykdymo laiko versija v0.4.0.
5 žingsnis: „GiggleBot“programavimas - I dalis
Pirmiausia nustatykime „GiggleBot“scenarijų. Šis scenarijus privers „GiggleBot“pasukti savo servo variklį 160 laipsnių (80 laipsnių kiekviena kryptimi) ir tuo pačiu metu paimti 10 parodymų iš atstumo jutiklio per vieną posūkį.
Įjungus „GiggleBot“budės, kol gaus komandą iš nuotolinio valdymo pulto. Gali būti tik 3 komandos: judėti pirmyn, į kairę arba į dešinę.
Pastaba: šiame scenarijuje gali nebūti tarpų ir atrodo, kad tai įvyko dėl tam tikrų problemų rodant „GitHub Gists“. Spustelėkite esmę, kad pateksite į jo „GitHub“puslapį, kuriame galite nukopijuoti ir įklijuoti kodą.
Nuotoliniu būdu valdomas LIDAR pagrindu sukurtas „GiggleBot“
iš „Gigglebot“importo* |
iš distance_sensor importas DistanceSensor |
iš mikrobitų importo miego |
iš utime importo erkės_, miego_ |
importo ustruktūra |
importuoti radiją |
# sustabdykite robotą, jei jis jau juda |
sustabdyti() |
# įjungti radiją |
radio.on () |
# atstumo jutiklio objektas |
ds = DistanceSensor () |
ds.start_continuous () |
rotate_time = 0.7# išmatuotas sekundėmis |
rotate_span = 160# matuojamas laipsniais |
rotate_steps = 10 |
overhead_compensation = 1.05# apibrėžta procentais |
time_per_step = 10 ** 6* rotate_time / (rotate_steps* overhead_compensation) |
last_read_time = 0 |
radaras = baitas (rotate_steps) |
servo_rotate_direction = 0# 0, jei norite pakilti aukštyn (0-> 160) ir 1 kitaip |
radaras_indeksas = 0 |
set_servo (DEŠINĖ, 0) |
o tiesa: |
# skaityti iš radaro |
if ticks_us () - last_read_time> time_per_step: |
# skaityti iš atstumo jutiklio |
radaras [radaro_indeksas] = int (ds.read_range_continuous () /10) |
last_read_time = erkės_ (() |
spausdinti (radaras_indeksas) |
# atlikite servo sukimo iš kairės į dešinę logiką |
jei radaro_indeksas == pasukti_sukiai -1 ir servo_rotatyvo_kryptis == 0: |
set_servo (DEŠINĖ, 0) |
servo_rotate_direction = 1 |
elif radar_index == 0ir servo_rotate_direction == 1: |
set_servo (RIGHT, rotate_span) |
servo_rotate_direction = 0 |
Kitas: |
radar_index += 1, jei servo_rotate_direction == 0else-1 |
# ir atsiųsk radaro vertes |
radio.send_bytes (radaras) |
bandyti: |
# skaityti roboto komandas |
lmotor, rmotor = ustruct.unpack ('bb', radio.recept_bytes ()) |
# ir įjunkite variklius, jei bus gautos komandos |
set_speed (lmotor, rmotor) |
vairuoti () |
išskyrusTypeError: |
praeiti |
peržiūrėti rawgigglebot_lidar_robot.py, kurį priglobia „GitHub“kartu su ❤
6 žingsnis: nuotolinio valdymo pulto programavimas - II dalis
Belieka užprogramuoti antrąjį BBC mikro: bitą, kuris veikia kaip nuotolinio valdymo pultas.
Nuotolinio valdymo pultas naudojamas 5 x 5 pikselių ekrane parodyti santykinį atstumą iki kliūčių. Daugiausia bus įjungta 10 pikselių.
Tuo pačiu metu nuotolinio valdymo pultas suteikia galimybę valdyti „GiggleBot“nuotoliniu būdu, paspaudus du jo mygtukus: judėti pirmyn, į kairę ir į dešinę.
Pastaba: šiame scenarijuje gali nebūti tarpų ir atrodo, kad tai įvyko dėl tam tikrų problemų rodant „GitHub Gists“. Spustelėkite esmę, kad pateksite į jo „GitHub“puslapį, kuriame galite nukopijuoti ir įklijuoti kodą.
Nuotoliniu būdu valdomas LIDAR pagrindu sukurtas „GiggleBot“- nuotolinis kodas
iš „microbit“importavimo miego, ekrano, button_a, button_b |
importo ustruktūra |
importuoti radiją |
importuoti matematiką |
radio.on () |
rotate_steps = 10 |
rotate_span = 160# laipsniais |
rotate_step = rotate_span / rotate_steps |
max_distance = 50# centimetrais |
side_length_leds = 3 #, matuojamas # pikselių |
radaras = baitas (rotate_steps) |
xar = baitas (rotate_steps) |
yar = baitas (rotate_steps) |
Save_xar = baitas (rotate_steps) |
išsaugotas_metas = baitas (rotate_steps) |
variklio greitis = 50 |
o tiesa: |
status = radio.recept_bytes_into (radaras) |
jei būsena nėra Nėra: |
# display.clear () |
c, val nesuskaičiuoti (radaras): |
jei radaras [c] <= max_distance: |
# Apskaičiuokite kiekvieno atstumo 2d koordinates |
kampas = pasukti_žingsniai / (pasukti_žingsniai -1) * pasukti_žingsnis * c |
kampas += (180- rotate_span) /2.0 |
x_c = math.cos (kampas * math.pi /180,0) * radaras [c] |
y_c = math.sin (kampas * math.pi /180,0) * radaras [c] |
# nustatykite atstumus, kad jie tilptų į 5x5 mikrobitų ekraną |
x_c = x_c * (side_length_leds -1) / max_distance |
y_c = y_c * (šoniniai_ilgis_lydžiai +1) / max_distance |
# perkėlimo koordinatės |
x_c += (šoniniai_ilginiai_spalviai -1) |
y_c = (šoniniai_ilginiai_padai +1) - y_c |
# apvalios koordinatės tiksliai, kur yra šviesos diodai |
jei x_c - matematika.floor (x_c) <0,5: |
x_c = matematikos grindys (x_c) |
Kitas: |
x_c = matematika.ceil (x_c) |
jei y_c - matematika.floor (y_c) <0,5: |
y_c = matematika.floor (y_c) |
Kitas: |
y_c = matematika.ceil (y_c) |
xar [c] = x_c |
yar [c] = y_c |
Kitas: |
xar [c] = 0 |
yar [c] = 0 |
display.clear () |
x, y inzip (xar, yar): |
display.set_pixel (x, y, 9) |
# spausdinti (sąrašas (zip (xar, yar, radaras))) |
stateA = button_a.is_pressed () |
stateB = button_b.is_pressed () |
jei būsenos A ir būsenos B: |
radio.send_bytes (ustruct.pack ('bb', motor_speed, motor_speed)) |
spausdinti („pirmyn“) |
jei būsena A, o ne būsena B: |
radio.send_bytes (ustruct.pack ('bb', motor_speed, -motor_speed)) |
spausdinti („kairėje“) |
jei ne būsena A ir būsena B: |
radio.send_bytes (ustruct.pack ('bb', -motor_speed, motor_speed)) |
spausdinti (dešinėje) |
ifnot stateA ir not stateB: |
radio.send_bytes (ustruct.pack ('bb', 0, 0)) |
spausdinti („stop“) |
peržiūrėkite rawgigglebot_lidar_remote.py, kurį su „❤“priglobia „GitHub“
7 veiksmas: nuotolinio ekrano aiškinimas
„loading =„ tingus “valdykite„ GiggleBot “, turite šias parinktis:
- Paspauskite mygtuką A ir mygtuką B, kad perkeltumėte „GiggleBot“į priekį.
- Paspauskite mygtuką A, kad pasuktumėte „GiggleBot“į kairę.
- Paspauskite mygtuką B, kad pasuktumėte „GiggleBot“į dešinę.
Norėdami pamatyti, kuria kryptimi aptinkamos artimiausios kliūtys, tiesiog pažvelkite į nuotolinio valdymo pulto (nuotolinio BBC mikro: bitą, kurį laikote) ekraną. Turėtumėte sugebėti valdyti „GiggleBot“iš tolo, nežiūrėdami į jį.
Rekomenduojamas:
Sukurkite savo interneto valdomą vaizdo transliacijos robotą naudodami „Arduino“ir „Raspberry Pi“: 15 žingsnių (su nuotraukomis)
Sukurkite savo interneto valdomą vaizdo transliacijos robotą su „Arduino“ir „Raspberry Pi“: aš esu @RedPhantom (dar žinomas kaip „LiquidCrystalDisplay / Itay“), 14 metų studentas iš Izraelio, besimokantis Max Shein jaunesniojoje pažangiųjų mokslų ir matematikos vidurinėje mokykloje. Aš kuriu šį projektą, kad visi galėtų pasimokyti ir pasidalyti juo
Sukurkite „Bluetooth“valdomą robotą naudodami savo GUI: 5 žingsniai
Sukurkite „Bluetooth“valdomą robotą naudodami savo GUI: Sveiki draugai, šiandien sukūrę kokį nors amatų projektą, čia aš atėjau su šauniu arduino projektu. Išoriškai tai atrodo sena koncepcija, bet palaukite, vaikinai, turiu šiek tiek pasukimo, todėl šis projektas yra unikalus. Taigi, kas čia yra unikalaus? Taigi čia aš jums parodysiu
Sukurkite „Telepresence“robotą, valdomą per „Wi -Fi“: 11 žingsnių (su nuotraukomis)
Sukurkite „Telepresence“robotą, valdomą per „Wi -Fi“: Šis projektas yra skirtas sukurti robotą, kuris galėtų sąveikauti su nuotoline aplinka ir būti valdomas iš bet kurios pasaulio vietos naudojant „Wifi“. Tai yra mano paskutinių metų inžinerijos projektas, ir aš daug sužinojau apie elektroniką, daiktą internetu ir programavimą, nors
Sukurkite gestais valdomą robotą: 4 žingsniai (su nuotraukomis)
Sukurkite gestais valdomą robotą: Šioje instrukcijoje mes kuriame robotą „Arcbotics Sparki“, kurį galima valdyti 3D gestais. Puiki šio projekto ypatybė yra ta, kad robotui valdyti nereikia jokių papildomų įrenginių, tokių kaip išmanusis telefonas ar pirštinė. Tiesiog perkelkite ranką per vieną
Sukurkite žiniatinklio prijungtą robotą (už maždaug 500 USD) (naudodami „Arduino“ir „Netbook“): 6 žingsniai (su paveikslėliais)
Sukurkite žiniatinklio prijungtą robotą (už maždaug 500 USD) (naudodami „Arduino“ir „Netbook“): ši instrukcija parodys, kaip sukurti savo žiniatinklio prijungtą robotą (naudojant „Arduino“mikrovaldiklį ir „Asus eee“kompiuterį). Kodėl norite interneto Prijungtas robotas? Žinoma, žaisti. Vairuokite savo robotą iš viso kambario arba per visą skaičių