Table of Contents

Alexandru-Cătălin VASILE (78309) - Line Follower

Autorul poate fi contactat la adresa: Login pentru adresa

Introducere

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).

Descriere generală

Principiul de functionare este urmatorul:

Hardware Design

Componente

Pe langa componentele standard [0], proiectul necesita urmatoarele componente:

[0] gid=0

Schema electrica

Software Design

Mediul de dezvoltare

Visual Studio, Windows 10.

Dezvoltarea pe windows 7 nu a fost posibila, deoarece USB-USART nu a fost detectat.

Descrierea algoritmului

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).

(sens0 * 0 + sens1 * 1000 + sens3 * 2000 + …) / (sens0 + sens1 + …)

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.

pid = KP * prop + KI * integral + KD * deriv

Pentru a nu avea erori foarte mari in deplasare, partea integrala se va reseta dupa un numar precizat de pasi.

Pentru incarcarea programului in placa am folosit bootloadHID.

Rezultate Obţinute

https://www.youtube.com/watch?v=Ol3Z_lIwuvQ&feature=youtu.be

acvasile_lines.jpg
acvasile_best.jpg
acvasile_back.jpg
acvasile_front_0.jpg
acvasile_follow_0.jpg
acvasile_follow_1.jpg

Concluzii

Download

Source Code

Bibliografie/Resurse

Resurse Software

Resurse Hardware