editor thumb

Robotul Minisumo MR1

autor:ing. Liviu-Daniel Budaciu copy:ing. Liviu-Daniel Budaciu sursa:Interna contact:bliviudaniel@yahoo.com
         

Incepem cu mini-sumo,
Aceste sisteme electro-mecanice, care executa miscari controlate si au o complexitate suficient de ridicata, pot fi puse sa faca multe treburi utile...

Nu ne putem permite sa construim roboti industriali sau de exploatare numai din pasiune…dar conceperea unui robot adaptat pentru o activitate specifica nu mai este o problema asa de mare pentru cel care a gandit si realizat integral un mini-sumo.

Conceperea si realizarea unui robot, chiar si "mini-sumo", dar precis in miscari, fiabil si robust, presupune cunostinte de mecanica si electronica - intervin calcule de forte, energii cinetice, lucru mecanic, impuls….rezistenta materialelor; in electronica avem partea de programare si electronica de putere (daca lucram cu forte mari); transmisie de date(daca sistemul este telecomandat)- .

Oricum un mini-sumo poate deveni o mini-uzina.

Se poate citi in numarul 2 al acestei reviste articolul "Aspecte Mecanice in Controlul Miscarii"

                                                           comentariu InfoElectronica

Robot Minisumo MR1

Minisumo este un joc de roboti, nedistructiv si foarte simpatic. Implica doi robotei autonomi si un ring de joc(numit dohyo). Scopul fiecarui robot este sa impinga adversarul in afara ringului. Pentru frumusetea jocului, exista anumite restrictii impuse, iar cele mai importante, dupa mine, sunt :

 

  • lungimea si latimea robotului trebuie sa nu depaseasca 10cm; nu exista nici o restrictie pentru inaltime
  • masa robotului nu trebuie sa depaseasca 0.5kg
  • robotul nu trebuie sa aiba arme; nu este permis sa produca distrugeri adversarului, in afara celor provocate de forta bruta de impingere
  • robotul nu trebuie sa se dezintegreze in timpul jocului
  • robotul trebuie sa fie complet autonom; nu este permis controlul de la distanta (prin IR, radio, fire)

Restrictiile impuse pentru minisumo imi par a fi o provocare foarte interesanta. La prima vedere, pot parea a fi contradictorii: robotul trebuie sa fie puternic si in acelasi timp trebuie sa indeplineasca restrictii severe de dimensiuni si greutate. Asta-i doar la prima vedere! Cred ca regulile minisumo deschid o usa larga pentru o gramada de creativitate si inventivitate si forteaza robotul sa fie mai mult "destept" decat puternic. Si abia de-aici incepe distractia! Fa-ti o jucarie desteapta, pune intr-insa cat vrei din desteptaciunea si indemanarea ta, apoi stai si vezi ce face...

Si mai e un motiv important. Un robot minisumo poate fi facut acasa si e acceptabil de ieftin (sigur, cineva poate sa-l faca foarte complex si scump si sa cheltuie o avere ca sa-l construiasca, daca vrea). Asta-i foarte important pentru mine fiindca-s un tip orientat pe practica. Dupa mine, minisumo e un foarte bun mod sa te apuci de robotica datorita complexitatii medii si a relativei usurinte de a fi construit. Ca sa-mi construiesc primul meu robotel minisumo, n-am avut nevoie de scule deosebite. Doar suruburi, piulite, cabluri, masina de gaurit, scule obisnuite cu care sa faci un cablaj, nimic special.

robot minisumo mr1

Specificatii

Nume

MR1

Dimensiuni

97mm x 96mm x 94mm (lungime x latime x inaltime)

Masa

360g fara baterii
490g cu baterii

Alimentare

1 baterie de 9V pentru partea electronica
4 baterii(acumulatori) R6 / AA de 1.5V pentru motoare

Microcontroler

PIC16LF877A - I/P la 20MHz, 5V

Motoare

2 x GM9 (motorul original a fost inlocuit cu motorul RM2)

Circuit de comanda pentru motoare

2 x L293D , cate un integrat pentru fiecare motor

Roti

2 x GMPW-9, 67mm diametru

Caucicuri

2 x GMTT, 71mm diametru

Senzori pentru detectia obiectelor

circuit separat bazat pe un PIC16F88 si 4 LED-uri IR cu 4 receptoare TSOP1738

