Cuprins:

Predarea controlului PID cu roboții Lego: 14 pași
Predarea controlului PID cu roboții Lego: 14 pași

Video: Predarea controlului PID cu roboții Lego: 14 pași

Video: Predarea controlului PID cu roboții Lego: 14 pași
Video: Battle of the Bytes: Deduplication vs. Compression on Windows 2024, Iulie
Anonim
Predarea controlului PID cu roboții Lego
Predarea controlului PID cu roboții Lego

Mulți entuziaști tineri de roboți sunt interesați de subiecte de control mai avansate, dar pot fi împiedicați de calculul adesea necesar pentru a analiza sistemele cu buclă închisă. Există resurse minunate disponibile online care simplifică construcția unui „controlor diferențial integral proporțional” (controler PID) și o descriere excelentă este aici:

Cu toate acestea, acestea pot fi dificil de urmat și s-ar putea să nu fie potrivite pentru o sală de clasă de aproximativ 20 de studenți.

Acest pas cu pas Instructable arată cum să predați cu succes o cameră plină de studenți care utilizează sistemul robot Lego, un număr de roboți (5-10 dintre ei), un număr egal de stații de lucru pentru computer care rulează NXT 2.0 și o pistă de șapte picioare de negru bandă electrică pe podea.

ÎN AFară: Mulțumesc lui J. Sluka, care a scris link-ul de mai sus, Dr. Bruce Linnell, care a creat câteva laboratoare Lego timpurii la nivelul Universității ECPI, și Dr. Reza Jafari, care a furnizat obiecte de învățare PID Control care mapează idei către EET220 și Cursuri de capstone.

Pasul 1: Pregătirea de laborator înainte de sosirea elevilor

Pregătirea de laborator înainte de sosirea studenților
Pregătirea de laborator înainte de sosirea studenților

Spuneți elevilor despre munca voastră grea;-)

Instructorii și asistenții didactici au fost FOARTE ocupați să se pregătească pentru a face acest laborator! Robotul a fost încărcat și asamblat pentru acest laborator. Dacă este necesară asamblarea, aceasta poate dura până la 90 de minute pentru unul sau mai mulți roboți. Este nevoie și de mai mult timp pentru a încărca bateriile sau pentru a le condiționa cu cicluri de încărcare / descărcare. Pentru instrucțiuni detaliate despre cum să construim robotul pe care îl vom folosi astăzi, consultați kitul educațional NXT 2.0 sau 2.1, Ghidul de construire al robotului „urmați o linie”. Vom folosi o programare mai complexă, totuși … Banda electrică neagră pe linoleum de culoare deschisă face o pistă grozavă. Acesta are 3’x 7’ cu curbe semicirculare.

Pasul 2: Familiarizați-vă cu robotul

Familiarizați-vă cu robotul
Familiarizați-vă cu robotul

În primul rând, vă veți familiariza cu meniul robotului, precum și cu unele dintre părțile acestui robot. Veți afla, de asemenea, despre tehnologia senzorilor de stil industrial utilizată de robot, inclusiv diode emițătoare de lumină, senzori de lumină, motoare pas cu pas și senzori de poziție rotațională. Vă rugăm să vă asigurați că completați toate informațiile solicitate (de obicei, semifabricatele subliniate _).

1. Deconectați robotul de la încărcător și / sau de la portul USB al computerului. Folosiți butonul Portocaliu pentru a porni robotul. Butoanele portocalii, stânga și dreapta și butonul dreptunghi „înapoi” gri permit navigarea în meniu. Navigați la meniul „Fișiere software” și parcurgeți fișierele software disponibile pe robot. Enumerați numele fiecărui fișier software, exact cum este scris, inclusiv majuscule și spații:

_

Pasul 3: Calibrați senzorul de lumină

Calibrați senzorul de lumină
Calibrați senzorul de lumină

2 Examinați senzorul de lumină și informațiile de calibrare. Faceți o copie de rezervă în meniul principal și selectați „Vizualizare”. Selectați opțiunea „Lumină reflectată” și portul (ar trebui să fie „Portul 3”) care determină aprinderea luminii și afișarea unui număr pe ecran. Asigurați-vă că totul funcționează și înregistrați câteva informații de calibrare.

