Maze-Runner: Robot Autonom Wall-Follower
Introducere
Acest proiect consta in realizarea unui robot mobil autonom capabil sa navigheze printr-un labirint, mentinand o traiectorie stabila prin urmarirea peretilor (Wall-Following).
Ce face: Utilizeaza trei senzori ultrasonici (HC-SR04) pentru a masura distanta fata de obstacole. Pe baza datelor, un algoritm PID ajusteaza viteza motoarelor via PWM pentru a mentine robotul la o distanta fixa de perete.
Scopul lui: Realizarea unui sistem de navigare autonoma bazat pe reactii rapide la mediu prin bucle de feedback negativ, fara o harta predefinita.
Ideea de la care am pornit: Explorarea roboticii mobile si implementarea unui algoritm de control clasic (PID) pentru a elimina mersul in “zig-zag”.
De ce este util: Pentru echipa, este un exercitiu esential de procesare a semnalelor prin intreruperi si implementare a controlului automat bare-metal. Pentru ceilalti, exemplifica generarea unui comportament autonom complex printr-o logica de control simpla.
Descriere generală
Fluxul de date planificat si interactiunea modulelor:
Citire ADC: Sistemul citeste potentiometrul pentru a stabili distanta dorita fata de perete (referinta).
Preluare Date Senzori: La intervale regulate (ex. 50ms), MCU declanseaza senzorii ultrasonici si calculeaza distantele (Fata, Stanga, Dreapta) folosind Timere/Intreruperi.
Calcul Eroare: Se calculeaza diferenta dintre distanta laterala curenta si referinta dorita.
Procesare PID: Modulul central aplica algoritmul de control pe baza erorii pentru a calcula corectia necesara.
Generare Semnal: MCU genereaza semnalele PWM ajustate si pinii de directie.
Actionare: Driverul L298N primeste comenzile si modifica asimetric turatia celor doua motoare DC pentru a corecta traiectoria.
Logica de navigare foloseste o ierarhie stricta: EVITARE COLIZIUNE FRONTALA > URMARIRE PERETE LATERAL. Daca senzorul frontal scade sub un prag critic, robotul suprascrie bucla PID si executa o rotatie de urgenta.
Hardware Design
Design-ul fizic este conceput pentru a asigura stabilitatea robotului in timpul navigarii prin labirint, utilizand un sasiu alungit 2WD care permite montarea strategica a senzorilor. Elementul central il reprezinta sistemul de detectie format din trei senzori ultrasonici, dispusi pentru a acoperi zonele frontala, stanga si dreapta, oferind robotului o “viziune” completa asupra mediului inconjurator.
Lista de piese:
1 x Microcontroler ATmega324P (pe placa de dezvoltare)
1 x Kit Sasiu Masina 2WD (include 2 motoare DC, roti, roata caster si suport baterii)
1 x Modul Driver Motoare Dual L298N
3 x Senzori Ultrasonici HC-SR04 (pentru detectia peretilor pe 3 directii)
1 x Potentiometru 10 kΩ (pentru reglarea dinamica a parametrilor PID - Lab 4)
1 x Baterie 9V + Conector (alimentare logica microcontroler)
1 x Pachet 4 baterii AA (alimentare forta motoare)
1 x Breadboard 830 puncte
Fire de conexiune Dupont (Tata-Tata pentru breadboard, Mama-Tata pentru senzori si driver)
| Board Pin | Function | Component | Direction | Description |
| Pin 4 | Digital Out | Driver L298N (IN1) | Output | Directie motor stang |
| Pin 5 | Digital Out | Driver L298N (IN2) | Output | Directie motor stang |
| Pin 6 | Digital Out | Driver L298N (IN3) | Output | Directie motor drept |
| Pin 7 | Digital Out | Driver L298N (IN4) | Output | Directie motor drept |
| Pin 10 | PWM Out | Driver L298N (ENA) | Output | Viteza motor stang |
| Pin 11 | PWM Out | Driver L298N (ENB) | Output | Viteza motor drept |
| Pin 2 | Digital Out | Senzor Fata (Trig) | Output | Trigger ultrasunete |
| Pin 3 | Digital In | Senzor Fata (Echo) | Input | Receptie ecou |
| Pin 8 | Digital Out | Senzor Stanga (Trig) | Output | Trigger ultrasunete |
| Pin 9 | Digital In | Senzor Stanga (Echo) | Input | Receptie ecou |
| Pin 12 | Digital Out | Senzor Dreapta (Trig) | Output | Trigger ultrasunete |
| Pin 13 | Digital In | Senzor Dreapta (Echo) | Input | Receptie ecou |
Schematic
Software Design
Dezvoltarea software-ului se realizeaza la nivel bare-metal, avand la baza o arhitectura orientata pe evenimente (intreruperi) si o bucla de control principala.
Mediu de dezvoltare: Codul este scris in C, folosind un mediu precum Visual Studio Code cu avr-gcc si Makefile (sau Atmel/Microchip Studio).
Librarii si surse 3rd-party: Se vor folosi exclusiv bibliotecile standard AVR (`<avr/io.h>`, `<avr/interrupt.h>`, `<util/delay.h>`). Nu se folosesc biblioteci externe (cum ar fi cele de Arduino), tot codul interactionand direct cu registrii.
Algoritmi si structuri de date:
Algoritm PID: Calcul matematic folosit pentru a mentine distanta constanta fata de perete si a elimina oscilatiile (mersul in zig-zag).
Finite State Machine (FSM): Masina de stari pentru controlul logicii de navigare (ex. stari: `FOLLOW_WALL`, `CORNER_TURN`, `AVOID_FRONT_OBSTACLE`).
Structuri de tip `struct` pentru a grupa datele senzorilor si coeficientii PID (Kp, Ki, Kd, eroarea_anterioara).
Surse si functii implementate:
`init_timers_and_pwm()`: Configureaza registrele pentru generarea PWM-ului motoarelor si timerele pentru senzori.
`read_ultrasonic(sensor_pin)`: Declanseaza senzorul si masoara durata semnalului Echo prin intreruperi pentru a calcula distanta.
`compute_PID(current_dist, setpoint)`: Calculeaza eroarea si aplica formula Proportional-Integral-Derivativ.
`drive_motors(speed_left, speed_right)`: Aplica rezultatul PID pe pinii de comanda ai driverului L298N.
Rezultate Obţinute
Care au fost rezultatele obţinute în urma realizării proiectului vostru.
Concluzii
Download
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.
Jurnal
Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului.
Bibliografie/Resurse
Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe Resurse Software şi Resurse Hardware.
Export to PDF