Senzori pentru detectia marginii

2 x RPR-220 ROHM

Senzori pentru detectia liniei (in modul de functionare line follower)

3 x RPR-220 ROHM

Putere de impingere

testat pe o cutie de vopsea de 1600g

Comunicatie cu PC

comunicatie seriala RS232, 57600baud

Moduri de functionare

modul de functionare controlat prin telecomdanda
modul de functionare in diagnoza
modul de functionare autonom, cu executia programului selectat

Programe executate

programul de auto-calibrare
programul minisumo defensiv
programul minisumo ofensiv
programul de urmarire a liniei (line follower)

Soft-ul pentru microcontroler

Softul a fost scris in limbajul C pentru compilatorul Hi-Tech PICC
Il puteti descarca de aici.

Schema placii de control

O puteti vedea aici.

Schema senzorului pentru detectia adversarului

O puteti vedea aici. In schema pinii 5 si 14 ai PIC-ului sunt gresit conectati la Vcc si GND.

Detalii constructive


Vedere de sus
1 = microcontrolerul PIC16F877A
2 = conectorul de alimentare de 9V si butonul ON / OFF
3 = cuartz de 20MHz si condensatori de 22pF
4 = mufa seriala, MAX232 si condensatorii de 1uF
5 = stabilizatorul de tensiune 78L05 si ledul de prezenta a tensiunii
6 = jumper-ii de selectie a programului
7 = conectorul ICSP
8 = conectorul pentru driver-ul de motoare
9 = conectorul pentru modulul de detectie a adversarului
10 = conectorul pentru senzorii de detectie a liniei
11 = conectorul pentru senzorii de detectie a marginii
12 = ledul indicator de stare
13 = TSOP1738

robot minisumo mr1

Vedere din partea stanga

1 = motorul din stanga
2 = roata din stanga
3 = roata libera din spate(de fapt e o bila)
4 = lama de impins din fata
5 = conectorul de alimentare de 9V si butonul ON / OFF
6 = microcontrolerul PIC16F877A
7 = bateriile de 1.5V de jos
8 = jumper-ii de selectie a programului

 

robot minisumo mr1

Vedere din partea dreapta

1 = motorul din dreapta
2 = roata din dreapta
3 = roata libera din spate(de fapt e o bila)
4 = lama de impins din fata
5 = mufa seriala
6 = microcontrolerul PIC16F877A
7 = bateriile de 1.5V de jos
8 = receptorul IR TSOP1738

robot minisumo mr1

Vedere din fata

1 = LED-uri IR ce emit pulsuri de 38kHz pentru detectia adversarului
2 = receptoare IR de 38kHz
3 = lama de impins din fata
4 = conectorul pentru senzorii de detectie a liniei
5 = conectorul pentru senzorii de detectie a marginii
6 = conectorul pentru modulul de detectie a adversarului
7 = conectorul de alimentare de 6V pentru dirver-ul de motoare

Modulul de detectie a adversarului, usor vizibil din fata, este bazat pe emisia si receptia radiatiei IR modulata la 38kHz. Modulul este controlat de un microcontroler PIC16F88 ce comunica prin bus-ul I2C cu controlerul principal. Lama de impins din fata (in egleza ii zice "front scoop", o traducere mai desteapta n-am gasit) are forma concava jos.

robot minisumo mr1

Vedere din spate

1 = bateria de 9V pentru alimentarea partii electronice de control
2 = motoarele cu reductor
3 = conectorul pentru driver-ul de motoare
4 = roata libera din spate
5 = suportul si bateriile de 1.5V pentru alimentarea driver-elor de motoare(L293D)
6 = receptor IR de 38kHz
7 = LED IR ce emite pulsuri de 38kHz pentru detectia adversarului

robot minisumo mr1

Vedere de jos

1 = baterii de 1.5V
2 = roata libera din spate
3 = lama de impins din fata
4 = senzorii de detectie a marginii
5 = senzorii de detectie a liniei

Am pus bateriile (toate 5 au 180-220g) si motoarele cat mai jos posibil pentru a cobora centrul de greutate al robotului.

robot minisumo mr1

Vedere cu placa de baza data deoparte

