Forumul Scientia

IT şi electronică => Electronică => Subiect creat de: radhoo din Aprilie 27, 2013, 06:46:00 PM

Titlu: Robo-caine
Scris de: radhoo din Aprilie 27, 2013, 06:46:00 PM
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:
(http://www.pocketmagic.net/wp-content/uploads/2013/02/android-autonomous-companion-robot-4-300x199.jpg) (http://www.pocketmagic.net/2013/02/android-controlled-robot-part-2/#130121)

I-am distribuit spatiul interior, lasand loc pentru pachetul de baterii pe centru, care e destul de greu:
(http://www.pocketmagic.net/wp-content/uploads/2013/02/android-autonomous-companion-robot-11-300x199.jpg) (http://www.pocketmagic.net/2013/02/android-controlled-robot-part-2/#130206)

Creierul robotului e un microcontroler Atmega128. Am contruit o placuta care expune pinii pentru interconectare ulterioara usoara:
(http://www.pocketmagic.net/wp-content/uploads/2013/02/android-robodog-1-300x199.jpg) (http://www.pocketmagic.net/2013/02/android-controlled-robot-part-2/#130218)

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:
(http://www.pocketmagic.net/wp-content/uploads/2013/02/android-robodog-top-board-2-300x199.jpg) (http://www.pocketmagic.net/2013/02/android-controlled-robot-part-2/#130225)

I-am construit un h-bridge dublu, pentru controlul motoarelor:
(http://www.pocketmagic.net/wp-content/uploads/2013/03/dual_hbridge_motor_controller_04-300x199.jpg) (http://www.pocketmagic.net/2013/02/android-controlled-robot-part-2/#130327)
Iata un prim test:
Building a robot - the dual H-Bridge motor test (http://www.youtube.com/watch?v=miao-Yv_xWo#ws)

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 (http://www.youtube.com/watch?v=R6vbkIuUhjs#ws)
Designul e reusit, foarte compact, cu LCD-ul montat "scufundat" in partea din fata a robotului. Va afisa diverse informatii si parametrii interni.
(http://www.pocketmagic.net/wp-content/uploads/2013/02/android-robot-2-300x199.jpg) (http://www.pocketmagic.net/2013/02/android-controlled-robot-part-2/#130328)

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:
(http://www.pocketmagic.net/wp-content/uploads/2013/02/gps_errors-300x298.jpg) (http://www.pocketmagic.net/2013/02/android-controlled-robot-part-2/#130408)
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:
(http://www.pocketmagic.net/wp-content/uploads/2013/02/ultrasonic_beacon_receiver_3-300x199.jpg) (http://www.pocketmagic.net/wp-content/uploads/2013/02/ultrasonic_beacon_receiver_5-300x199.jpg)
Ultrasound guided human following robot (http://www.youtube.com/watch?v=9d8HmCxB158#ws)
Frontal, doi senzori pot determina directia de provenienta a semnalului si pozitia utilizatorului:
(http://www.pocketmagic.net/wp-content/uploads/2013/02/ultrasound_guided_robot_2-300x199.jpg) (http://www.pocketmagic.net/2013/02/android-controlled-robot-part-2/#130409)

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:
(http://www.pocketmagic.net/wp-content/uploads/2013/02/ultrasonic_detectors_2-300x199.jpg) (http://www.pocketmagic.net/wp-content/uploads/2013/02/ultrasonic_enclosure_4-300x199.jpg)

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:
(http://www.pocketmagic.net/wp-content/uploads/2013/02/robot_cool_1-300x199.jpg) (http://www.pocketmagic.net/2013/02/android-controlled-robot-part-2/#130410)
(http://www.pocketmagic.net/wp-content/uploads/2013/02/robot_cool_5-300x199.jpg) (http://www.pocketmagic.net/2013/02/android-controlled-robot-part-2/#130410)

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.
Titlu: Răspuns: Robo-caine
Scris de: sumalan dorin din Aprilie 28, 2013, 02:52:35 AM

Felicitari pentru proiect e foarte frumos ,iar de sugestii?pai eu daca as fii in locul tau m-as gandi la o afacere pe deasupra suna si fain apropo ce comic ar fii sa il faci in asa fel incat cand fluieri sa se puna in miscare.
Titlu: Răspuns: Robo-caine
Scris de: radhoo din Mai 03, 2013, 02:26:46 PM
Ideile sunt foarte bune, daca as avea timp mai mult probabil ca as adauga si astfel de optiuni.

Dar iata ca am finalizat acest proiect, lung, dar si foarte interesant, din care am invatat multe.

Ca ultim pas, am construit emitatorul de ultrasunete, sub forma unui modul usor de tinut in mana. Cu un buton emit utlrasunetele, pe care robotul le detecteaza pentru a ma putea urmari.

Detaliile de contructie sunt postate aici: http://www.pocketmagic.net/2013/02/android-controlled-robot-part-2/#130501 (http://www.pocketmagic.net/2013/02/android-controlled-robot-part-2/#130501)

Iata doua filme demonstrative  - se comporta bine si afara:
Robot Dog following me -2- (http://www.youtube.com/watch?v=ECS1E6e6xes#ws)

Robot Dog following me -1- (http://www.youtube.com/watch?v=omh-m_DDcfw#ws)
Titlu: Răspuns: Robo-caine
Scris de: meteor din Mai 03, 2013, 03:56:18 PM
Ideea cu fel de fel de unde si microsunet, mie nu imi place deloc.

Insa la general, sunt de parere ca esti bravo, ca vrei ceva sa faci.

Daca scopul era acela, de a construi masina sa fie o copie cit mai asemanatoare cu un ciine, atunci eu asa as prefera:

- Fiecare om se spune ca are misorul sau caracteristic, fie aceasta e scris din codul genetic, pina la urma nu stiu. Adica sa se faca o asa masina care sa recunoasca stapinul dupa miros. Ce e drept aceasta parte poate nu e bine clarificata aceasta parte tehnica, si mai are un minus ca ar ingreuna aparatura si gabaritul la bord.

- De ce sa nu recunoasca stapinul dupa infatisare ?! Cite s-au facut in ziua de azi, ehehe numai sa le luam dea gata. Sunt doar programe la calculator care recunosc stapinul dupa infatisare.
Sau, daca vreai sa fie un robot- ciine (ca atare totii suntem roboti, doar ca putini isi dau seama..) care sa recunoasca cert stapinul sau, sa aiba la bord o camera, care daca numai ar prinde in vedere ochil stapinului, indata sa identifice in baza sa de date daca el este.

- Robotul mai trebue sa aiba un sir mare mare de clitati, multe ca nici nu ma apuc sa le scriu pe toate.

- Ca atare, de ce sa nu facem ca robotul sa recunoasca stapinul dupa vocea sa ?!
Este cea mai rentabila si simpla solutie.
Se stie ca coardele vocale la fiecare om, fac sunete diferite, cu frecventele pe anumite intervale inchise.
Rar si accidental (dupa o betie, sau anumite traume  ;D), sau daca are un frate geaman, sau tata- fiu, ca sa se intimple ca vocile sa fie neindentificabile cine e stapinul adevarat.
Insa nu e nimic strasnic, caci si ciinele natural in asa cazuri poate da erori la identificarea corecta cine e stapinul ( eu inusi cind trec citeodata pe la ciinele meu, el se sparie si incepe a latra,  ;D)

Sunt doar programe la mobile, care nu permit accesul/ pornirea mobilului atit timp cit nu spui cu vocea ta o anumita parola.

Acest caz mai are un avantaj, stapinul nu mai trebue sa umble cu telecomanda in mina, si sa ii schimbe bateriile, ci pur si simplu sa cheme chiinele pe nume.

Impreuna unite toate trei variante ar da un robot- chine foarte asemanator cu ciinele natural (din acest punct de vedere: identificarea stapinului), si chiar mai inteligent.
Titlu: Răspuns: Robo-caine
Scris de: meteor din Mai 04, 2013, 12:12:49 PM
Calitatea de identificare a stapinului, este negru sub unghii..

Itii de toate trebue sa creem o lista cu obective, si nu pur si simplu, ci cu un continut logic.

Scopul principal este a crea o copie cit mai asemanatoare a ciinelui natural cu un ciine artificial ?!

Sau, sa creem ceva asemanator si chiar mai dezvoltat ?!

- Dupa chip si infatisare ciinele sa samene cu cel natural.
      - Varianta cu rotile cred ca nu e binevenita (insa este plauzibil oricum prin faptul ca ai curajul si dorinta de a face).
      - Trebue construit sistemul locomotor, astfel incit aproape orice miscare sa o poata face ca un ciine natural. Aici la fel nu e simplu, ca ar trebui (o varianta) sa treci la hidraulica si etc., aceasta din urma ar mari gabaritul si masa, ceea ce nu e prea de dorit (caci mai avem foarte multe de adaugat..).
      - Alimentatia. Sa trecem robotul sa se alimenteze cu produse cu care se alimenteaza ciinele natura, in ziua  de azi este imposibil.. S-ar putea asa variante spre exemplu: Alimentarea la lumina solara(aceasta ar insemna ca el sa aiba placute fotovoltaice), sau alimentarea linga o priza electrica ( de dorit fara conductor). Alimentarea nicidecum nu trebue stapinul sa o faca, robotul in cadrul programului are o conditie, ca in cazul cind energia din sistem ajunge la o limita minimala, robotul trebue sa inceapa asi cauta harana (energie), la acesta cum se face si aici e foarte mult de vorbit..
- In programul principal trebue sa fie niste legi de baza, fundamentale pe care robotul sa le respecte:
      - Sa nu faca rau atit direct cit si indirect stapinului sau si oamenilor obisnuiti care nu aduc rau stapinului.
Rau direct: ar insemna raul(paguba) comisa catre stapin in sens direct: bataie, jignire prin cuvinte urite, furt flagrant, etc.
Rau indirect: ar insemna raul care se savirseste, insa el nu este vizibil, spre exemplu: atragerea stapinului in un joc anumit de azart, de un anumit "prieten" , initial promitinduise ca va fi o pur si simplu joaca, in realitate fiind scopul de a i se stoarce banii.
Determinarea raului indirect, este greu si necesita o gindire mai profunda, asa incit sa nu comita robotul erori.
      - Sa nu faca rau lui atit direct cit si indirect (spre exemplu daca tu sari si pasesti o anumita groapa, atunci robo- ciinele tau  sa nu te urmeze, ca in acest caz el isi poate aduce daune), si anumitor clase de obiecte. Si aici e mult de vorbit..
- In caz ca apar probleme la robot, probleme pe care robotul nu le poate rezolva, atunci el sa se adreseze stapinului sau (acesta [felul de adresare] dupa cum doreste constructorul, adica se poate fie prin anumite gesturi, fie pur si simplu robotul sa vorbeasca, ultimul variant insa face ca robotul sa nu mai semene ca cel natural).
- Daca stapinul ii indica/ explica ceva ce nu trebue/ trebue de facut, robotul sa memorizeze si sa respecte aceste conditii, pina cind ele nu vor fi schimbate.
Aceasta se face prin aceea, caci ceea ce vorbeste omul va fi scris text in mintea robotului (cu toate semnele de punctuatie desigur, si desigur recunoscut pentru o vorbire corecta [se poate de facut si pentru cea ce are erori..]).       
Apoi, se verifica inca odata fiecare cuvind, daca sunt cuvinte care nu sunt definite in baza de date ce o are robotul, atunci robotul va ruga stapinul sa ii defineasca noua notiune ce inseamna (in termeni axiomatici).
Apoi cu ajutorul conjunctie propozitiei se va construi schemele. Parcurgerea se va efectua de la propozitia simpla la principala, sau invers ?! Se pare ca nici una nici alta, se pare ca e corect sa se indeplineasca ordinea propozitiilor in dependenta de verbul pe care il au, intii atributive, conditionale, etc.
- Fiecare problema se rezolva prin o anumita metoda.
In memorie vor fi inscrise un anumit sir lung de metode.
In cazul in care robotul are de rezolvat o problema anumita aparuta, el incepe parcurgerea si indeplinirea fiecarei metode in parte, in cazul in care nici o metoda nu duce la solutionarea problemei, robotul nu are solutie la rezolvarea problemei cutare, si in memorie se inscrie o conditie: a fi la curent cum se va rezolva cutarea problema (de catre stapin sau altcineva).
Cind se gaseste rezolvarea problemelor nerezolvate, se va memoriza metoda noua aparuta.
Aceasta inseamna un pic de evolutionism.

etc.
Titlu: Răspuns: Robo-caine
Scris de: meteor din Mai 05, 2013, 11:45:09 PM
---
Titlu: Răspuns: Robo-caine
Scris de: radhoo din Mai 23, 2013, 09:33:11 PM
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- (http://www.youtube.com/watch?v=UuYxDldQtn4#ws)

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- (http://www.youtube.com/watch?v=1ZRPEJxP-IY#ws)

Intregul jurnal al acestui proiect e disponibil aici: http://www.pocketmagic.net/2013/02/android-controlled-robot-part-2 (http://www.pocketmagic.net/2013/02/android-controlled-robot-part-2)
Titlu: Răspuns: Robo-caine
Scris de: radhoo din Mai 29, 2013, 03:04:08 PM
site-ul Hack A Day a publicat un articol despre acest robot.
http://hackaday.com/2013/05/28/wireless-rover-with-android-control/ (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.