This shows you the differences between two versions of the page.
pm:prj2023:gpatru:line_follower [2023/05/30 06:41] alexandru.buzea2007 [Software Design] |
pm:prj2023:gpatru:line_follower [2023/05/30 07:56] (current) alexandru.buzea2007 [Software Design] |
||
---|---|---|---|
Line 45: | Line 45: | ||
Funcționarea din punct de vedere software a proiectului este descrisă în următoarea diagramă: | Funcționarea din punct de vedere software a proiectului este descrisă în următoarea diagramă: | ||
- | implementa în software un regulator pentru ca traseul robotului să fie cât mai precis (mai exact, un regulator proporțional integrativ derivativ). | + | {{ :pm:prj2023:gpatru:software_design_line_follower.png?450 |}} |
+ | |||
+ | În partea de setup am realizat inițializarea senzorilor (pe pinii pe care au fost conectați) și calibrarea senzorilor de infraroșu, cu ajutorul bibliotecii QTRSensors. | ||
+ | În partea de loop, se determină eroarea amplasării liniei față de cei 6 senzori dispuși 3 câte 3, iar apoi modificarea efectivă în vitezele celor două motoare se determină folosind un regulator PID (proporțional integrativ derivativ), astfel: modificarea va fi reprezentată de o sumă de 3 termeni, dintre care: | ||
+ | * primul reprezintă un termen proporțional cu eroarea avută (regulator proporțional). | ||
+ | * al doilea reprezintă un termen proporțional cu derivata erorii (calculată ca derivată discretă, adică diferența dintre eroarea de la pasul curent și eroarea de la iterația anterioară). | ||
+ | * al treilea reprezintă un termen proporțional cu integrala erorii (calculată ca integrală discretă - suma erorilor anterioare). | ||
+ | |||
+ | Apoi am adaptat viteza celor două motoare în funcție de această modificare determinată (am modificat vitezele în sensul reducerii acestora, în cazul existenței unei modificări majore). | ||
+ | |||
+ | Laboratoarele folosite din materia de PM sunt: timere și PWM (laboratorul 3), UART (strict cu scop de debug - laboratorul 1), convertor analog-digital (pentru senzorii analogici de infraroșu - laboratorul 4), I2C (laboratorul 6 - pentru senzorul ultrasonic). | ||
===== Rezultate Obţinute ===== | ===== Rezultate Obţinute ===== | ||
+ | {{ :pm:prj2023:gpatru:line_follower_photo1.jpeg?450 |}} | ||
+ | |||
+ | {{ :pm:prj2023:gpatru:line_follower_photo2.jpeg?450 |}} | ||
+ | |||
+ | {{ :pm:prj2023:gpatru:line_follower_photo3.jpeg?450 |}} | ||
+ | |||
+ | {{ :pm:prj2023:gpatru:line_follower_photo4.jpeg?450 |}} | ||
===== Concluzii ===== | ===== Concluzii ===== | ||
+ | A fost un proiect interesant de început în zona de hardware, însă cu toate acestea am întâmpinat numeroase probleme care și-au adus contribuția la rezultatul final (line follower-ul nu urmărește fidel o linie, ci doar o urmează ca direcție, fără a reuși însă să parcurgă o linie închisă complet/să ia curbe): | ||
+ | * sursa de tensiune (cele 4 baterii conectate în serie) nu reprezintă de obicei o sursă suficientă de energie (cu ajutorul lor trebuie să alimentăm motoarele, acestea dovedindu-se ineficiente). | ||
+ | * problema cea mai mare pentru proiectul de line following în sine a reprezentat-o faptul că nu am reușit să fixez foarte bine senzorii de infraroșu foarte aproape de sol. Inițial, am încercat cu un breadboard pus invers (acesta se vede și în rezultatul final), însă senzorii nu dădeau rezultate satisfăcătoare (conform documentației, senzorii trebuie să stea la mai puțin de un sfert de inch de sol/aproximativ 6 milimetri). Am încercat să îi suspend, însă astfel ei au devenit mobili, tot existând o perturbație a rezultatelor obținute. | ||
+ | * probleme de design, componentele care au necesitat lipire și care au adus cu ele întârzieri în realizarea proiectului, fiind nevoit să dezvolt partea software în decurs de o zi. | ||
+ | * întârzieri la livrarea componentelor (la jumătatea lunii mai). | ||
+ | |||
+ | Chiar dacă rezultatul nu este unul satisfăcător, totuși am fost inițiat în tot ceea ce înseamnă un proiect de hardware, dovedindu-și complexitatea mai mult decât un proiect de software. | ||
===== Download ===== | ===== Download ===== | ||
+ | Aici puteți găsi codul pentru line follower: | ||
+ | {{ :pm:prj2023:gpatru:proiect_pm_cod_line_follower.zip |}} | ||
===== Jurnal ===== | ===== Jurnal ===== | ||
- | **06.05.2023**: Schița documentației //(to be continued)//. | + | **06.05.2023**: Schița documentației |
- | ===== Bibliografie/Resurse ===== | + | |
+ | **18.05.2023**: A sosit comanda 1 de piese. | ||
+ | |||
+ | **21.05.2023**: Constat că am nevoie de un driver mai simplu (shield-ul inițial era prea complicat pentru proiectul propus), decid să iau altul + niște fire + niște mini breadboards. | ||
+ | |||
+ | **23.05.2023**: A sosit comanda 2 de piese. | ||
+ | |||
+ | **27.05.2023**: Realizarea design-ului hardware | ||
+ | |||
+ | **28.05.2023**: Testarea întregului design hardware: senzori și motoare | ||
+ | |||
+ | **29.05.2023**: Lipirea unor componente în laboratorul de PM | ||
+ | |||
+ | **29.05.2023**: Implementare software (+ fine tuning parametrii PID) | ||
+ | |||
+ | **30.05.2023**: Prezentare proiect PM Fair | ||
+ | ===== Bibliografie/Resurse/Altele ===== | ||
+ | |||
+ | |||
+ | * {{ :pm:prj2023:gpatru:proiect_pm_documentatie_buzea_alexandru-mihai-iulian.pdf|Export to PDF}} | ||
+ | |||
+ | * https://drive.google.com/file/d/1iLUKN1-maQSTaiUmCuHQzzPpRQtacA3g/view?usp=sharing | ||
+ | |||
+ | * https://pololu.github.io/qtr-sensors-arduino/ | ||
+ | |||
+ | * https://howtomechatronics.com/tutorials/arduino/ultrasonic-sensor-hc-sr04/ | ||
+ | |||
+ | * https://electropeak.com/learn/interfacing-mx1508-motor-driver-module-with-arduino/ | ||
+ | * https://towardinfinity.medium.com/pid-for-line-follower-11deb3a1a643 | ||
- | {{ :pm:prj2023:gpatru:proiect_pm_documentatie_buzea_alexandru-mihai-iulian.pdf|Export to PDF}} |