Autorul poate fi contactat la adresa: Login pentru adresa
Proiectul consta in realizarea unui robotel Line Follower care se poate deplasa pe un traseu ce este definit de o linie neagra si un fundal alb.
Robotul va avea doua motoare prin intermediul carora va putea vira.
Algoritmul deplasarii va fi unul PID ce isi propune sa ofere cat mai putine oscilatii in deplasare.
Am plecat de la ideea ca un self-driving car poate fi construit si dupa input-uri simple, precum centrarea masinii intre doua linii albe.
Proiectul este util pentru mine deoarece construirea unui line follower implica cunoasterea in amanunt a componentelor si modul in care acestea comunica. Totodata, acesta are multe utilizari in practica: transportul marfii, trimiterea unui robotel in locuri inaccesibile oamenilor (tratarea directiei se va face dupa alte input-uri, insa algoritmul poate ramane acelasi).
Principiul de functionare este urmatorul:
Pe langa componentele standard [0], proiectul necesita urmatoarele componente:
Componenta | Cantitate | Sursa |
---|---|---|
Array de sonzori infrared QTR-8A | 1 | https://www.robofun.ro/bara_senzori_linie_qtr_8a?search=qtr-8a |
Motor cu reductor si roata | 2 | https://www.optimusdigital.ro/ro/motoare-altele/139-motor-cu-reductor-si-roata.html?search_query=motor&results=472 |
Driver de motor DRV8833 | 1 | https://www.robofun.ro/drv8833-dual-motor-driver-carrier?search=drv8833 |
Sasiu (bucata PCB) | 1 | |
Roata | 4 | https://www.robofun.ro/roata-mg?search=roata&sort=p.price&order=ASC |
Suport sasiu | 1 | https://www.optimusdigital.ro/ro/mecanica-suporturi-cu-bila/3122-suport-pololu-cu-bila-din-metal-diametru-de-38-.html?search_query=bila&results=15 |
Baterie 9V | 1 | |
Baterie AA 1.5V | 3 |
[0] gid=0
Visual Studio, Windows 10.
In functie de valorile citite de catre senzori motoarele sunt activate corespunzator pentru a urmari linia. Euristica de transformare a valorilor citite de catre senzori este urmatoarea: se face o medie a valorilor unde fiecare valoare primeste o pondere multiplu de 1000, mai apoi media este impartita la suma valorilor. Prin urmare, functia de transformare aplica o euristica asupra valorilor pentru a comprima valorile la un singur numar. Aceasta este inspirata din documentatia de folosire QTR-8A si acopera cazul in care robotul pierde linia (in acest caz se va executa stanga / dreapta).
Aceasta valoare primeste un offset pentru a face legatura intre miscarea stanga - valoare negativa si dreapta - valoare pozitiva. Dupa care se aplica algoritmul PID pentru a exprima directia deplasarii.
Pentru incarcarea programului in placa am folosit bootloadHID.