A. Citire maximă folosind o foaie albă de hârtie: Număr: _ Descrieți distanța aproximativă față de hârtie: _

b. Citire maximă pe podeaua linoleumului deschis la culoare: _

c. Citire minimă când se îndreaptă spre centrul benzii electrice negre: _

Pasul 4: Testați calibrarea motorului

Testați calibrarea motorului
Testați calibrarea motorului

3 Examinați motoarele roților (stânga și dreapta), precum și informațiile de calibrare. Faceți o copie de rezervă la meniul principal și selectați „Rotații motor” Selectați portul (ar trebui să fie „Port B” sau „Port C” pentru cele două motoare). Vedeți dacă puteți verifica calibrarea acestei citiri rotind fiecare motor cu un număr fix de rotații în timp ce vizualizați citirea. Veți face același test de calibrare pentru ambele motoare utilizând ecranul de calibrare „View” à „Motor Degrees”.

Motor pe portul B.

  • De câte ori ați rotit roata _
  • Valoarea afișării „Rotații motor”_
  • Distanța în grade roata a fost rotită_
  • Valoarea afișată „Gradele motorului_

Motor pe portul C

  • De câte ori ați rotit roata _
  • Valoarea afișării „Rotații motor”_
  • Distanța în grade roata a fost rotită_
  • Valoarea afișată „Gradele motorului_

Valorile afișate au fost de acord cu așteptările dvs.? Te rog explica. _

Pasul 5: Rulați controlerul On-Off furnizat

Rulați controlerul On-Off furnizat
Rulați controlerul On-Off furnizat

Un controler „On-Off” (numit uneori „Bang-Bang”) are doar două opțiuni, pornit și oprit. Este similar cu controlul termostatului din casa ta. Când este setat la o temperatură aleasă, termostatul va încălzi casa dacă este prea rece și va răci casa dacă este prea fierbinte. Temperatura aleasă se numește „Set Point” și diferența dintre temperatura curentă a casei și Set-Point se numește „Eroare”. Așadar, ați putea spune că, dacă Eroarea este pozitivă, porniți AC, altfel porniți căldura.

În cazul nostru, robotul se va întoarce spre stânga sau spre dreapta, în funcție de dacă Set-Point-ul senzorului de lumină are o eroare pozitivă sau negativă (prea mult pe podeaua albă sau prea mult pe banda neagră).

Veți observa că robotul dvs. poate fi deja încărcat cu mai multe programe (sau puteți utiliza fișierul atașat „01 line.rbt” încorporat aici) stocat pe acesta cu nume precum „1 linie” și „2 linie” și acolo, de asemenea, poate fi o literă suplimentară după numărul programului, cum ar fi „linia 3b”. Va trebui să executați programul cu numărul „1” în numele său și apoi să plasați robotul pe pista de bandă, cu senorul pe linia neagră. Încercați să vă țineți departe de alți roboți deja pe pistă, astfel încât să vă puteți cronometra robotul fără întreruperea lovirii cu alți roboți.

4 Măsurați următoarele încercări cronologice:

A. Timpul pentru a finaliza o parte dreaptă a pistei: _

b. Descrieți mișcarea robotului pe linie dreaptă: _

c. Timp pentru a finaliza o curbă a pistei: _

d. Descrieți mișcarea curbată a robotului: _

e. E timpul să parcurgi în întregime pista o dată: _

Pasul 6: Deschideți programul de control On-Off „Linia 01”

Deschide
Deschide
Deschide
Deschide
Deschide
Deschide

Veți deschide software-ul „LEGO MINDSTORMS NXT 2.0” (nu software-ul Edu 2.1) și veți încărca programul corespunzător numit „01 line.rbt” și veți examina și modifica software-ul, urmând instrucțiunile de mai jos:

Deschideți software-ul „LEGO MINDSTORMS NXT 2.0” (nu software-ul Edu 2.1). Instructorul dvs. vă va spune unde sunt stocate fișierele pe computerul dvs. și din acea locație veți deschide programul „1 linie”. Pur și simplu selectați „Fișier”, apoi „Deschideți” și alegeți programul „1 linie” pentru a deschide.

