Line follower

Introducere

Inspirație

Inspirația a avut un număr de surse cu care am interacționat de-a lungul timpului:

  • existența ideii că un proiect de line follower este o bună inițiere în zona de robotică, fiind un bun proiect hardware + software.
  • mai multe demos / tutoriale de pe Youtube despre cum poți realiza un line follower precis.
  • un curs de IA (anul 4) la care eu am participat, unde s-a vorbit despre algoritmi euristici (pe partea de software).

Idee

Proiectul constă în realizarea unui robot de tipul line follower care să urmărească o linie/curbă plană desenată cu negru pe un plan alb, controlul realizându-se la nivel software. De asemenea, robotul dispune și de un senzor de distanță ultrasonic cu ajutorul căruia poate evita obstacolele întâlnite pe traseu.

Descriere generală

Robotul va consta dintr-un microcontroller (Arduino UNO) așezat pe un suport, împreună cu un servomotor SG90 care va dezvolta puterea necesară pentru roți (pentru deplasarea robotului). Pentru a detecta dacă traseul urmat de robot este corect, robotul dispune de 2 senzori (fotorezistori) care au rolul de a indica dacă sub fiecare dintre ei există o linie neagră sau nu. Dacă este o linie neagră, atunci robotul se va deplasa în direcție opusă față de poziția senzorului. Mișcarea va fi îmbunătățită cu ajutorul unui regulator implementat în software (PID). Scopul este ca robotul nostru să parcurgă complet o curbă plană închisă cu diverse grade de curbură (testarea controlului implementat într-o situație reală). Robotul va dispune și de 2 LED-uri (unul roșu și unul verde) pentru a indica dacă robotul urmează traseul dorit sau nu.

Hardware Design

Pentru realizarea proiectului am folosit următoarele componente:

  • Arduino UNO / Atmega328P
  • un șasiu de plastic, împreună cu 2 motoare de curent continuu (5V)
  • 2 benzi cu câte 3 senzori în infraroșu (IR) (QTR-3A)
  • 4 baterii/acumulatori de curent continuu (1.5V fiecare) împreună cu un suport.
  • driver MX1508 pentru a realiza controlul motoarelor folosind PWM.
  • fire (mamă-tată și tată-tată)
  • mini breadboards (folosite pentru driver, senzorul ultrasonic și cei 2 senzori în infraroșu).

Aici avem design-ul hardware și schema electrică a sistemului nostru, conform cu cele descrise mai sus (am înlocuit driver-ul MX1508 cu un driver standard, L298D pentru care am realizat legăturile pe pinii comuni, și cele 2 benzi de senzori cu 6 senzori de infraroșu generici din Tinkercad):

Schema electrică este următoarea: proiect_pm_line_follower_electric_scheme.pdf

Software Design

Funcționarea din punct de vedere software a proiectului este descrisă în următoarea diagramă:

Î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

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

Aici puteți găsi codul pentru line follower: proiect_pm_cod_line_follower.zip

Jurnal

06.05.2023: Schița documentației

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/line_follower.txt · Last modified: 2023/05/30 07:56 by alexandru.buzea2007
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0