Robot care evită obstacolele

Introducere

Un robot care va evita obstacolele, folosindu-se de informațiile primite de la 3 senzori de distanță, ce vor măsura distanțele pe 3 direcții (stânga, față, dreapta). Viteza robotului se va putea regla prin intermediul unui potențiometru.

Descriere generală

Schemă bloc:

Robotul va merge înainte până când va întâlni un obstacol. Cei 3 senzori vor transmite către robot distanțele până la primul obstacol pe direcțiile stânga, dreapta și înainte. Astfel, robotul se va orienta către direcția cu distanța cea mai mare până la obstacol și își va continua mișcarea. Prin intermediul potențiometrului se va putea regla viteza robotului.

Hardware Design

Listă componente:

  • Arduino
  • 2 motoare
  • 2 roți
  • 3 senzori de distanță - HC-SR04
  • potențiometru
  • driver motoare - L298N
  • 2 carcase baterie 9V
  • șasiu
  • fire

Data Sheets:

Schema electrică

Software Design

Mediu de dezvoltare folosit: Arduino IDE 1.8.19

Biblioteca folosită: L298N - pentru controlul celor 2 motoare

Funcții implementate

În setup se setează modul de utilizare a pinilor și se setează viteza inițială, citind valoarea potențiometrului.

În funcția getDist se calculează distanța de la robot până la obstacol, folosind unul din senzorii de distantă. Distanta maxima pe care o poate citi senzorul este 4.5m.

Funcțiile turnRight și turnLeft întorc robotul (cu aprox. 90°, depinde de suprafața pe care se află).

Funcția changeSpeed citește valoarea potențiometrului, calculează noua viteză și apoi schimbă viteza robotului.

În loop:

  • se citește valoarea potențiometrului; dacă aceasta este diferită față de cea anterioară, se va apela changeSpeed;
  • se calculează distanța până la obstacolul din față; dacă este mai mică de 25 cm, se vor citi distanțele până la obstacolele din stânga și din dreapta, iar robotul își va schimba direcția cu distanța mai mare.

Rezultate Obținute

Concluzii

Robotul reușește să evite cu succes obstacolele aflate în fața sa și să se orienteze către direcția cu distanța cea mai mare până la un obstacol. Pot apărea unele probleme atunci când robotul se apropie de un obiect (mai ales colțurile unor pereți) ce nu se afla în raza de acțiune a senzorilor. De asemenea, robotul se rotește cu un unghi ce va depinde de suprafața pe care se află (robotul se rotește cu o viteză constantă pentru un timp setat din codul sursa).

Download

Bibliografie/Resurse

pm/prj2022/ncaroi/robot-care-evita-obstacolele.txt · Last modified: 2022/05/24 01:03 by octavian.torcea
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