Odată ce programul este deschis, puteți utiliza pictograma „mână” pentru a deplasa întreaga imagine a ecranului programului și puteți utiliza pictograma „săgeată” pentru a face clic pe obiecte individuale pentru a vedea cum funcționează (și, de asemenea, face modificări).

Pasul 7: Înțelegerea software-ului controlerului On-Off „01 Line”

Înțelegerea
Înțelegerea

Programul „1 linie” folosește o metodă de control „On-Off”. În acest caz, opțiunile sunt fie „Virați la stânga”, fie „Virați la dreapta”. Graficul conține o descriere a elementelor programului:

Pasul 8: Editarea software-ului controlerului On-Off „01 Line”

Editarea fișierului
Editarea fișierului

Schimbați setul și comparați rezultatele.

Ați descoperit câteva valori ale lumii reale ale contorului de lumină la pasul 2 de mai sus. Ați înregistrat valori în părțile b și c, numere pentru valorile minime și maxime pe care robotul le-ar vedea atunci când rulează pista.

5 Calculați o valoare BUN set-point (media min și max): _

6 Alegeți o valoare BAD set-pint (un număr foarte apropiat de min sau maxim): _

Schimbați setul la una dintre aceste valori utilizând pictograma săgeată pentru a face clic pe caseta de calcul al erorii și schimbând numărul care este scăzut (a se vedea imaginea de mai jos). Acum conectați robotul la computer folosind cablul USB, asigurați-vă că robotul este pornit și descărcați noua versiune a programului „1 linie” în robot. Veți vedea cât durează robotul pentru a înconjura pista în sensul acelor de ceasornic, odată cu setul BUN și o dată cu setul BAD.

7 Finalizați încercările cu timp cu valori de referință BUN și BAD

A. Este timpul să parcurgeți în întregime pista o dată (BUN set-point): _

b. Este timpul să parcurgi în întregime pista o singură dată (BAD Set-Point): _

Observațiile / concluziile dvs.? _

Pasul 9: Înțelegerea „Liniei 02” Pornit-Oprit cu software-ul controlerului zonei moarte

Înțelegerea
Înțelegerea

Dacă AC și căldura din casa dvs. continuă să se aprindă și să se oprească toată ziua, ar putea cu siguranță să vă distrugă sistemul HVAC (sau cel puțin să-i scurteze viața). Majoritatea termostatelor sunt realizate cu o „zonă moartă” încorporată. De exemplu, dacă valoarea setată este de 70 grade Fahrenheit, este posibil ca termostatul să nu pornească AC până la 72 de grade și nici să nu aprindă căldura până când temperatura scade la 68 de grade. Dacă zona moartă devine prea largă, casa poate deveni incomodă.

În cazul nostru, vom folosi programul de linie 02 pentru a adăuga o zonă moartă, în timpul căreia robotul va pur și simplu conduce direct.

Acum examinați fișierul software „linia 02” așa cum este descris în grafic și așa cum este conținut în fișierul atașat.

Acest fișier software programează robotul să urmeze linia folosind controlul On-Off cu o diferențială diferență. Acest lucru este, de asemenea, cunoscut sub numele de Deadband și înseamnă că robotul se va întoarce la stânga sau la dreapta în funcție de eroare, dar dacă eroarea este mică, robotul va merge direct.

Programul „linia 02” calculează mai sus mai întâi prin scăderea punctului setat din măsurarea luminii și apoi efectuarea comparațiilor așa cum sa menționat mai sus. Examinați programul de pe computer și înregistrați valorile pe care le vedeți.

Care este valoarea curentă (originală) a programului „2 linii” al set-point-ului? _

Care este valoarea curentă (originală) a programelor „2 linii” Eroare pozitivă „Mare”? _

Care este valoarea curentă (originală) a programelor „2 linii” Eroare negativă „Mare”? _

Ce interval de erori Dead-Band va determina robotul să meargă direct? DE LA CATRE _

