Sisukord:

Tehke GidgleBotiga Lidari juhitav robot: 8 sammu
Tehke GidgleBotiga Lidari juhitav robot: 8 sammu

Video: Tehke GidgleBotiga Lidari juhitav robot: 8 sammu

Video: Tehke GidgleBotiga Lidari juhitav robot: 8 sammu
Video: TRAD.ATTACK! - Tehke ruumi! (Live 2022) 2024, November
Anonim
Tehke GidgleBotiga Lidari juhitav robot
Tehke GidgleBotiga Lidari juhitav robot
Tehke GidgleBotiga Lidari juhitav robot
Tehke GidgleBotiga Lidari juhitav robot
Tehke GidgleBotiga Lidari juhitav robot
Tehke GidgleBotiga Lidari juhitav robot

Selles õpetuses paneme GiggleBoti lahendama labürindi raskusi.

Paigaldame GiggleBotile servo, millele kinnitame kaugusanduri. Jooksmise ajal pöörleb servo edasi -tagasi, nii et kaugusandur saab mõõta kaugust iga takistuseni. See toimib palju nagu LIDAR -andur, mis on tavaliselt palju kallim.

Samal ajal saadab GiggleBot need andmed BBC kaugele mikro-bitile, mis kuvab oma 5x-5 LED-maatriksile selle suhtelise asukoha takistustega.

Teie ülesanne on GiggleBotis navigeerida ainult vaadates seda, mida see näitab teisel BBC mikro: bitil. GiggleBoti juhtimiseks kasutatakse kaugjuhtimispuldi BBC micro: bit nuppe.

See kõlab nagu lõbus! Läheme asja juurde, eks?

Samm: nõutavad komponendid

Nõutavad komponendid
Nõutavad komponendid

Meil läheb vaja:

  1. GiggleBot.
  2. Aku BBC mikro: bitile. Pakendis on kaasas BBC micro: bit.
  3. x3 AA patareid GiggleBoti jaoks.
  4. Grove kaabel kaugusanduri ühendamiseks GiggleBotiga.
  5. Servokomplekt firmalt DexterIndustries.
  6. x3 BBC mikro: bitid. Üks GiggleBotile ja teine roboti juhtimiseks kaugelt.
  7. Kaugusandur DexterIndustriesist.

Hankige GiggleBot robot BBC mikro: bitti jaoks siit!

Samm: roboti kokkupanek

Roboti kokkupanek
Roboti kokkupanek
Roboti kokkupanek
Roboti kokkupanek

Selleks, et GiggleBot oleks programmeerimiseks valmis, peame selle kokku panema, kuigi palju pole vaja teha.

Sisestage 3 AA patareid oma sahtlisse GiggleBoti all.

Pange servopakett kokku. Servo pöörleva õla külge kinnitage selle viimane auk servo kinnitamiseks GiggleBoti esipistikutele. Võite kasutada kruvi ja/või mõnda traati, et muuta see oma kohale stabiilsemaks. Või võite selle plaadile kuuma liimiga liimida. Minu puhul kasutasin servohoova GiggleBot plaadiga sidumiseks kruvi ja lühikest traati.

Servohoova servole paigaldamisel veenduge, et servo on juba asendisse 80 seatud. Seda saate teha, helistades gigglebot.set_servo (gigglebot. RIGHT, 80). Selle kohta saate rohkem lugeda siit.

Seejärel asetage kaugusandur servopaketi esiküljele ja kinnitage see nagu ülaltoodud näites.

Lõpuks ühendage kaugusandur Grove -kaabliga mis tahes kahest I2C -pordist ja servomootor GiggleBotil istuva parema pordiga - sellel on märgitud õige port.

3. samm: looge oma labürint - valikuline

Looge oma labürint - valikuline
Looge oma labürint - valikuline

Sel juhul olen kasutanud hunnikut karpe, et luua suletud ahelaga rada, mis on sarnane NASCAR -ile.

Selles etapis saate olla tõeliselt loominguline ja muuta see nii keerukaks kui soovite või muuta see ülipikaks, sest see on tõesti teie otsustada.

