Ştiri:

Forumul RUFOn este din nou funcțional după ce a primit un upgrade important de software și rulează acum pe un server nou.

Main Menu

Robo-caine

Creat de radhoo, 27 Aprilie 2013, 18:41:46

« precedentul - următorul »

0 Membri şi 1 Vizitator vizualizează acest subiect.

radhoo

De un timp lucrez la un robot care trebuie sa-si urmareasca utilizatorul, intocmai ca un... caine. Pare simplu , dar sarcina se complica cand e sa o pun in practica.

Am pornit cu un rover 4x4:


I-am distribuit spatiul interior, lasand loc pentru pachetul de baterii pe centru, care e destul de greu:


Creierul robotului e un microcontroler Atmega128. Am contruit o placuta care expune pinii pentru interconectare ulterioara usoara:


In acest punct planul e urmatorul: montez un modul GPS pe robot, si un modul bluetooth (amandoua conectate prin uart la atmega128) , utilizatorul foloseste un telefon cu GPS si bluetooth (de ex. un telefon cu Android). Telefonul se conecteaza prin bluetooth la robot, si raporteaza pozitia proprie luata prin GPS. Robotul, folosind GPS-ul propriu, calculeaza cum trebuie sa se deplaseze ca sa poata ajunge langa utilizator, si sa-l insoteasca, "la pas".
Modulul GPS montat pe robot, si codul pentru interpretarea NMEA au fost implementate cu succes:


I-am construit un h-bridge dublu, pentru controlul motoarelor:

Iata un prim test:
Building a robot - the dual H-Bridge motor test

Am conectat si modulul de Bluetooth, si am scris un soft pentu Android, care sa-mi permita controlul de la distanta (max 10 m) al robotului:
Android Controlled Rover Robot
Designul e reusit, foarte compact, cu LCD-ul montat "scufundat" in partea din fata a robotului. Va afisa diverse informatii si parametrii interni.


Vesti destul de proaste. Erorile GPS sunt prea mari pentru a permite robotului sa urmeze utilizatorul (de ordinul zecilor de metri). Asta inseamna ca in loc sa identifice pozitia corecta a utilizatorului, robotul ar "gravita" la intamplare pe o raza de 10m in jurul pozitiei reale a acestuia, complet inacceptabil pentru scopul propus:

Am decis sa schimb abordarea: utilizatorul va tine un emitator de ultrasunete, iar robotul , printr-o retea de sensori va detecta pozitia acestuia, si se va deplasa corespunzator. Am realizat PCB-urile pentu acestia si primele rezultate arata promitator:

Ultrasound guided human following robot
Frontal, doi senzori pot determina directia de provenienta a semnalului si pozitia utilizatorului:


Testele au aratat nevoia de a monta inca 3 senzori, unul in spate, unul in stanga si unul in dreapta. Acestia trei vor determina rotirea robotului spre sursa semnalului. Apoi senzorii frontali vor detecta directia exacta si vor comanda deplasarea robotului:


De dragul esteticii, am adaugat leduri frontale albe, si rosii de pozitie in spate. In fata am montat un senzor de distanta cu infrarosii, pentru a putea evita obstacolele. Arata foarte bine:



In curand sper sa termin softul si sa pot realiza un test afara. Miscarea nu e inca suficient de fluida , dar lucrez sa o imbunatatesc. Sugestiile voastre sunt binevenite.

radhoo

Pe ultima suta de metri, am facut unele modificari in software, care au imbunatatit felul in care se comporta robotul:

1) Pentru partea de comportament autonom, secventa de urmarire a utilizatorului:
Am imbunatatit algoritmul care detecteaza sursa semnalelor ultrasonice, dar si logica folosita in deplasare, care urmareste sursa semnalului: acum robotul va urmari utilizatorul cu o mai buna precizie, dar si viteza va varia in functie de semnalul detectat: daca robotul simte utilizatorul la o distanta mai mare, se va indrepta inspre acesta cu o viteza mare, in timp ce pentru apropiere, va folosi viteze mai mici. Calculele viteza/distanta nu sunt liniare, si am cautat cea mai buna formula. Sunt multumit de rezultat, se poate vedea un progres, fata de cele doua filme anterioare:
Robot Dog following me -3-

2) Pentru partea de telecomandare, unde utilizatorul comanda robotul de la distanta, folosind un telefon, mi-a venit idea de a transmite datele citite de senzorul frontal, date care indica distanta pana la cel mai apropiat obstacol, catre telefon, si sa reprezint grafic apropierea de un eventual obstacol. Astfel programul Android acum afiseaza o linie rosie, care se apropie sau se indeparteaza de centru in functie de cat de aproape se afla robotul de un obstacol detectat. Functioneaza ca un radar, si permite controlul la distanta si cand nu putem vedea robotul: in acest fel il pot deplasa fara sa il lovesc:
Android Controlled Rover Robot -2-

Intregul jurnal al acestui proiect e disponibil aici: http://www.pocketmagic.net/2013/02/android-controlled-robot-part-2

radhoo

site-ul Hack A Day a publicat un articol despre acest robot.
http://hackaday.com/2013/05/28/wireless-rover-with-android-control/

E al treilea proiect DIY care imi apare la ei, dupa aparatul de sudura in puncte si statia de monitorizare a fondului de radiatii gamma.