Sisällysluettelo:
- Vaihe 1: Tarvittavat komponentit
- Vaihe 2: Robotin kokoaminen
- Vaihe 3: Luo oma sokkelo - valinnainen
- Vaihe 4: Ympäristön määrittäminen
- Vaihe 5: GiggleBot -ohjelman ohjelmointi - Osa I
- Vaihe 6: Kaukosäätimen ohjelmointi - Osa II
- Vaihe 7: Etänäytön tulkinta
Video: Tee Lidar-ohjattu robotti GiggleBotilla: 8 vaihetta
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:02
Tässä opetusohjelmassa GiggleBot ratkaisee sokkelon vaikeudet.
Asennamme servon GiggleBotiin, johon kiinnitämme etäisyysanturin. Juoksun aikana servo pyörii edestakaisin, jotta etäisyysanturi voi mitata etäisyyden jokaiseen esteeseen asti. Tämä toimii paljon kuin LIDAR -anturi, joka on yleensä paljon kalliimpaa.
Samaan aikaan GiggleBot lähettää nämä tiedot BBC: n kauko-bitille, joka näyttää 5 x 5-LED-matriisilleen suhteellisen sijaintinsa esteisiin.
Sinun tehtäväsi on pystyä navigoimaan GiggleBotissa vain katsomalla, mitä se näyttää toisella BBC: n mikro: bitillä. GiggleBotin ohjaamiseen käytetään BBC micro: bit -kaukosäätimen kauko -ohjaimen painikkeita.
Kuulostaa hauskalta! Mennään asiaan, jooko?
Vaihe 1: Tarvittavat komponentit
Tarvitsemme:
- GiggleBot.
- Akku BBC micro: bitille. Sen mukana tulee BBC micro: bit.
- x3 AA -paristoa GiggleBotille.
- Grove -kaapeli etäisyysanturin liittämiseksi GiggleBotiin.
- Servosarja DexterIndustriesilta.
- x3 BBC micro: bittiä. Yksi GiggleBotille ja toinen robotin ohjaamiseen kaukaa.
- DexterIndustriesin etäisyysanturi.
Hanki GiggleBot -robotti BBC micro: bitille täältä!
Vaihe 2: Robotin kokoaminen
Jotta GiggleBot voidaan ohjelmoida, meidän on koottava se, vaikka ei ole paljon tehtävää.
Aseta 3 AA -paristoa lokeroonsa GiggleBotin alapuolelle.
Kokoa servopaketti. Kiinnitä servo sen viimeiseen reikään kiinnittääksesi servon GiggleBotin etuliittimiin sen viimeiseen reikään. Voit käyttää ruuvia ja/tai lankaa vakauttaaksesi sen paikallaan. Tai voit liimata sen levylle kuumaliimalla. Minun tapauksessani käytin ruuvia ja lyhyttä lankaa sitomaan servovarren GiggleBot -levyyn.
Kun asennat servovarren servolle, varmista, että servo on jo asetettu asentoon 80. Voit tehdä sen soittamalla gigglebot.set_servo (gigglebot. OIKEA, 80). Voit lukea siitä lisää täältä.
Aseta seuraavaksi etäisyysanturi servopaketin etupuolelle ja kiinnitä se kuten yllä olevassa esimerkissä.
Kytke lopuksi etäisyysanturi Grove -kaapelilla mihin tahansa 2 I2C -porttiin ja servomoottori oikeaan porttiin GiggleBotissa - oikea portti on mainittu siinä.
Vaihe 3: Luo oma sokkelo - valinnainen
Tässä tapauksessa olen käyttänyt joukkoa laatikoita luodakseni suljetun silmukan raidan, joka on samanlainen kuin NASCAR.
Tässä vaiheessa voit olla todella luova ja tehdä siitä niin kieroa kuin haluat tai tehdä siitä erittäin pitkä, koska se on todella sinun tehtäväsi.
Tai jos et halua raitaa ollenkaan, voit laittaa GiggleBotin esimerkiksi keittiöön tai olohuoneeseen - sen pitäisi olla tarpeeksi hyvä, koska on vielä paljon seiniä ja esteitä, joita sinun on vältettävä.
Vaihe 4: Ympäristön määrittäminen
Jotta voit ohjelmoida BBC: n micro: bitin MicroPythonissa, sinun on määritettävä sen editori (Mu Editor) ja asetettava GiggleBot MicroPython Runtime ajonaikaksi. Tätä varten sinun on noudatettava tämän sivun ohjeita. Tästä hetkestä lähtien ajonaikaista versiota v0.4.0 käytetään.
Vaihe 5: GiggleBot -ohjelman ohjelmointi - Osa I
Asetetaan ensin GiggleBotin komentosarja. Tämä käsikirjoitus saa GiggleBotin kääntämään servomoottoriaan 160 astetta (80 astetta kumpaankin suuntaan) samalla kun se ottaa 10 lukemaa etäisyysanturilta kierrosta kohden.
Kun GiggleBot on päällä, se on paikallaan, kunnes se saa komennon kauko -ohjaimesta. Komentoja voi olla vain kolme: siirry eteenpäin, vasemmalle tai oikealle.
Huomautus: Seuraavassa komentosarjassa saattaa olla tyhjiä välilyöntejä, ja tämä näyttää johtuvan jostakin ongelmasta GitHub Gistsin näyttämisessä. Napsauta ydintä viedäksesi sen GitHub-sivulle, jossa voit kopioida ja liittää koodin.
Kauko-ohjattava LIDAR-pohjainen GiggleBot
gigglebot -tuonnista* |
from distance_sensor import DistanceSensor |
mikrobittien tuonnin lepotilasta |
utime -tuonnista ticks_us, sleep_us |
tuontirakenne |
tuoda radio |
# pysäytä robotti, jos se jo liikkuu |
lopettaa() |
# ota radio käyttöön |
radio.on () |
# etäisyysanturi |
ds = Etäisyysanturi () |
ds.start_continuous () |
rotate_time = 0.7# sekunneissa mitattuna |
rotate_span = 160# asteina mitattuna |
rotate_steps = 10 |
overhead_compensation = 1.05# määritelty prosentteina |
time_per_step = 10 ** 6* rotate_time / (rotate_steps* overhead_compensation) |
last_read_time = 0 |
tutka = bytearray (rotate_steps) |
servo_rotate_direction = 0# 0 ylöspäin (0-> 160) ja 1 muutoin |
tutka_indeksi = 0 |
set_servo (OIKEA, 0) |
Vaikka totta: |
#lukeminen tutkalta |
if ticks_us () - last_read_time> time_per_step: |
# lukea etäisyysanturista |
tutka [tutka_indeksi] = int (ds.read_range_continuous () /10) |
last_read_time = ticks_us () |
tulosta (tutka_indeksi) |
# tee logiikka servon kääntämiseksi vasemmalta oikealle |
jos tutka -indeksi == pyöritysvaiheet -1 ja servokierron_suunta == 0: |
set_servo (OIKEA, 0) |
servo_rotate_direction = 1 |
elif tutka_indeksi == 0ja servokierron_suunta == 1: |
set_servo (OIKEA, käännä_span) |
servo_rotate_direction = 0 |
muu: |
radar_index += 1 jos servo_rotate_direction == 0else-1 |
# ja lähetä tutka -arvot |
radio.send_bytes (tutka) |
yrittää: |
# lue robotin komennot |
lmotor, rmotor = ustruct.unpack ('bb', radio.recept_bytes ()) |
# ja käytä moottoreita, jos vastaanotettuja komentoja tulee |
set_speed (lmotor, rmotor) |
ajaa() |
paitsiTyyppiVirhe: |
kulkea |
katso rawgigglebot_lidar_robot.py, jota isännöi GitHub
Vaihe 6: Kaukosäätimen ohjelmointi - Osa II
Jäljellä on vielä ohjelmoida toinen BBC: n mikro: bitti, joka toimii kaukosäätimenä.
Kaukosäädintä käytetään näyttämään 5 x 5 pikselin näytöllä suhteellinen etäisyys esteisiin. Enintään 10 pikseliä on päällä.
Samaan aikaan kaukosäädin antaa sinulle mahdollisuuden ohjata GiggleBotia painamalla sen kahta painiketta: siirtyä eteenpäin, vasemmalle ja oikealle.
Huomautus: Seuraavassa komentosarjassa saattaa olla tyhjiä välilyöntejä, ja tämä näyttää johtuvan jostakin ongelmasta GitHub Gistsin näyttämisessä. Napsauta ydintä viedäksesi sen GitHub-sivulle, jossa voit kopioida ja liittää koodin.
Kauko -ohjattava LIDAR -pohjainen GiggleBot - Etäkoodi
microbit -tuonnin lepotilasta, näyttö, button_a, button_b |
tuontirakenne |
tuoda radio |
tuoda matematiikkaa |
radio.on () |
rotate_steps = 10 |
rotate_span = 160# astetta |
rotate_step = rotate_span / rotate_steps |
max_distance = 50# senttimetreinä |
side_length_leds = 3 # mitattuna # pikselissä |
tutka = bytearray (rotate_steps) |
xar = bytearray (rotate_steps) |
yar = bytearray (rotate_steps) |
saved_xar = bytearray (rotate_steps) |
save_yar = bytearray (rotate_steps) |
moottorin nopeus = 50 |
Vaikka totta: |
tila = radio.recept_bytes_into (tutka) |
jos tila ei ole Ei mitään: |
# display.clear () |
c, val inenumerate (tutka): |
jos tutka [c] <= max_distance: |
# laske 2d -koordinaatit kullekin etäisyydelle |
kulma = kierrä_vaiheet / (kierrä_vaiheet -1) * kierrä_askel * c |
kulma += (180 kierrosta) /2.0 |
x_c = math.cos (kulma * math.pi /180,0) * tutka [c] |
y_c = math.sin (kulma * math.pi /180,0) * tutka [c] |
# skaalaa etäisyydet 5x5 mikrobitin näyttöön |
x_c = x_c * (sivupituus_ledit -1) / max_distance |
y_c = y_c * (sivun_pituus_leds +1) / max_distance |
# sijainnin koordinaatit |
x_c += (sivupituuden_ledit -1) |
y_c = (sivupituudet_1 +1) - y_c |
# kierros koordinoi tarkasti, mistä LEDit löytyvät |
jos x_c - math.floor (x_c) <0,5: |
x_c = matematiikka.kerros (x_c) |
muu: |
x_c = matematiikka (x_c) |
jos y_c - math.floor (y_c) <0,5: |
y_c = matematiikka.kerros (y_c) |
muu: |
y_c = matematiikan ceil (y_c) |
xar [c] = x_c |
vuosi [c] = y_c |
muu: |
xar [c] = 0 |
vuosi [c] = 0 |
display.clear () |
x, y inzip (xar, yar): |
display.set_pixel (x, y, 9) |
# print (lista (zip (xar, yar, tutka))) |
tilaA = painike_a.is_puristettu () |
stateB = button_b.is_pressed () |
jos tila A ja tila B: |
radio.send_bytes (ustruct.pack ('bb', motor_speed, motor_speed)) |
tulosta ('eteenpäin') |
jos tila A ja ei tila B: |
radio.send_bytes (ustruct.pack ('bb', motor_speed, -motor_speed)) |
tulosta ('vasen') |
jos ei tila A ja tila B: |
radio.send_bytes (ustruct.pack ('bb', -motor_speed, motor_speed)) |
tulosta ('oikea') |
ifnot stateA ja notB: |
radio.send_bytes (ustruct.pack ('bb', 0, 0)) |
tulosta ('stop') |
katso rawgigglebot_lidar_remote.py, jota isännöi GitHub
Vaihe 7: Etänäytön tulkinta
"loading =" laiska "ohjaa GiggleBotia, sinulla on seuraavat vaihtoehdot:
- Siirrä GiggleBotia eteenpäin painamalla painiketta A ja painiketta B.
- Pyöritä GiggleBot -painiketta vasemmalle painamalla painiketta A.
- Pyöritä GiggleBotia oikealle painamalla painiketta B.
Jos haluat nähdä, mihin suuntaan lähimmät esteet havaitaan, katso vain kaukosäätimen (kauko -ohjattava BBC -mikro: bitti, jota pidät) -näytöstä. Sinun pitäisi pystyä hallitsemaan GiggleBotia kaukaa katsomatta sitä.
Suositeltava:
Tee syötävä robotti Arduino Nanon avulla - Kultainen ruuvi: 5 vaihetta
Tee syötävä robotti Arduino Nanon avulla | Kultainen ruuvi: Tämän projektin idea tuli tyttäreltäni, hän haluaa robotin, ja tämä robotti voi avata suunsa niin, että se voi laittaa ruokaa suuhunsa. Joten etsin sisätiloissa saatavilla olevia asioita: pahvi, arduino nano, ultraäänianturi, servomoottori
Tee viileä vanha robotti uudelleen: 10 vaihetta (kuvilla)
Tee uusi viileä vanha robotti: Tapaa Arlan, hauska robotti, jolla on paljon persoonallisuutta. Hän asuu viidennen luokan luonnontieteellisessä luokkahuoneessa. Rakensin hänet koulun robottitiimin maskotiksi, hän on myös luokkahuoneen apulainen. Lapset haluavat nähdä tekniikan toimivan ja Arlan kävelee
Tasapainotusrobotti / 3 -pyöräinen robotti / STEM -robotti: 8 vaihetta
Tasapainotusrobotti / 3 -pyöräinen robotti / STEM -robotti: Olemme rakentaneet yhdistetyn tasapainotus- ja kolmipyörärobotin koulukäyttöön kouluissa ja koulujen jälkeen. Robotti perustuu Arduino Unoon, mukautettuun kilpeen (kaikki rakenteelliset tiedot toimitetaan), Li -ion -akkuun (kaikki
Voi -robotti: Arduino -robotti eksistentiaalisen kriisin kanssa: 6 vaihetta (kuvilla)
Voi -robotti: Arduino -robotti eksistentiaalisessa kriisissä: Tämä projekti perustuu animaatiosarjaan "Rick and Morty". Yhdessä jaksossa Rick tekee robotin, jonka ainoa tarkoitus on tuoda voita. Bruface -opiskelijoina (Brysselin teknillinen tiedekunta) meillä on tehtävä mecha
Rakenna hyvin pieni robotti: Tee maailman pienimmästä pyörillä varustettu robotti tarttumalla: 9 vaihetta (kuvilla)
Rakenna hyvin pieni robotti: Tee maailman pienimmästä pyörillä varustettu robotti tarttumalla: Rakenna 1/20 kuutiometrin robotti, jossa on tarttuja, joka voi poimia ja siirtää pieniä esineitä. Sitä ohjaa Picaxe -mikrokontrolleri. Uskon, että tällä hetkellä tämä voi olla maailman pienin pyörillä varustettu robotti, jossa on tarttuja. Se epäilemättä ch