Robot care evita obstacole

Introducere

Robotul are scopul de a se deplasa intr-un spatiu cu obstacole de orice tip si de a le ocoli cand este posibil. Vreau sa devina in totalitate autonom incat sa se descurce cu orice situatie sau obstacol.

Modul in care va face asta este simplu. Voi folosi senzori infrarosu de masurare a distantei pentru a lua decizii despre miscarea motoarelor.

Descriere generală

Robotul se misca in mod normal in fata, cu viteza constanta. Cand este luata decizia de schimbare a directiei se mareste viteza unuia dintre motoare pe durata cat senzorii detecteaza obstacole. In cazul in care ambii senzori vad un obstacol, o posibilitate de a il evita este sa se intoarca si sa incerce o alta directie. In implementarea mea, dupa miscarea inapoi se face o rotire pe loc. De aici si singura conditie pentru a evita orice obstacol este sa aiba spatiu macar pentru a se roti pe loc.

Diagrama bloc este urmatoarea:

Hardware Design

Unitati componente:

  • placa de baza cu atmega 16
  • placa de control a motoarelor

Piesele folosite:

  • Pentru placa de control a motoarelor:
    • 1 x L298N - punte H dubla
    • 8 x 1N4148 - protectie
    • 1 x 470μF 16V - filtrare
  • Senzori:
    • 2 x GP2Y0A21YK - senzori distanta 10-80 cm
  • Alimentare:
    • Acumulator 6V4, 5Ah, Pb

Modulul de control a fost realizat pe o placa de test. Schema este urmatoarea:

Senzorii au fost plasati spre interiorul robotului pentru a evita distantele de sub 10 cm ce nu pot fi masurate corect.

De asemenea, am incrucisat directiile celor 2 senzori (cel din stanga vede in dreapta si invers)
pentru a largi campul vizual si pentru a nu “rata” obstacole din mijloc.

Tractiunea este realizata de 2 motoare prin cutia de viteze Tamiya, configurata la cel mai mare raport de reductie (203:1)

Software Design

Mediu de dezvolate: Eclipse cu plugin-ul AVR

Pentru comanda motoarelor am folosit ambele canale ale Timer1 in mod FastPWM. Logica de functionare este urmatoarea:

  • Cand un singur senzor vede un obstacol, unul din motoare primeste viteza mai mare, schimband factorul de umplere
  • Cand ambii senzori detecteaza un obstacol:
    • Robotul se deplaseaza cu spatele
    • Efectueaza o rotire pe loc
    • Continua cu deplasarea inainte

Senzorii Sharp scot la iesire o tensiune ce reprezinta distanta masurata ce respecta dependeta din datasheet. Programul nu calculeaza distanta, in schimb am gasit niste praguri de tensiune corespunzatoare unor distante pentru care robotul functioneaza corect.

Rezultate Obţinute

Robotul functioneaza dupa cum mi-am propus. Aproape ca nu exista situatie in care sa ramana blocat, exceptand cazurile in care nu are loc nici macar sa intoarca pe loc.

Cel mai bine ocoleste obstacole de culoare alba pentru ca acestea reflecta cel mai bine lumina de la senzori. L-am testat prin casa si peretii albi sunt detectati de la cea mai mare distanta, aproape de limita senzorilor.

Am testat evitarea obstacolelor si intr-un scenariu mai complicat: o zona ingradita, dar cu un singur loc de acces, o iesire, ceva mai mare decat robotul. Dupa cateva “ture”, reuseste sa gaseasca iesirea pentru a-si continua drumul.

Spre final am adaugat o noua functionalitate: un semnal audio intermitent, determinat de distanta masurata de senzori, asemanator unui sistem de senzori de parcare pentru masina.

Dimensiunile sunt destul de mari, dar asta se datoreaza acumulatorului care este supradimensionat pentru consumul necesar. Am hotorat sa folosesc ce aveam decat sa cumpar unul.

Concluzii

Proiectul mi se pare interesant in primul rand pentru ca robotul a devenit in totalitate autonom. Algoritmul de conducere este destul de simplu, dar reuseste sa scoata robotul din orice loc ar ajunge.

Nu mi s-a parut dificil de realizat, dar asta si din cauza ca am facut-o cu pasiune si aveam de mult dorinta de a construi un astfel de robot. Acum practic am o platforma, nu un robot, pe care o pot extinde si specializa aproape in orice scop.

Download

Jurnal

Bibliografie/Resurse

pm/prj2011/dtudose/obstacole.txt · Last modified: 2021/04/14 17:07 (external edit)
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