1 = driver-ele de motor L293D
2, 4 = LED IR ce emite pulsuri de 38kHz pentru detectia adversarului
3, 5 = receptor IR de 38kHz
6 = conectorul de alimentare de 6V pentru dirver-ul de motoare
7 = motoarele cu reductor
8 = conectorii de alimentare a motoarelor

robot minisumo mr1

Vedere cu driver-ul de motoare dat deoparte

1 = motoarele cu reductor
2 = bateria de 9V
3 = LED IR ce emite pulsuri de 38kHz pentru detectia adversarului
4 = receptor IR de 38kHz
5 = conectorul de alimentare de 9V pentru electronica de control

robot minisumo mr1

Sasiul – detalii

robot minisumo mr1 robot minisumo mr1 robot minisumo mr1 robot minisumo mr1

Senzorul de obiecte si lama de impins - detalii

Senzorul de detectie a adversarului emite periodic 5 impulsuri modulate de aproximativ 600us, intercalate 5 perioade de pauza de aproximativ 600us. Aceasta se intampla, pe rand, pe fiecare din cele 4 led-uri emitatoare(3 in fata si 1 in spate). In acelasi timp cu emiterea impulsurilor, sunt numarate( folosind sistemul de intreruperi) reflexiile detectate de TSOP1738. Daca sunt numarate cel putin 3 reflexii, MR1 decide ca are un obiect in directia LED-ului emitator respectiv. Prin constructie, am protejat cu tub termocontractil fiecare led emitator, astfel incat sa un poata emite direct in vreo unul din TSOP-uri. In acest fel, in modul ideal, TSOP-urile "prind" doar reflexiile.

robot minisumo mr1

Schema de principiu de functionare a robotului

Afisajul LCD cu interfata I2C nu face parte din constructia robotului deoarece ar depasi masa admisa de 500g. Acesta poate fi adaugat pentru a inlesni depanarea soft-ului.

robot minisumo mr1

Proba cantarului

robot minisumo mr1

MR1 impinge 650g

In filmuletul asta, MR1 trebuie sa scoata afara din ring o cutie alba cu vopsea, cantarind aproximativ 650g.

robot minisumo mr1

MR1 impinge 1600g

In filmuletul asta, MR1 trebuie sa scoata afara din ring o cutie galbena cu vopsea, cantarind aproximativ 1600g.

robot minisumo mr1

MR1 impotriva camerei foto

In filmuletul asta, MR1 da afara din ring camera foto.

robot minisumo mr1

Moduri de functionare

Modul de functionare controlat prin telecomanda

Acest mod de functionare este cel mai prioritar. In momentul in care MR1 receptioneaza un cod valid de la telecomanda IR, executa comanda asociata acelui cod imediat, indiferent de ce anume facea la acel moment. MR1 intra in acest mod de functionare imediat ce a primit un cod valid si iese din modul de functionare controlat prin telecomanda doar atunci cand se apasa tasta OFF a telecomenzii.

robot minisumo mr1

Modul de functionare in diagnoza

Acest mod de functionare este al doilea ca prioritate. MR1 intra in modul diagnoza imediat ce primeste o comanda de diagnoza valida si iese din acest mod automat daca trec 5 secunde in care nu primeste nici o comanda de diagnoza. MR1 primeste comenzile de diagnoza prin interfata de comunicatie seriala, de la un software de diagnoza ce ruleaza pe PC. Fiecare comanda de diagnoza este compusa dintr-o cerere (de la PC catre MR1) si un raspuns (de la MR1 catre PC), dupa urmatoarea logica:

MR1 primeste cerere de la PC ---> MR1 executa cererea ---> MR1 trimite raspunsul catre PC

Rolul software-ului de diagnoza rulat pe PC este de a trimite comenzi simple de diagnoza catre MR1, cum ar fi: comenzi de control al miscarii robotului, comenzi de control al rotatiei motoarelor (directie de rotatie, viteza), comenzi de citire a senzorilor, comenzi de calibrare a senzorilor. Aceste comenzi sunt foarte utlile atunci cand doresc sa testez functionarea robotului.

De exemplu, mi s-a intamplat sa fac o modificare importanta in software si dupa ce am scris hex-ul in microcontroler sa vad ca robotul minisumo nu mai misca deloc. Intr-o asemenea situatie, prima intrebare care-mi trece in cap este: "oare s-a busit vreun motor sau senzor sau noul soft are un bug?". La intrebarea asta se poate raspunde foarte usor conectand cablul serial, pornind softul de diagnoza si trimitand comenzi de diagnoza catre MR1.

