Sisukord:
- Samm: nõutavad komponendid
- 2. samm: lugude ja keskkonna seadistamine
- Samm: seadistage GiggleBot
- 4. samm: tuuneri seadistamine (kaugjuhtimispult)
- Samm: GiggleBoti häälestamine
- 6. toiming: GiggleBot töötab, kui NeoPixels on välja lülitatud
- Samm 7: GiggleBot töötab, kui neopikslid on sisse lülitatud
Video: GiggleBot Line'i jälgija häälestamine - täiustatud: 7 sammu
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:48
Selles väga lühikeses juhendis häälestate oma GiggleBoti musta joone järgi. Selles teises õpetuses GiggleBot Line Follower kodeerisime häälestusväärtused kõvasti selle stsenaariumi järgi töötamiseks. Võib -olla soovite muuta selle paremaks käitumiseks, pakkudes muud kasu.
Selles õpetuses näitame teile kahte skripti, mida saab mõlemad laadida erinevatele BBC mikro: bitidele, nii et üks neist pannakse GiggleBot'i ja teisega kasutatakse kahte nuppu menüü läbimiseks ja erinevate häälestamiseks. parameetrid. Nende uuendatud parameetrite saatmine toimub raadio kaudu.
Samm: nõutavad komponendid
Teil on vaja järgmist:
- GiggleBot robot micro: bitile.
- x3 AA patareid
- x2 BBC mikro: bitid - üks GiggleBoti jaoks ja teine parameetrite häälestamiseks kaugjuhtimispult.
- Aku BBC micro: bitile - nagu see, mis kuulub BBC micro: bit paketti.
Hankige GiggleBot Robot BBC mikro: bitile siit
2. samm: lugude ja keskkonna seadistamine
Samuti peate oma rajad tegelikult üles ehitama (alla laadima, printima, lõikama ja lindistama) ning seejärel seadistama keskkonna (IDE ja käitusaeg).
Kuna see õpetus on väga seotud selle teise õpetusega pealkirjaga GiggleBot Line Follower, minge sinna ja järgige samme 2 ja 3 ning tulge siis siia tagasi.
IDE puhul saate kasutada Mu -redaktorit ja käitusaja jaoks peate alla laadima GiggleBot MicroPython Runtime. Käitusaja saab alla laadida selle dokumentatsioonist siit. Minge dokumentatsiooni peatükki Alustamine ja järgige neid keskkonna seadistamise juhiseid. Sellest hetkest alates kasutatakse käitusaja versiooni v0.4.0.
Samm: seadistage GiggleBot
Enne GiggleBoti käitusaja vilkumist veenduge, et olete valinud GiggleBoti jaoks soovitud kiiruse ja värskendamiskiiruse: vaikimisi on kiiruseks seatud 100 (baaskiiruse muutuja) ja värskendussageduseks 70 (muutuja update_rate).
Praegust juurutamist arvestades on suurim saavutatav värskendussagedus 70 ja kui run_neopixels on seatud väärtusele True, on saavutatav ainult 50. Nii et mõnes mõttes võiks öelda, et uuenduste vaikeväärtus on täpselt selle serva ees, mida BBC micro: bit suudab teha.
Lihtsalt teadmiseks võib joone jälgija andur uuendusi tagastada 100 korda sekundis.
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.
GiggleBot PID Line jälgija tuuner (selle häälestamiseks on vaja kaugjuhtimispulti) - xjfls23
mikrobitite impordist* |
gigglebot'i impordist* |
utime impordist sleep_ms, ticks_us |
impordi raadio |
impordi ustruktuur |
# lähtestage raadio ja GB neopikslid |
raadio.on () |
neo = init () |
# ajastus |
update_rate = 70 |
# vaikimisi võimendusväärtused |
Kp = 0,0 |
Ki = 0,0 |
Kd = 0,0 |
seadeväärtus = 0,5 |
päästiku_punkt = 0,0 |
min_kiiruse_protsent = 0,2 |
baaskiirus = 100 |
viimane_asend = seadeväärtus |
integraal = 0,0 |
run_neopixels = Vale |
center_pixel = 5# kus naeratuse keskne piksel asub GB -l |
# türkiissinine = tuple (kaart (lambda x: int (x / 5), (64, 224, 208))) # värv, mida kasutatakse vea joonistamiseks neopikslitega |
# türkiis = (12, 44, 41) # mis on täpselt ülaltoodud türkiissinine |
error_width_per_pixel = 0,5/3# max viga jagatud segmentide arvuga iga neopikseli vahel |
defupper_bound_linear_speed_reducer (abs_error, trigger_point, ülemine_bound, väikseim_mootori võimsus, kõrgeim_mootori_võimsus): |
globaalne baaskiirus |
kui abs_error> = trigger_point: |
# x0 = 0,0 |
# y0 = 0,0 |
# x1 = ülemine_piir - päästiku_punkt |
# y1 = 1,0 |
# x = abs_error - trigger_point |
# y = y0 + (x - x0) * (y1 - y0) / (x1 - x0) |
# sama nagu |
y = (abs_error - trigger_point) / (ülemine_piir - trigger_point) |
mootori_võimsus = baaskiirus * (väikseim_mootori_võimsus + (1 -a) * (suurim_mootori_võimsus - väikseim_mootori_võimsus)) |
tagastada mootor_võimsus |
muidu: |
tagastage baaskiirus * suurim_mootori_võimsus |
joosta = vale |
eelmine_viga = 0 |
kokku_aeg = 0,0 |
kokku_arv = 0 |
Kuigi tõsi: |
# kui vajutate nuppu a, alustage järgimist |
kui button_a.is_pressed (): |
joosta = Tõsi |
# aga kui nuppu b vajutatakse, peatage joone järgija |
kui button_b.is_pressed (): |
joosta = vale |
integraal = 0,0 |
eelmine_viga = 0,0 |
display.scroll ('{} - {}'. vorming (kokku_aeg, kokku_arv), viivitus = 100, oota = vale) |
kokku_aeg = 0,0 |
kokku_arv = 0 |
pixels_off () |
peatus () |
uni_ms (500) |
kui run isTrue: |
# loe liiniandureid |
algus_aeg = puugid_ (() |
# kontrollige, kas oleme uuendanud Kp/Kd võimendusi kaugjuhtimispuldiga |
proovige: |
Kp, Ki, Kd, trigger_point, min_speed_percent = ustruct.unpack ('fffff', radio.recept_bytes ()) |
set_eyes () |
Välja arvatudTüüpViga: |
üle andma |
parem, vasak = lugemisandur (LINE_SENSOR, MÕLEM) |
# rida on vasakul, kui positsioon <0,5 |
# rida on paremal, kui positsioon> 0,5 |
# rida on keskel, kui positsioon = 0,5 |
# see on kaalutud keskmine aritmeetiline |
proovige: |
asend = parem /ujuk (vasak + parem) |
välja arvatud ZeroDivisionError: |
positsioon = 0,5 |
kui positsioon == 0: positsioon = 0,001 |
kui positsioon == 1: positsioon = 0,999 |
# kasutage PD -kontrollerit |
viga = asukoht - seadeväärtus |
integraal += viga |
parandus = Kp * viga + Ki * integraal + Kd * (viga - eelmine_viga) |
eelmine_viga = viga |
# arvutage mootori kiirused |
mootorikiirus = ülemine_piiratud_jooneline_kiiruse vähendaja (abs (viga), seadeväärtus * käivituspunkt, seadepunkt, minikiiruse protsent, 1.0) |
leftMotorSpeed = mootorikiirus + parandus |
rightMotorSpeed = mootor_kiirus - parandus |
# süttige neopikslid, et näidata, mis suunas GiggleBot peab liikuma |
kui run_neopixels isTrueand total_counts %3 == 0: |
i inb '\ x00 / x01 / x02 / x03 / x04 / x05 / x06 / x07 / x08': |
neo = (0, 0, 0) |
i inb '\ x00 / x01 / x02 / x03' jaoks: |
ifabs (viga)> error_width_per_pixel * i: |
kui viga <0: |
neo [center_pixel + i] = (12, 44, 41) |
muidu: |
neo [center_pixel - i] = (12, 44, 41) |
muidu: |
protsent = 1- (error_width_per_pixel * i -abs (error)) / error_width_per_pixel |
# süttib praegune piksel |
kui viga <0: |
# neo [center_pixel + i] = tuple (kaart (lambda x: int (x * protsent), türkiissinine)) |
neo [center_pixel + i] = (int (12* protsenti), int (44* protsenti), int (41* protsenti)) |
muidu: |
# neo [center_pixel - i] = tuple (kaart (lambda x: int (x * protsent), türkiissinine)) |
neo [keskpiksel - i] = (int (12* protsenti), int (44* protsenti), int (41* protsenti)) |
murda |
neo.show () |
proovige: |
# klammerda mootorid |
kui vasakuleMotorSpeed> 100: |
leftMotorSpeed = 100 |
rightMotorSpeed = rightMotorSpeed - leftMotorSpeed +100 |
kui õigeMotorSpeed> 100: |
rightMotorSpeed = 100 |
leftMotorSpeed = leftMotorSpeed - rightMotorSpeed +100 |
kui vasakule Mootorikiirus <-100: |
leftMotorSpeed = -100 |
kui õigeMotorSpeed <-100: |
rightMotorSpeed = -100 |
# käivitage mootorid |
set_speed (leftMotorSpeed, rightMotorSpeed) |
sõitma () |
# print ((viga, mootori kiirus)) |
välja arvatud: |
# juhuks, kui satume mõne parandamatu probleemi juurde |
üle andma |
# ja säilitage silmuse sagedus |
end_time = ticks_us () |
delay_diff = (lõpuaeg - algusaeg) /1000 |
kokku_aeg += viivitusdif |
kokku_arv += 1 |
if1.0/ update_rate - delay_diff> 0: |
unerežiim (1.0/ update_rate - delay_diff) |
vaata rawgigglebot_line_follower_tuner.py, mille hostiks on GitHub ❤
4. samm: tuuneri seadistamine (kaugjuhtimispult)
Järgmine asi, mida peame tegema, on käivitada tööaeg + skript teisele BBC mikro: bitile. See teine mikro: bit toimib GiggleBoti kaugjuhtimispuldina, mida kasutatakse järgmiste parameetrite häälestamiseks:
- Kp = proportsionaalne võimendus PID -regulaatori jaoks.
- Ki = PID -regulaatori lahutamatu võimendus.
- Kd = PID -regulaatori tuletisvõimendus.
- trigger_point = GiggleBoti minimaalse ja maksimaalse kiiruse vaheline protsentides väljendatud punkt, kus kiirus hakkab lineaarselt vähenema, kuni saavutab minimaalse kiiruse.
- min_speed_percent = minimaalne kiirus protsentides maksimaalsest kiirusest.
Ülejäänud kaks ülejäänud muutujat, mida saab häälestada, on GiggleBoti skriptis otse kõvasti kodeeritud: update_rate ja base_speed, mis tähistab maksimaalset kiirust. Nagu dokumentatsioonis kirjeldatud, on GiggleBoti jaoks seadistatav maksimaalne kiirus 100, mis on ka meie GiggleBoti vaikeväärtus.
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.
GiggleBot kaugjuhtimispuldi jälgija tuuner (vajab teist osa) - xjfls23
mikrobitite impordist* |
utime impordist sleep_ms |
impordi raadio |
impordi ustruktuur |
# Esimene element on Kp võimendus |
# Teine element on Ki võimendus |
# Kolmas element on Kd võimendus |
# Neljas element on käivituspunkt mootorite kiiruse vähendamiseks (0 -> 1) |
Viies element on mootorite minimaalne kiirus protsentides (0 -> 1) |
kasu = [0,0, 0,0, 0,0, 1,0, 0,0] |
stepSize = 0,1 |
# 0 ja 1 esimese elemendi jaoks |
# 2 ja 3 teise elemendi jaoks |
currentSetting = 0 |
defshowMenu (): |
display.scroll ('{} - {}'. formaat (currentSetting, kasu [int (currentSetting /2)]), delay = 100, wait = False) |
raadio.on () |
showMenu () |
Kuigi tõsi: |
uuendatud = vale |
kui button_a.is_pressed (): |
currentSetting = (currentSetting +1) % (2*5) |
uuendatud = tõsi |
kui button_b.is_pressed (): |
if currentSetting %2 == 0: |
# võimenduse suurendamine praegusel seadistamisel on 0 või 2 või.. |
ifint (currentSetting /2) jaotises [0, 2]: |
kasu [int (currentSetting /2)] += 10* stepSize |
muidu: |
kasu [int (currentSetting /2)] += stepSize |
muidu: |
# suurendage voolu, kui seade on 1 või 3 või.. |
ifint (currentSetting /2) jaotises [0, 2]: |
kasu [int (currentSetting /2)] -= 10* stepSize |
muidu: |
kasumid [int (currentSetting /2)] -= stepSize |
radio.send_bytes (ustruct.pack ('fffff', *kasu)) |
uuendatud = Tõsi |
kui uuendatud: |
showMenu () |
uni_ms (200) |
vaata rawgigglebot_line_follower_configurator.py, mille hostiks on GitHub ❤
Samm: GiggleBoti häälestamine
Asetage GiggleBot rajale, lülitage see sisse ja laske sellel töötada. Vahepeal peate selle pidevalt rajale tagasi panema ja võimendusi/parameetreid häälestama teise BBC mikro: bitiga, mida hoiate käes.
GiggleBoti käivitamiseks vajutage GiggleBoti BBC mikro: bitil nuppu A, selle peatamiseks ja oleku lähtestamiseks vajutage nuppu B.
Kaug -BBC BBC bit: nupu A vajutamine viib teid läbi kõik selle menüü suvandid ja nupp B suurendab/vähendab vastavat väärtust. See on nagu kella seadmine vana auto armatuurlauale. Valikud on järgmised:
- 0-1 võimalust on Kp võimenduseks.
- Ki võimenduseks on 2-3 võimalust.
- Kd võimenduseks on 4-5 võimalust.
- 6-7 valikut on etteantud hetke seadmiseks hetkeks, mil mootorid hakkavad aeglustuma.
- Minimaalse kiiruse seadmiseks on 8-9 valikut.
Pidage meeles, et paarisarvud menüüs on mõeldud vastavate väärtuste suurendamiseks ja paaritute puhul on see täpselt vastupidine.
Samuti näete GiggleBoti BBC mikro: bitil nuppu B vajutades oma Neopixel -ekraanil viimasest lähtestamisest möödunud millisekundite arvu ja robotite läbitud tsüklite arvu - nende 2 abil saate arvutada roboti värskendamise määr.
Lõpuks ja mis kõige tähtsam, olen välja pakkunud 2 häälestust GiggleBotile. Üks neist on mõeldud siis, kui Neopixeli LED -id on välja lülitatud, ja teine, kui see on teisiti. Neopixeli valgusdioode kasutatakse selleks, et näidata, mis suunas viga on kogunenud.
1. parameetrite häälestamise komplekt (kui NeoPixeli LED -id on välja lülitatud)
- Kp = 32,0
- Ki = 0,5
- Kd = 80,0
- trigger_setpoint = 0,3 (mis on 30%)
- min_kiiruse_protsent = 0,2 (mis on 20%)
- baaskiirus = 100 (ehk maksimaalne kiirus)
- update_rate = 70 (töötab @70Hz)
Teine parameetrite häälestamise komplekt (kui NeoPixeli LED -id põlevad)
- Kp = 25,0
- Ki = 0,5
- Kd = 35,0
- trigger_setpoint = 0,3 (mis on 30%)
- min_kiiruse_protsent = 0,3 (mis on 30%)
- baaskiirus = 70 (aka maksimumkiirus)
- update_rate = 50 (töötab @50Hz)
- Samuti tuleb GiggleBoti BBC mikro: bitile laaditavas skriptis muutuva run_neopixels väärtuseks määrata True. See paneb NeoPixeli LED -id vilkuma nii, et need näitavad, mis suunas viga koguneb.
6. toiming: GiggleBot töötab, kui NeoPixels on välja lülitatud
See on näide GiggleBoti käitamisest eelmises etapis leitud 1. häälestusparameetritega. Selles näites on NeoPixeli LED -id välja lülitatud.
Samm 7: GiggleBot töötab, kui neopikslid on sisse lülitatud
See on näide GiggleBoti käivitamisest koos 5. häälestusparameetrite komplektiga, mis on leitud punktis 5. Selles näites on NeoPixeli LED -id sisse lülitatud.
Pange tähele, kuidas selles näites on GiggleBotil raskem joont järgida - see on sellepärast, et Neopixeli LED -id "söövad" BBC micro: bit CPU aega. Sellepärast pidime vähendama värskendamissagedust 70 -lt 50 -le.
Soovitan:
GPS -jälgija: 6 sammu
GPS -jälgija: Hei poisid, selles videos teeme GPS -jälgija, kasutades Esp 8266 (nodemcu) ja neo 6m GPS -moodulit, nii et alustame
LoRa GPS -i jälgija õpetus - LoRaWAN koos Dragino ja TTN -iga: 7 sammu
LoRa GPS -i jälgija õpetus | LoRaWAN koos Dragino ja TTN -iga: Hei, mis toimub, poisid! Akarsh siin CETechist. Paar projekti tagasi vaatasime Dragino LoRaWANi lüüsi. Me ühendasime Gateway'ga erinevad sõlmed ja edastasime andmed sõlmedest Gateway'le, kasutades TheThingsNetwork'i
Liini jälgija Tinkercadil: 3 sammu
Joone jälgija Tinkercadil: A-line jälgijarobot, nagu nimigi ütleb, on automatiseeritud juhitav sõiduk, mis järgib põrandale või lakke kinnitatud visuaalset joont. Tavaliselt on visuaalne joon tee, mida mööda järgib robot, ja see on must joon
GiggleBot Line'i jälgija Pythoni abil: 5 sammu
GiggleBot Line'i jälgija Pythoni abil: Seekord programmeerime MicroPythonis Dexter Industries GiggleBoti, et järgida musta joont, kasutades oma sisseehitatud reasensorite andurit. GiggleBot peab olema ühendatud BBC mikro: bitiga, et see saaks tuleb asjakohaselt kontrollida. Kui
Automaatne häälestamine: 7 sammu
Automaatne häälestamine: Bienvenue dans notre projet Autotune! Notre é quipe va vous pr é sender la r é alisation de ce projet. Notre é quipe est compos é e de 3 é l è ves ing é nieurs de Polytech Sorbonne en EISE4 (4 è me ann