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:

  1. Citire ADC: Sistemul citeste potentiometrul pentru a stabili distanta dorita fata de perete (referinta).
  2. Preluare Date Senzori: La intervale regulate (ex. 50ms), MCU declanseaza senzorii ultrasonici si calculeaza distantele (Fata, Stanga, Dreapta) folosind Timere/Intreruperi.
  3. Calcul Eroare: Se calculeaza diferenta dintre distanta laterala curenta si referinta dorita.
  4. Procesare PID: Modulul central aplica algoritmul de control pe baza erorii pentru a calcula corectia necesara.
  5. Generare Semnal: MCU genereaza semnalele PWM ajustate si pinii de directie.
  6. 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

pm/prj2026/florin.stancu/mihnea.popescu1811.txt · Last modified: 2026/05/15 02:51 by mihnea.popescu1811
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