robot minisumo mr1

Modul de functionare autonom

Acesta este modul de functionare in care robotul minisumo se afla cea mai mare parte a timpului. In acest mod de functionare MR1 intra imediat dupa pornire si de fiecare data cand iese din unul din modurile de functionare de mai sus. In acest mod de functionare, robotul executa programul selectat prin jumperii de selectie a programului.

Programe executate

Robotul meu minisumo poate executa 4 programe diferite. Cele 4 programe sunt selectate cu ajutorul jump-erilor de selectie a programului.

robot minisumo mr1

robot minisumo mr1

robot minisumo mr1

Programul de auto-calibrare

Acest program are rolul de a calibra pragurile de "alb" si "negru" pentru senzorii de detectia a marginii si a liniei si de a stabili factorul de umplere pentru impulsurile de 38kHz ale senzorului de detectie a adversarului.

Pentru a calibra robotelul meu de minisumo sunt necesari urmatorii pasi:
1) pornesc robotul si astept ca ledul de stare sa clipeasca de 5 ori
2) pun robotul pe ring in zona neagra
3) astept ca ledul de stare sa clipeasca de 5 ori
4) pun robotul cu toti senzorii deasupra marginii albe
5) astept ca ledul de stare sa clipeasca de 5 ori
6) pun robotul la aproximativ 25-30 cm de obiectul pe care vreau sa-l detecteze
7) astept ca ledul de stare sa ramana aprins
8) in acest moment calibrarea este incheiata

Dar ce se intampla "inauntru", totusi? MR1 memoreaza valorile masurate de convertorul analogic-digital pentru fiecare senzor si pentru fiecare zona (alba/neagra). Pentru fiecare senzor, face o medie intre valoarea de alb si valoarea de negru si decide ca acea medie este valoarea de prag intre alb si negru. Apoi scrie in EEPROM toate valorile de prag. Fiecare senzor are, in acest fel, valoarea sa proprie de prag. Ceva asemanator face si cu senzorul de detectia a adversarului. Schimba factorul de umplere al impulsurilor de 38kHz pana cand "gaseste" obiectul din fata sa. Valorile posibile pentru factorul de umplere sunt 25%, 50% si 75%. Odata gasit factorul de umplere corect, acesta este memorat in EEPROM.

Programul minisumo defensiv

Executand acest program, robotul minisumo trebuie sa detecteze adversarul si sa incerce sa-l scoata afara din ring. In plus, MR1 trebuie sa nu iasa de unul singur afara din ring. O caracteristica care diferentiaza acest program de programul minisumo ofensiv, este ca MR1 face o manevra de eschivare imediat dupa trecerea celor 5 secunde de asteptare. Aceasta manevra are rolul de a evita un robot mai rapid care ar putea ataca direct si imediat dupa cele 5 secunde.

In diagrama urmatoare se pot vedea starile prin care trece robotul minisumo in timpul executiei acestui program:

robot minisumo mr1

Programul minisumo ofensiv

Este aproape identic cu programul minisumo defensiv, singura diferenta fiind ca lipseste manevra de eschivare dupa expirarea celor 5 secunde de asteptare.

Programul de urmarire a liniei (line follower)

Executand acest program, MR1 trebuie sa urmareasca traseul unei linii negre, de latime minim 1.5cm. MR1 este un robot minisumo, functionalitatea de urmarire a unei linii fiind secundara, nu insist asupra acestui program (si nici in software nu m-am complicat cu el).

Comentarii:

user-comment-thumb
Felicitarii dl .ing. Liviu-Daniel Budaciu! Este o jucarie dar aportul de inteligenta implementat este mare .Domeniul abordat este de avangarda pentru domeniile industriale si de la jocuri si jucarii sau inceput invatatul si toate lucrurile mari .Nu ati spun o noutate dar daca ai implementa un sistem cu logica fuzzy rezultatele ar fi si mai spectaculoase.Eu sunt cam batrin sa incep ceva de nivelu acesta dar felicit pe cei care au putere sa realizeze lucruri cu aport mare de inteligenta .Succes!
comentat de: vlad117816, 06-03-2009

Adauga comentariul tau:

comentariile inaccesibile
spacer
spacer