Indholdsfortegnelse:
- Trin 1: Påkrævede komponenter
- Trin 2: Montering af robotten
- Trin 3: Opret din egen labyrint - valgfri
- Trin 4: Opsætning af miljøet
- Trin 5: Programmering af GiggleBot - del I
- Trin 6: Programmering af fjernbetjeningen - Del II
- Trin 7: Fortolkning af fjernskærmen
Video: Lav en Lidar-guidet robot med GiggleBot: 8 trin
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:28
I denne vejledning får vi GiggleBot til at tackle vanskelighederne ved en labyrint.
Vi monterer en servo på GiggleBot, hvorpå vi fastgør en afstandssensor. Under kørslen vil servoen rotere frem og tilbage, så afstandssensoren kan måle afstanden op til hver forhindring. Dette fungerer meget som en LIDAR -sensor, som normalt er meget dyrere.
På samme tid sender GiggleBot disse data til en fjern BBC-mikro: bit, der viser sin 5-til-5 matrix af LED'er sin relative position til forhindringerne.
Dit job er kun at kunne navigere i GiggleBot ved at se på, hvad det er vist på den anden BBC micro: bit. For at styre GiggleBot bruges knapperne på den eksterne BBC micro: bit.
Det lyder sjovt! Lad os komme til det, skal vi?
Trin 1: Påkrævede komponenter
Vi får brug for:
- En fniseBot.
- En batteripakke til BBC micro: bit. Det følger med en BBC micro: bit i sin pakke.
- x3 AA -batterier til GiggleBot.
- Et Grove -kabel til at forbinde afstandssensoren til GiggleBot.
- Et servokit fra DexterIndustries.
- x3 BBC micro: bits. En til GiggleBot og en, der bruges til at styre robotten langt væk.
- En afstandssensor fra DexterIndustries.
Få GiggleBot -robotten til BBC micro: bit her!
Trin 2: Montering af robotten
For at gøre GiggleBot klar til at blive programmeret, skal vi samle den, selvom der ikke er meget brug for at gøre.
Indsæt de 3 AA -batterier i dets rum under GiggleBot.
Saml servopakken. Til den roterende arm på servoen skal du bruge det sidste hul i den til at fastgøre servoen på GiggleBots forreste stik. Du kan bruge en skrue og/eller en ledning til at gøre den mere stabil på sin plads. Eller du kan varmt lime det til brættet. I mit tilfælde brugte jeg en skrue og en kort ledning til at binde servoarmen til GiggleBot -kortet.
Når servoarmen monteres på servoen, skal du sørge for, at servoen allerede er indstillet til position 80. Det kan du gøre ved at ringe til gigglebot.set_servo (gigglebot. RIGHT, 80). Det kan du læse mere om her.
Placer derefter afstandssensoren på forsiden af servopakken og fix den som i ovenstående eksempel.
Tilslut til sidst afstandssensoren med et Grove -kabel til en af de 2 I2C -porte og servomotoren til den højre port, der sidder på GiggleBot - den rigtige port er nævnt på den.
Trin 3: Opret din egen labyrint - valgfri
I dette tilfælde har jeg brugt en masse kasser til at oprette et spor med lukket kredsløb, der ligner en NASCAR.
På dette trin kan du blive virkelig kreativ og gøre det, hvor snoet du vil, eller gøre det super langt, fordi det virkelig er op til dig.
Eller hvis du slet ikke vil have et spor, kan du f.eks. Sætte GiggleBot i et køkken eller en stue - det burde være godt nok, fordi der er masser af vægge og forhindringer, du stadig skal undgå.
Trin 4: Opsætning af miljøet
For at du skal kunne programmere BBC micro: bit i MicroPython, skal du oprette en editor til den (Mu Editor) og indstille GiggleBot MicroPython Runtime som dens runtime. Til det skal du følge instruktionerne på denne side. Fra dette øjeblik bruges version v0.4.0 af runtime.
Trin 5: Programmering af GiggleBot - del I
Lad os først konfigurere GiggleBots script. Dette script vil få GiggleBot til at rotere sin servomotor 160 grader (80 grader i hver retning), samtidig med at den tager 10 aflæsninger fra afstandssensoren pr. Tur.
Når den er tændt, vil GiggleBot stå ved, indtil den modtager en kommando fra fjernbetjeningen. Der kan kun være 3 kommandoer: gå fremad, til venstre eller til højre.
Bemærk: Følgende script mangler muligvis mellemrum, og det ser ud til at skyldes et problem med visning af GitHub Gists. Klik på kernen for at tage dig til dens GitHub-side, hvor du kan kopiere og indsætte koden.
Fjernstyret LIDAR-baseret 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 |
# stop robotten, hvis den allerede bevæger sig |
hold op() |
# aktiver radio |
radio.on () |
# afstandssensorobjekt |
ds = DistanceSensor () |
ds.start_continuous () |
rotate_time = 0,7# målt i sekunder |
rotate_span = 160# målt i grader |
rotate_steps = 10 |
overhead_compensation = 1,05# defineret i procent |
time_per_step = 10 ** 6* rotate_time / (rotate_steps* overhead_compensation) |
last_read_time = 0 |
radar = bytearray (rotate_steps) |
servo_rotate_direction = 0# 0 for at gå opad (0-> 160) og 1 ellers |
radar_index = 0 |
set_servo (HØJRE, 0) |
whileTrue: |
# læst fra radaren |
hvis ticks_us () - last_read_time> time_per_step: |
# læst fra afstandssensoren |
radar [radar_index] = int (ds.read_range_continuous () /10) |
last_read_time = ticks_us () |
print (radar_index) |
# gør logikken for at rotere servoen fra venstre til højre |
hvis radar_index == rotate_steps -1og servo_rotate_direction == 0: |
set_servo (HØJRE, 0) |
servo_rotate_direction = 1 |
elif radar_index == 0og servo_rotate_direction == 1: |
set_servo (HØJRE, roter_span) |
servo_rotate_direction = 0 |
andet: |
radar_index += 1if servo_rotate_direction == 0else-1 |
# og send radarværdierne |
radio.send_bytes (radar) |
prøve: |
# læs robotkommandoer |
lmotor, rmotor = ustruct.unpack ('bb', radio.receive_bytes ()) |
# og aktiver motorerne, hvis der er modtagne kommandoer |
set_speed (lmotor, rmotor) |
køre() |
exceptTypeError: |
passere |
se rawgigglebot_lidar_robot.py hostet af ❤ af GitHub
Trin 6: Programmering af fjernbetjeningen - Del II
Det, der skal gøres, er at programmere den 2. BBC micro: bit, der fungerer som en fjernbetjening.
Fjernbetjeningen bruges til at vise den 5 x 5 pixel fremstillede skærm den relative afstand til forhindringer. Højst vil der være tændt 10 pixels.
På samme tid giver fjernbetjeningen dig mulighed for at fjernbetjene GiggleBot ved at trykke på dens 2 knapper: gå fremad, til venstre og til højre.
Bemærk: Følgende script mangler muligvis mellemrum, og det ser ud til at skyldes et problem med visning af GitHub Gists. Klik på kernen for at tage dig til dens GitHub-side, hvor du kan kopiere og indsætte koden.
Fjernstyret LIDAR -baseret GiggleBot - Fjernkode
fra mikrobit import sleep, display, button_a, button_b |
import ustruct |
importere radio |
import matematik |
radio.on () |
rotate_steps = 10 |
rotate_span = 160# i grader |
rotate_step = rotate_span / rotate_steps |
max_distance = 50# i centimeter |
side_length_leds = 3 # målt i antallet af pixels |
radar = bytearray (rotate_steps) |
xar = bytearray (rotate_steps) |
yar = bytearray (rotate_steps) |
save_xar = bytearray (rotate_steps) |
save_yar = bytearray (rotate_steps) |
motorhastighed = 50 |
whileTrue: |
status = radio.receive_bytes_into (radar) |
hvis status ikke er Ingen: |
# display.clear () |
for c, val optælling (radar): |
hvis radar [c] <= max_distance: |
# beregne 2d koordinater for hver afstand |
vinkel = rotere_trin / (rotere_trin -1) * rotere_trin * 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 afstandene, så de passer på 5x5 mikrobit -skærmen |
x_c = x_c * (side_length_leds -1) / max_distance |
y_c = y_c * (side_length_leds +1) / max_distance |
# ompositioneringskoordinater |
x_c += (side_length_leds -1) |
y_c = (side_length_leds +1) - y_c |
# runde koordinater præcis, hvor lysdioderne findes |
hvis x_c - matematikgulv (x_c) <0,5: |
x_c = matematik. gulv (x_c) |
andet: |
x_c = matematik.ceil (x_c) |
hvis y_c - matematikgulv (y_c) <0,5: |
y_c = matematik.gulv (y_c) |
andet: |
y_c = matematik.ceil (y_c) |
xar [c] = x_c |
yar [c] = y_c |
andet: |
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_hastighed, motor_hastighed)) |
print ('frem') |
hvis stateA og ikke tilstand B: |
radio.send_bytes (ustruct.pack ('bb', motor_hastighed, -motor_hastighed)) |
print ('venstre') |
ifnot stateA og stateB: |
radio.send_bytes (ustruct.pack ('bb', -motor_speed, motor_speed)) |
print ('højre') |
ifnot stateA og ikke stateB: |
radio.send_bytes (ustruct.pack ('bb', 0, 0)) |
print ('stop') |
se rawgigglebot_lidar_remote.py hostet af ❤ af GitHub
Trin 7: Fortolkning af fjernskærmen
"loading =" doven "styr GiggleBot, du har følgende muligheder:
- Tryk på knap A og knap B for at flytte GiggleBot fremad.
- Tryk på knappen A for at dreje GiggleBot til venstre.
- Tryk på knap B for at dreje GiggleBot til højre.
For at se i hvilken retning de nærmeste forhindringer opdages, skal du bare kigge på fjernbetjeningens (fjernbetjening BBC micro: bit, som du holder) skærm. Du burde kunne styre GiggleBot langt væk uden at se på det.
Anbefalede:
Lav spise -robot med Arduino Nano - Guldskrue: 5 trin
Lav spise -robot med Arduino Nano | Guldskrue: Ideen til dette projekt kom fra min datter. Hun vil have en robot, og denne robot kan åbne munden, så den kan putte mad i munden. Så jeg søgte indendørs efter ting, der var tilgængelige: pap, arduino nano, ultralydssensor, servomotor
Lav en dansende robot uden 3d -printer og Arduino/#smartcreativity: 11 trin (med billeder)
Lav en dansende robot uden 3d -printer og Arduino/#smartcreativity: Hej venner, i denne vejledning vil jeg vise dig, hvordan du laver en dansende robot derhjemme uden 3D -printer og uden Arduino. Denne robot er i stand til at danse, automatisk balancere, producere musik og gå. Og designet af Robot ser også så cool ud
Lav Bluetooth -kontrolleret robot med din egen GUI: 5 trin
Lav Bluetooth -kontrolleret robot med din egen GUI: Hej venner efter at have udført et håndværksprojekt i dag, jeg kom her med et sejt arduino -projekt. Det ser gammelt koncept ud eksternt, men vent fyre, jeg har et twist her, hvilket gør dette projekt unikt. Så hvad er unikt her? Så her vil jeg vise dig
Stationær radar (LIDAR) Array med Arduino: 10 trin (med billeder)
Stationær radar (LIDAR) Array med Arduino: Da jeg byggede en tobenet robot, tænkte jeg altid på at have en slags cool gadget, der kan spore min modstander og lave angrebstræk med den. Bunker af radar/lidar -projekter findes allerede her. Der er dog nogle begrænsninger for mit formål
Byg en meget lille robot: Lav verdens mindste hjulrobot med et greb .: 9 trin (med billeder)
Byg en meget lille robot: Lav verdens mindste hjulrobot med et griber .: Byg en 1/20 kubik tommer robot med en griber, der kan opfange og flytte små genstande. Den styres af en Picaxe -mikrokontroller. På dette tidspunkt tror jeg, at dette kan være verdens mindste robot på hjul med en griber. Det vil uden tvivl ch