Rulați trei (3) încercări de timp cu valori diferite pentru eroarea „Mare” de mai sus. Setările curente „2 linii”, precum și alte două setări pe care le veți calcula. Ați ales deja un BUN set-point pentru robotul dvs. Acum veți alege două game diferite de Dead-Band și veți înregistra timpul necesar robotului pentru a face un tur în sensul acelor de ceasornic:

Setări originale pentru linia 02 _

Dead-Band de +4 la -4 _

Dead-Band de la +12 la -12 _

Pasul 10: Înțelegerea software-ului de control proporțional „Linia 03”

Înțelegerea
Înțelegerea

Cu control proporțional, nu doar pornim sau oprim căldura, am putea avea mai multe setări pentru cât de mult ar trebui să porniți cuptorul (cum ar fi dimensiunea flăcărilor de pe un aragaz). În cazul robotului, nu avem doar trei setări ale motorului (stânga, dreapta și dreaptă). În schimb, putem controla viteza roților din stânga și din dreapta pentru a obține o mare varietate de viteze de virare. Cu cât este mai mare eroarea, cu atât mai repede dorim să ne întoarcem la linie.

Să analizăm controlul proporțional cu programul „linia 03”

Programul pentru „linia 03” este mai complicat, deoarece nu numai că setează metoda de control „proporțională”, dar conține tot software-ul pentru a face controale proporționale-integrale, proporționale-diferențiale și proporționale-integrale-diferențiale (PID). Când încărcați software-ul, acesta va fi probabil prea mare pentru a se potrivi pe ecran dintr-o dată, dar are într-adevăr trei părți, așa cum se arată în graficul atașat.

A - Matematica pentru a calcula eroarea și „calculul” pentru a găsi integralul și derivatul erorii în timp.

B - Matematică pentru a calcula viteza motorului stâng pe baza setărilor de control PID de Kp, Ki și Kd

C - Matematică pentru a testa limitele de turație a motorului și pentru a trimite turațiile corecte ale motorului către motoarele din stânga și din dreapta.

Toate cele trei rulează propriile lor bucle infinite (după inițializare) și puteți naviga prin folosind pictograma „mână”, dar reveniți la pictograma „săgeată” pentru a examina conținutul casetei și pentru a modifica setările.

Pasul 11: Editarea programului de linie 03 (control proporțional)

Editarea programului 03 Line (Control proporțional)
Editarea programului 03 Line (Control proporțional)

În secțiunea din mijloc (secțiunea B din descrierea anterioară) veți observa că în programul „linia 03”, setările Ki și Kd sunt ambele 0.

Să-i lăsăm așa. Vom schimba doar valoarea Kp, partea proporțională a controlerului.

Kp decide cât de ușor robotul își schimbă viteza pe măsură ce se îndepărtează de linie. Dacă Kp este prea mare, mișcarea va fi extrem de sacadată (similar cu controlerul On-Off). Dacă Kp este prea mic, atunci robotul va efectua corecțiile prea încet și se va îndepărta departe de linie, în special pe curbe. Poate chiar să meargă până la capăt să piardă linia cu totul!

13 Ce set-point utilizează programul „linia 03”? (scăzut după citirea setării luminii în bucla A) _

14 Care este valoarea Kp în programul curent „linia 03”? _

Controle temporale pentru controler proporțional (programul „3 linii”)

Veți utiliza setările originale pentru programul „linia 03” salvat în memoria robotului dvs. pentru a efectua o încercare cu cronometru și veți utiliza, de asemenea, alte două modificări la programul „linia 03” pentru un total de trei măsurări cu cronometru. Modificările pe care trebuie să le faceți includ

DRIFTY - Găsirea unei valori de Kp care face ca robotul să derive foarte încet și, eventual, să piardă din vedere linia (dar sperăm că nu). Încercați valori Kp diferite între 0,5 și 2,5 (sau o altă valoare) până când veți obține una în care robotul se îndreaptă, dar rămâne pe linie.