Või kui te ei soovi üldse rada, võite GiggleBoti panna näiteks kööki või elutuppa - see peaks olema piisavalt hea, sest seal on palju seinu ja takistusi, mida peate siiski vältima.

4. samm: keskkonna seadistamine

Keskkonna seadistamine
Keskkonna seadistamine

Selleks, et saaksite MicroPythonis programmeerida BBC mikro: bit, peate selle jaoks seadistama redaktori (Mu Editor) ja seadistama käitusajaks GiggleBot MicroPython Runtime. Selleks peate järgima sellel lehel olevaid juhiseid. Sellest hetkest alates kasutatakse käitusaja versiooni v0.4.0.

5. samm: GiggleBoti programmeerimine - I osa

Esiteks seadistame GiggleBoti skripti. See skript paneb GiggleBoti pöörama oma servomootorit 160 kraadi (80 kraadi kummaski suunas), võttes samal ajal kaugusandurilt 10 näitu ühe pöörde kohta.

Sisselülitamisel jääb GiggleBot ootele, kuni saab kaugjuhtimispuldilt käsu. Käske saab olla ainult 3: liikuda edasi, vasakule või paremale.

Märkus. Järgmisel skriptil võib olla tühikuid ja see näib olevat tingitud mõnest probleemist GitHubi esitusviiside kuvamisel. GitHubi lehele viimiseks klõpsake põhisisu, kus saate koodi kopeerida ja kleepida.

Kaugjuhtimisega LIDAR-põhine GiggleBot

gigglebot'i impordist*
from distance_sensor import DistanceSensor
mikrobittide importimise unerežiimist
alates utime import ticks_us, sleep_us
impordi ustruktuur
impordi raadio
# peatage robot, kui see juba liigub
peatus ()
# lubage raadio
raadio.on ()
# kaugusanduri objekt
ds = DistanceSensor ()
ds.start_continuous ()
rotate_time = 0.7# sekundites
rotate_span = 160# mõõdetakse kraadides
rotate_steps = 10
overhead_compensation = 1.05# määratletud protsentides
time_per_step = 10 ** 6* rotate_time / (rotate_steps* overhead_compensation)
last_read_time = 0
radar = baarplaat (pöörlevad sammud)
servo_rotate_direction = 0# 0 ülespoole liikumiseks (0-> 160) ja 1 muidu
radar_indeks = 0
set_servo (PAREM, 0)
Kuigi tõsi:
# loe radarilt
if ticks_us () - last_read_time> time_per_step:
# loe kaugusandurilt
radar [radari_indeks] = int (ds.read_range_continuous () /10)
last_read_time = ticks_us ()
print (radar_index)
# tehke servo vasakult paremale pööramise loogika
kui radari_indeks == pööramise sammud -1 ja servo_pöörde suund == 0:
set_servo (PAREM, 0)
servo_rotate_direction = 1
elif radar_index == 0ja servo_rotate_direction == 1:
set_servo (RIGHT, rotate_span)
servo_rotate_direction = 0
muidu:
radar_index += 1f servo_rotate_direction == 0else-1
# ja saatke radari väärtused
radio.send_bytes (radar)
proovige:
# loe robotikäsklusi
lmotor, rmotor = ustruct.unpack ('bb', radio.recept_bytes ())
# ja käivitage mootorid, kui vastu tuleb käske
set_speed (lmotor, rmotor)
sõitma ()
Välja arvatudTüüpViga:
üle andma

vaata rawgigglebot_lidar_robot.py, mille hostiks on GitHub ❤

6. samm: kaugjuhtimispuldi programmeerimine - II osa

Jääb tegemata programmeerida BBC teine mikro: bit, mis toimib kaugjuhtimispuldina.

Kaugjuhtimispulti kasutatakse oma 5x5 pikslite ekraanil suhtelise kauguse kuvamiseks takistustest. Maksimaalselt lülitatakse sisse 10 pikslit.

Samal ajal annab kaugjuhtimispult teile võimaluse GiggleBoti kaugjuhtimiseks, vajutades selle kahte nuppu: liikuge edasi, vasakule ja paremale.

