Innholdsfortegnelse:
- Trinn 1: Nødvendige komponenter
- Trinn 2: Montering av roboten
- Trinn 3: Lag din egen labyrint - valgfritt
- Trinn 4: Sette opp miljøet
- Trinn 5: Programmering av GiggleBot - del I
- Trinn 6: Programmering av fjernkontrollen - Del II
- Trinn 7: Tolke fjernskjermen
Video: Lag en Lidar-guidet robot med GiggleBot: 8 trinn
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:23
I denne opplæringen får vi GiggleBot til å takle vanskelighetene med en labyrint.
Vi monterer en servo på GiggleBot som vi fester en avstandssensor på. Mens du kjører, skal servoen rotere frem og tilbake slik at avstandssensoren kan måle avstanden opp til hvert hinder. Dette fungerer omtrent som en LIDAR -sensor som vanligvis er mye dyrere.
På samme tid sender GiggleBot disse dataene til en ekstern BBC micro: bit som viser sin 5-til-5-matrise av lysdioder sin relative posisjon til hindringene.
Jobben din er å bare kunne navigere i GiggleBot ved å se på hva den viser på den andre BBC micro: bit. For å kontrollere GiggleBot brukes knappene på den eksterne BBC micro: bit.
Det høres gøy ut! La oss komme til det, skal vi?
Trinn 1: Nødvendige komponenter
Vi kommer til å trenge:
- En fniseBot.
- En batteripakke til BBC micro: bit. Den følger med en BBC micro: bit i pakken.
- x3 AA -batterier til GiggleBot.
- En Grove -kabel for å koble avstandssensoren til GiggleBot.
- Et servosett fra DexterIndustries.
- x3 BBC micro: bits. En for GiggleBot og en som ble brukt til å kontrollere roboten langt unna.
- En avstandssensor fra DexterIndustries.
Få GiggleBot -roboten til BBC micro: bit her!
Trinn 2: Montering av roboten
For å gjøre GiggleBot klar til å bli programmert, må vi montere den, selv om det ikke er så mye som trengs å gjøres.
Sett de 3 AA -batteriene inn i rommet under GiggleBot.
Monter servopakken. Til den roterende armen på servoen bruker du det siste hullet i den til å feste servoen på GiggleBots frontkontakter. Du kan bruke en skrue og/eller en ledning for å gjøre den mer stabil på sin plass. Eller du kan varme lim det på brettet. I mitt tilfelle brukte jeg en skrue og en kort ledning for å knytte servoarmen til GiggleBot -brettet.
Når du monterer servoarmen på servoen, må du kontrollere at servoen allerede er satt til posisjon 80. Du kan gjøre det ved å ringe gigglebot.set_servo (gigglebot. RIGHT, 80). Du kan lese mer om det her.
Plasser deretter avstandssensoren på forsiden av servopakken og fikser den som i eksemplet ovenfor.
Til slutt kobler du avstandssensoren med en Grove -kabel til en av de 2 I2C -portene og servomotoren til den høyre porten som sitter på GiggleBot - den riktige porten er nevnt på den.
Trinn 3: Lag din egen labyrint - valgfritt
I dette tilfellet har jeg brukt en haug med esker for å lage et spor med lukket sløyfe, som ligner på en NASCAR.
På dette trinnet kan du bli veldig kreativ og gjøre den så vridd du vil, eller gjøre den super lang fordi det virkelig er opp til deg.
Eller hvis du ikke vil ha et spor i det hele tatt, kan du for eksempel sette GiggleBot på et kjøkken eller en stue - det burde være godt nok fordi det er mange vegger og hindringer du fortsatt må unngå.
Trinn 4: Sette opp miljøet
For at du skal kunne programmere BBC micro: bit i MicroPython, må du sette opp en editor for den (Mu Editor) og angi GiggleBot MicroPython Runtime som kjøretid. For det må du følge instruksjonene på denne siden. Fra nå av brukes versjon v0.4.0 av kjøretiden.
Trinn 5: Programmering av GiggleBot - del I
La oss først sette opp GiggleBots skript. Dette skriptet får GiggleBot til å rotere servomotoren 160 grader (80 grader i hver retning), samtidig som den tar 10 avlesninger fra avstandssensoren per sving.
Når den er slått på, vil GiggleBot stå i berøring til den mottar en kommando fra fjernkontrollen. Det kan bare være tre kommandoer: gå fremover, til venstre eller til høyre.
Merk: Følgende skript kan mangle mellomrom, og dette ser ut til å skyldes et problem med visning av GitHub Gists. Klikk på essensen for å ta deg til GitHub-siden der du kan kopiere og lime inn koden.
Fjernstyrt LIDAR-basert GiggleBot
fra gigglebot import* |
fra distance_sensor import DistanceSensor |
fra mikrobit import søvn |
fra utime import ticks_us, sleep_us |
import ustruct |
importere radio |
# stopp roboten hvis den allerede beveger seg |
Stoppe() |
# aktiver radio |
radio.on () |
# avstandssensorobjekt |
ds = DistanceSensor () |
ds.start_continuous () |
rotere_tid = 0,7# målt i sekunder |
rotate_span = 160# målt i grader |
rotere_steg = 10 |
overhead_compensation = 1,05# definert i prosent |
time_per_step = 10 ** 6* rotate_time / (rotate_steps* overhead_compensation) |
last_read_time = 0 |
radar = bytearray (roter_steg) |
servo_rotate_direction = 0# 0 for å gå oppover (0-> 160) og 1 ellers |
radar_index = 0 |
set_servo (RIGHT, 0) |
whileTrue: |
# lest fra radaren |
if ticks_us () - last_read_time> time_per_step: |
# lest fra avstandssensoren |
radar [radar_index] = int (ds.read_range_continuous () /10) |
last_read_time = ticks_us () |
print (radar_index) |
# gjør logikken for å rotere servoen fra venstre til høyre |
hvis radar_index == rotate_steps -1og servo_rotate_direction == 0: |
set_servo (RIGHT, 0) |
servo_rotate_direction = 1 |
elif radar_index == 0og servo_rotate_direction == 1: |
set_servo (RIGHT, rotate_span) |
servo_rotate_direction = 0 |
ellers: |
radar_index += 1if servo_rotate_direction == 0else-1 |
# og send radarverdiene |
radio.send_bytes (radar) |
prøve: |
# les robotkommandoer |
lmotor, rmotor = ustruct.unpack ('bb', radio.receive_bytes ()) |
# og aktiver motorene hvis det er mottatte kommandoer |
set_speed (lmotor, rmotor) |
kjøre() |
exceptTypeError: |
sende |
vis rawgigglebot_lidar_robot.py hostet av ❤ av GitHub
Trinn 6: Programmering av fjernkontrollen - Del II
Det som gjenstår er å programmere den andre BBC micro: bit som fungerer som en fjernkontroll.
Fjernkontrollen brukes til å vise den relative avstanden til hindringer på sin 5-til-5-piksel laget skjerm. På det meste kommer det til å være 10 piksler slått på.
Samtidig gir fjernkontrollen deg mulighetene til å fjernstyre GiggleBot ved å trykke på de 2 knappene: gå fremover, til venstre og til høyre.
Merk: Følgende skript kan mangle mellomrom, og dette ser ut til å skyldes et problem med visning av GitHub Gists. Klikk på essensen for å ta deg til GitHub-siden der du kan kopiere og lime inn koden.
Fjernstyrt LIDAR -basert GiggleBot - ekstern kode
fra mikrobitimport, visning, knapp_a, knapp_b |
import ustruct |
importere radio |
import matematikk |
radio.on () |
rotere_steg = 10 |
rotate_span = 160# i grader |
rotate_step = rotate_span / rotate_steps |
maks_avstand = 50# i centimeter |
side_length_leds = 3 # målt i antall piksler |
radar = bytearray (roter_steg) |
xar = bytearray (roter_steg) |
yar = bytearray (roter_steg) |
save_xar = bytearray (roter_steg) |
save_yar = bytearray (roter_steg) |
motorhastighet = 50 |
whileTrue: |
status = radio.receive_bytes_into (radar) |
hvis status ikke er Ingen: |
# display.clear () |
for c, val inenumerate (radar): |
hvis radar [c] <= max_distance: |
# beregne 2d koordinater for hver avstand |
vinkel = rotere_ trinn / (rotere_ trinn -1) * rotere_ trinn * c |
vinkel += (180- rotate_span) /2.0 |
x_c = math.cos (vinkel * math.pi /180.0) * radar [c] |
y_c = math.sin (vinkel * math.pi /180.0) * radar [c] |
# skalere avstandene for å passe på 5x5 mikrobit -skjermen |
x_c = x_c * (side_length_leds -1) / max_distance |
y_c = y_c * (side_length_leds +1) / max_distance |
# flytt posisjoner |
x_c += (side_length_leds -1) |
y_c = (side_length_leds +1) - y_c |
# runde koordinater nøyaktig hvor lysdiodene er funnet |
hvis x_c - matte. gulv (x_c) <0,5: |
x_c = matematikk. gulv (x_c) |
ellers: |
x_c = matematikk.ceil (x_c) |
hvis y_c - matematikkgulv (y_c) <0,5: |
y_c = matematikk. etasje (y_c) |
ellers: |
y_c = matematikk.ceil (y_c) |
xar [c] = x_c |
yar [c] = y_c |
ellers: |
xar [c] = 0 |
yar [c] = 0 |
display.clear () |
for x, y inzip (xar, yar): |
display.set_pixel (x, y, 9) |
# print (liste (zip (xar, yar, radar))) |
stateA = button_a.is_pressed () |
stateB = button_b.is_pressed () |
hvis stateA og stateB: |
radio.send_bytes (ustruct.pack ('bb', motor_speed, motor_speed)) |
print ('fremover') |
hvis stateA og ikke stateB: |
radio.send_bytes (ustruct.pack ('bb', motor_speed, -motor_speed)) |
print ('venstre') |
ifnot stateA og stateB: |
radio.send_bytes (ustruct.pack ('bb', -motor_speed, motor_speed)) |
print ('høyre') |
ifnot stateA og ikke stateB: |
radio.send_bytes (ustruct.pack ('bb', 0, 0)) |
print ('stopp') |
vis rawgigglebot_lidar_remote.py hostet av ❤ av GitHub
Trinn 7: Tolke fjernskjermen
"loading =" lat "kontroller GiggleBot, du har følgende alternativer:
- Trykk på knapp A og B for å flytte GiggleBot fremover.
- Trykk på knapp A for å snurre GiggleBot til venstre.
- Trykk på knapp B for å snurre GiggleBot til høyre.
For å se i hvilken retning de nærmeste hindringene oppdages, bare se på fjernkontrollens (den eksterne BBC micro: bit som du holder) skjermen. Du bør kunne kontrollere GiggleBot langt unna uten å se på den.
Anbefalt:
Lag spise -robot med Arduino Nano - Gullskrue: 5 trinn
Lag spiserobot med Arduino Nano | Gullskrue: Ideen til dette prosjektet kom fra datteren min. Hun vil ha en robot, og denne roboten kan åpne munnen slik at den kan putte mat i munnen. Så jeg søkte innendørs etter ting som var tilgjengelige: papp, arduino nano, ultralydsensor, servomotor
Lag en dansende robot uten 3d -skriver og Arduino/#smartcreativity: 11 trinn (med bilder)
Lag en dansende robot uten 3d -skriver og Arduino/#smartcreativity: Hei venner, i denne opplæringen vil jeg vise deg hvordan du lager en dansende robot hjemme uten 3D -skriver og uten Arduino. Denne roboten er i stand til å danse, automatisk balansere, produsere musikk og gå. Og designet til Robot ser også så kult ut
GiggleBot Line -følger med Python: 5 trinn
GiggleBot Line Follower Using Python: Denne gangen programmerer vi i MicroPython Dexter Industries GiggleBot for å følge en svart linje ved hjelp av den innebygde linjefølgersensoren. GiggleBot må pares med en BBC micro: bit for at den skal kontrolleres på riktig måte.Hvis
Stationary Radar (LIDAR) Array med Arduino: 10 trinn (med bilder)
Stationary Radar (LIDAR) Array With Arduino: Da jeg skulle bygge en tofotet robot, tenkte jeg alltid på å ha en slags kul gadget som kan spore motstanderen min og gjøre angrepstrekk med den. Bunker med radar/lidar -prosjekter eksisterer allerede her. Imidlertid er det noen begrensninger for mitt formål
Bygg en veldig liten robot: Lag verdens minste hjulrobot med en gripe .: 9 trinn (med bilder)
Bygg en veldig liten robot: Lag verdens minste hjulrobot med en griper .: Bygg en 1/20 kubikk -tommers robot med en griper som kan plukke opp og flytte små gjenstander. Den styres av en Picaxe -mikrokontroller. På dette tidspunktet tror jeg at dette kan være verdens minste hjulrobot med en griper. Det vil uten tvil ch