JERKY - Găsirea unei valori de Kp care face ca robotul să se miște înainte și înapoi, foarte asemănător cu tipul de mișcare On-Off. Încercați o valoare Kp undeva între 1,5 și 3,5 (sau o altă valoare) până când obțineți una în care robotul începe să prezinte mișcarea înainte și înapoi, dar nu prea dramatic. Aceasta este, de asemenea, cunoscută sub numele de valoarea „critică” a Kp.

Încercările de timp pentru o întreagă virare în sensul acelor de ceasornic în jurul pistei sunt necesare numai cu valorile originale „3 linii” și cu cele două noi seturi de valori (DRIFTY și JERKY) pe care le descoperiți prin faptul că robotul urmează doar o lungime scurtă de pistă. Nu uitați să descărcați de fiecare dată modificările robotului!

15 Înregistrați valorile de control proporțional și încercările de timp pentru programul „3 linii” (nu uitați să descărcați modificările la robot!) Pentru fiecare dintre aceste trei valori ale Kp (valoarea inițială a liniei 03 și două valori pe care le determinați prin încercare și eroare a fi DRIFTY și JERKY).

Pasul 12: Controlere PID avansate

Controlere PID avansate
Controlere PID avansate
Controlere PID avansate
Controlere PID avansate

Înainte de a începe acest pas, asigurați-vă că parcurgeți pașii anteriori, înregistrând toate informațiile solicitate, cu robotul pe care intenționați să îl utilizați pentru acest laborator. Fiecare robot este ușor diferit, în ceea ce privește aspectele mecanice, motor, și în special rezultatele senzorului de lumină pe pistă.

Numere de care veți avea nevoie din experimentele anterioare

16 citire maximă a senzorului de lumină (de la pasul 2) _

17 Citire minimă a senzorului de lumină (de la pasul 5) _

18 Setarea BUNĂ pentru set-point (media celor de mai sus) _

19 setarea DRIFTY pentru Kp (de la pasul 15) _

20 setare JERKY (critică) pentru Kp (de la pasul 15) _

Înțelegerea controlerului PID