Märkus. Järgmisel skriptil võib olla tühikuid ja see näib olevat tingitud mõnest probleemist GitHubi esitusviiside kuvamisel. GitHubi lehele viimiseks klõpsake põhisisu, kus saate koodi kopeerida ja kleepida.

Kaugjuhtimisega LIDAR -põhine GiggleBot - kaugkood

mikrobitist impordi unerežiim, ekraan, nupp_a, nupp_b
impordi ustruktuur
impordi raadio
importida matemaatikat
raadio.on ()
rotate_steps = 10
rotate_span = 160# kraadi
rotate_step = rotate_span / rotate_steps
max_kaugus = 50# sentimeetrites
side_length_leds = 3 #, mõõdetuna # pikslites
radar = baarplaat (pöörlevad sammud)
xar = bytearray (rotate_steps)
yar = bytearray (rotate_steps)
salvestatud_xar = baarimass (pööramise sammud)
salvestatud_aasta = bytearray (rotate_steps)
mootori kiirus = 50
Kuigi tõsi:
staatus = raadio.recept_bytes_into (radar)
kui olek ei ole Puudub:
# display.clear ()
c, val loenduseta (radar):
kui radar [c] <= max_distance:
# arvutage iga vahemaa 2d koordinaadid
nurk = pööramise sammud / (pööramise sammud -1) * pööramise samm * c
nurk += (180- pööramispiir) /2.0
x_c = math.cos (nurk * math.pi /180,0) * radar [c]
y_c = matemaatika.sin (nurk * matemaatika.pi /180.0) * radar [c]
# skaleerige vahemaad 5x5 mikrobitisele ekraanile
x_c = x_c * (küljepikkuse_katted -1) / max_kaugus
y_c = y_c * (küljepikkuse_katted +1) / max_kaugus
# ümberpaigutamise koordinaadid
x_c += (küljepikkuse_katted -1)
y_c = (küljepikkuse_katted +1) - y_c
# vooru koordineerib täpselt, kus LED -id asuvad
kui x_c - matemaatika.põrand (x_c) <0,5:
x_c = matemaatika.põrand (x_c)
muidu:
x_c = matemaatika. ceil (x_c)
kui y_c - matemaatika.põrand (y_c) <0,5:
y_c = matemaatika.põrand (y_c)
muidu:
y_c = matemaatika. ceil (y_c)
xar [c] = x_c
aasta [c] = y_c
muidu:
xar [c] = 0
aasta [c] = 0
display.clear ()
x, y inzip jaoks (xar, yar):
display.set_pixel (x, y, 9)
# print (nimekiri (zip (xar, yar, radar)))
stateA = button_a.is_pressed ()
olekB = nupp_b.is_pressitud ()
kui olek A ja olek B:
radio.send_bytes (ustruct.pack ('bb', mootorikiirus, mootorikiirus))
print ('edasi')
kui olek A ja mitte olek B:
radio.send_bytes (ustruct.pack ('bb', motor_speed, -motor_speed))
trükk ('vasak')
kui mitte olek A ja olek B:
radio.send_bytes (ustruct.pack ('bb', -motor_speed, motor_speed))
prindi ('õige')
ifnot stateA ja not stateB:
radio.send_bytes (ustruct.pack ('bb', 0, 0))
print ("stop")

vaata rawgigglebot_lidar_remote.py, mille hostiks on GitHub ❤

Samm 7: Kaugkuva tõlgendamine

"loading =" laisk "juhib GiggleBot'i, teil on järgmised valikud:

  1. GiggleBoti edasiliikumiseks vajutage nuppe A ja nuppu B.
  2. Vajutage nuppu A, et pöörata GiggleBot vasakule.
  3. Vajutage nuppu B, et GiggleBot paremale pöörata.

Et näha, millises suunas lähimad takistused tuvastatakse, vaadake lihtsalt kaugjuhtimispuldi (BBC mikro: bit, mida hoiate) ekraani. Peaksite saama GiggleBot'i kaugelt juhtida ilma seda vaatamata.

Soovitan: