This shows you the differences between two versions of the page.
pm:prj2023:ncaroi:self-balanced-robot [2023/05/29 01:12] radu_stefan.zamfir [Rezultate Obţinute] |
pm:prj2023:ncaroi:self-balanced-robot [2023/05/30 01:11] (current) radu_stefan.zamfir [Jurnal] |
||
---|---|---|---|
Line 67: | Line 67: | ||
=== 3. PID === | === 3. PID === | ||
- | Se foloseste algoritmul PID pentru a determina viteza servomotoarelor in functie de datele de la giroscop. | + | Se foloseste algoritmul PID (Proportional-Integral-Derivative) pentru a determina viteza servomotoarelor in functie de datele de la giroscop. |
+ | Se primeste un input (in acest caz, unghiul dat de giroscop), un ideal (unghiul de echilibru al robotului) si rezulta un output din algortimul de PID control, folosind 3 valori ce trebuie tunate unic pentru fiecare robot: | ||
+ | |||
+ | __Proportional__: se calculeaza un output de viteza in functie de eroarea curenta fata de ideal. | ||
+ | |||
+ | __Integral__: In functie de magnitudiea si durata erorii, se calculeaza acceleratia. | ||
+ | |||
+ | __Derivative__: In functie de rata de schimbare a erorii se mai influenteaza viteza motoarelor. | ||
<note tip> | <note tip> | ||
- | O foarte mare parte a timpului a fost consumat facand fine-tuning pe valorile acestui sistem. Acesta foloseste 3 variabile (Kp, Ki, Kd), care reprezinta niste integrale si derivate pe care nu le-am inteles prea bine, care depind foarte mult de specificatii gen greutatea robotului, diametrul rotilor etc, care se pot afla doar prin trial and error pentru ca robotul sa se balanseze bine. | + | O foarte mare parte a timpului a fost consumat facand fine-tuning pe valorile acestui sistem. Acesta foloseste aceste 3 variabile de mai sus (Kp, Ki, Kd), care depind foarte mult de specificatii gen greutatea robotului, diametrul rotilor etc, care se pot afla doar prin trial and error pentru ca robotul sa se balanseze bine. |
</note> | </note> | ||
===== Rezultate Obţinute ===== | ===== Rezultate Obţinute ===== | ||
Line 82: | Line 89: | ||
===== Concluzii ===== | ===== Concluzii ===== | ||
- | ===== Download ===== | + | Personal, a fost o provocare sa construiesc acest robot cu resurse minime cat sa fie stabil si cat de cat ok. |
- | <note warning> | + | Insa, obiectiv si de departe, partea cea mai dificila dar si cea mai importanta a acestui proiect este __calibrarea__. |
- | O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului: surse, scheme, etc. Un fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-). | + | |
- | Fişierele se încarcă pe wiki folosind facilitatea **Add Images or other files**. Namespace-ul în care se încarcă fişierele este de tipul **:pm:prj20??:c?** sau **:pm:prj20??:c?:nume_student** (dacă este cazul). **Exemplu:** Dumitru Alin, 331CC -> **:pm:prj2009:cc:dumitru_alin**. | + | Cele trei constante, **Kp** = Proportional gain, **Ki** = Integral gain si **Kd** = Derivative gain, sunt foarte variabile in functie de fiecare robot si de specificatiile acestuia, cum ar fi greutatea, diametrul rotilor, puterea motoarelor, cat de des se primesc date de la senzor. |
- | </note> | + | |
- | ===== Jurnal ===== | + | Aceste constante sunt extrem de dificil de calculat de mana sau cu vreun tool online, astfel incat pentru controllere PID in aproape toate cazurile se foloseste metoda "Trial and error". Am subestimat cat timp imi va lua acest lucru si nu am ajuns sa ajung la rezultate ideale. Un alt motiv pentru aceasta concluzie este si ca nu am gasit motoare potrivite, iar servomotoarele mele hackuite cat sa fie continue nu au destula putere cat sa permita robotului sa raspunda la erori mari. |
- | <note tip> | + | Totusi, pot spune ca pentru un astfel de robot, daca se doreste ajungerea la niste rezultate multumitoare, se pot petrece lejer cateva saptamani doar pe calibrarea parametrilor de mai sus. A fost un proces foarte interesant, foarte frustrant si foarte rewarding (nu in acelasi timp). As recomanda oricui sa parcurga un astfel de proiect. |
- | Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului. | + | ===== Download ===== |
- | </note> | + | |
+ | {{:pm:prj2023:ncaroi:selfbalancingrobot_raduzamfir.zip|Arhiva pentru software}} | ||
===== Bibliografie/Resurse ===== | ===== Bibliografie/Resurse ===== |