Este posibil să fi aflat despre controlerul diferențial integral proporțional (PID) ca parte a unui curs de control industrial, iar o prezentare generală rapidă este online la Wikipedia (https://en.wikipedia.org/wiki/PID_controller).

În cazul acestui experiment, valoarea măsurată este cantitatea de lumină reflectată de pe podea. Punctul de referință este cantitatea de lumină dorită atunci când robotul este direct deasupra marginii benzii negre. Eroarea este diferența dintre citirea curentă a luminii și valoarea setată.

Cu controlerul proporțional, viteza motorului din stânga a fost proporțională cu eroarea. Specific:

Eroare = Citire ușoară - Set-Point

În acest grafic, set-point-ul a fost setat la 50.

Mai târziu, pentru a găsi viteza motorului din stânga, înmulțim eroarea cu constanta de proporționare „Kp” în mod specific:

Motor L = (Eroare Kp *) + 35

În acest grafic, Kp este setat la 1,5, iar adăugarea celor 35 se întâmplă într-o altă parte a programului. Valoarea 35 este adăugată pentru a converti numărul care se află undeva între -40 și +40, pentru a fi un număr care este undeva între 10 și 60 (turații rezonabile ale motorului).

Integrala este un fel de amintire a trecutului. Dacă eroarea a fost rea de mai mult timp, robotul ar trebui să accelereze către punctul de referință. Ki se folosește pentru a se înmulți cu integralul (integralul este suma de erori care rulează - în acest caz, redusă cu 1,5 fiecare iterație, astfel încât robotul să aibă o „memorie de decolorare” a erorilor din trecut).

Derivatul este un fel de predicție viitoare. Prezicem o eroare viitoare comparând ultima eroare cu eroarea curentă și presupunem că rata de schimbare a erorii va fi oarecum liniară. Cu cât este prevăzută o eroare viitoare mai mare, cu atât trebuie să trecem mai repede la set-point. Kd este folosit pentru a se înmulți cu Derivatul (derivatul este diferența dintre eroarea curentă și eroarea anterioară).

Motor L = (Kp * Eroare) + (Ki * Integral) + (Kd * Derivat) + 35

Pasul 13: Găsirea celor mai buni parametri PID

Găsirea celor mai buni parametri PID
Găsirea celor mai buni parametri PID
Găsirea celor mai buni parametri PID
Găsirea celor mai buni parametri PID
Găsirea celor mai buni parametri PID
Găsirea celor mai buni parametri PID

Există o serie de moduri care pot fi utilizate pentru a găsi parametrii PID, dar situația noastră are aspecte unice care ne permit să folosim un mod experimental mai „manual” de a găsi parametrii. Aspectele unice pe care le avem sunt:

  • Experimentatorii (dvs.) au o bună înțelegere a modului în care funcționează mașina
  • Nu există niciun pericol de vătămare corporală dacă controlerul înnebunește și, de asemenea, nu există pericolul de a deteriora robotul din cauza setărilor necorespunzătoare ale controlerului
  • Senzorul de lumină este un astfel de dispozitiv de detectare neglijent și există un singur senzor de lumină, deci nu putem decât să sperăm să obținem un rezultat final marginal bun. Prin urmare, „cel mai bun efort” este în regulă pentru experimentele noastre

În primul rând, am folosit deja „linia 03” pentru a decide cel mai bun Kp (valorile setate GOOD și JERKY Kp pasul 18 și 20 de mai sus). Consultați primul grafic pentru instrucțiuni despre cum am găsit valoarea JERKY pentru Kp.

Utilizați software-ul „linia 04” pentru a determina Ki. Mai întâi vom modifica „4 rânduri” pentru a avea valorile pe care le-am înregistrat în articolele 18 și 20 de mai sus. Apoi vom crește încet Ki până când vom obține o valoare care ne va muta cu adevărat la set-point foarte repede. Vedeți al doilea grafic pentru instrucțiuni despre cum să selectați valoarea pentru Ki.

21 CEL MAI RAPID Valoarea Ki-ului care se fixează cel mai repede pe set-point (chiar și cu unele depășiri) _

Utilizați software-ul „linia 05” pentru a determina Kd. Mai întâi modificați „5 linie” cu valorile de la pașii 18, 20 și 21, apoi creșteți Kd până când obțineți robotul final de lucru care ajunge rapid la set-point și cu foarte puține depășiri, dacă există. Al treilea grafic prezintă instrucțiuni despre cum să selectați Kd.

22 OPTIMAL Valoarea lui Kd _

23 CÂT DURĂ ROBOTUL DUMNEAVOASTRĂ PENTRU CIRCULAREA PISII ACUM ??? _

Pasul 14: Concluzie

Experimentul de laborator a mers foarte bine. Cu aproximativ 20 de studenți, folosind cele 10 (zece) stații de lucru + configurațiile robotului prezentate în prima grafică, nu a existat niciodată un logjam de resurse. Cel mult trei roboți înconjurau pistele la un moment dat pentru probele cu cronometru.

Vă recomandăm să spargeți porțiunea de control PID (cel puțin programele „linia 04” și „linia 05”) într-o zi separată, din cauza conceptelor implicate.

Iată o secvență de videoclipuri care arată progresia controalelor (de la „linia 01” la „linia 05”) folosind valorile pe care le-am selectat - dar fiecare elev a venit cu valori ușor diferite, ceea ce este de așteptat!

REȚINEȚI: Unul dintre principalele motive pentru care echipele de roboți foarte bine pregătiți se descurcă prost la evenimentele de competiție este faptul că nu efectuează calibrarea în locul exact în care va avea loc evenimentul. Iluminarea și modificările ușoare ale poziției senzorilor datorită împingerii pot afecta foarte mult valorile parametrilor!

  • Linia 01 (On-Off) Control PID cu roboți Lego -
  • Linia 02 (On-Off cu Dead-Zone) Control PID cu roboți Lego -
  • Linia 03 (proporțională) Control PID cu roboți Lego -
  • Linia 04 (proporțional-integrală) Control PID cu roboți Lego -
  • Linia 05 (Proporțional-Integral-Derivat) Control PID cu roboți Lego -

Recomandat: