Introducere

Akebono - Rise of the machines

sumo_mismatch.jpg

Sumo este un sport traditional japonez in care un lupatator (rikishi) incearca sa isi impinga adversarul afara din suprafata circulara a unui ring (dohyō). Pasiunea pentru cultura japoneza si pentru robotica ne-a determinat sa alegem aceasta tema de proiect. Akebono, numele robotului nostru, apartine unuia dintre cei mai mari luptatori de sumo.

Robot-sumo este un sport in care doi roboti incearca sa se impinga reciproc in afara unui ring. Robotii folositi in aceste competitii se numesc sumobots. Provocarile din punct de vedere ingineresc sunt ca robotul sa isi gaseasca oponentul (adesea acest lucru se realizeaza cu ajutorul senzorilor infrarosu) si sa il impinga afara din arena. Robotul insusi trebuie sa evite sa paraseasca arena, cu ajutorul unor senzori care pot detecta contrastul benzii cu care este marcata marginea ringului. Cea mai des intalnita 'arma' a intr-o competitie de sumobots este o lama unghiulara amplasata in fata robotului, ea fiind inclinata la 45 grade si avand o intaltime ajustabila. Robotii sumo sunt impartiti din punct de vedere al modului in care sunt controlati in roboti controlati cu telecomanda sau roboti autonomi, dar si in categorii de greutate cu dimensiuni specifice.

Scopul proiectului este de a construi un robot autonom care care poate detecta si impinge un alt obiect care se afla in interiorul unui 'ring'. Consideram ring ca fiind o suprafata circulara delimitata de o banda trasata in contrast cu culoarea suprafetei.

Proiectul nostru poate servi si altor studenti pasionat de roboti ca un punct de plecare in ideea imbunatatirii si optimizarii ulterioare.

Descriere generala

Proiectul ne-a ajutat sa ne familiarizam cu realizarea de scheme electronice folosind microcontroller-ul ATMega16. De asemenea, acest proiect necesita si o parte practica de realizare a placutei electronice. Aceasta etapa implica si folosirea unor programe de dezvoltare folosite in industrie cum ar fi Eagle CAD. Un alt plus este si experienta de a programa sisteme bazate pe microcontrollere precum si capacitatea de a dezvolta un proiect hardware.

Mai jos este prezentata schema bloc a proiectului:

Placuta de programare sta la baza robotului alaturi de un sasiu custom-made pe care sunt montate doua motoare gearmotor de curent continuu. Motoarele sunt situate in spatele sasiului. Un al treilea punct de sprijin a fost introdus prin intermediul unei bile culisante.

Motoarele sunt controlate prin intermediul unui DUAL FULL-BRIDGE DRIVER L298. A fost construit un PCB special pentru controlul acestui driver de motoare si a circuitului sau de protectie. L298 primeste 8 intrari de la Atmega16: 4 intrari 0/1 care comanda sensul de rotatie al motoarelor (porturile C0-C3), 2 intrari de PWM pe pinii de ENABLE A, ENABLE de la OCR0(PB3) si OCR2(PD7) pentru a controla turatia motoarelor si VCC si GND de la extensia header a portului B.

Senzorul de culoare are rolul de a distinge intre culorile alb/negru pentru a detecta marginea ringului(neagra). Este construit cu ajutorul unei fotodiode si al unui fototranzistor. El este conectat la PORTUL A pe pinul 7 , pentru a transmite o tensiune analogica care va fi convertita cu ajutorul convertorului ADC de pe portul A. S-a stabilit valoarea de 3V ca limita de prag intre alb si negru.

Senzorul de distanta este un senzor Sharp, care poate detecta obiecte intre 20 - 150 cm. El trimite la iesire o tensiune in functie de distanta pana la obiect. El este conectat la Portul A pe pinul 4. S-a stabilit o distanta de 40 cm pentru detectia unui obiect prin analizarea tensiunilor de iesire.

Microcontroller-ul va primi semnale privind distanta unui obiect si daca a ajuns sau nu robotul la marginea ringului. In functie de aceste doua informatii el va lua decizii pe baza unui automat finit prezentat la capitolul Software Design.

Obiectivele robotului sunt :

- sa caute in interiorul unei suprafete un alt obiect si sa-l impinga in afara suprafetei

- sa nu depaseasca in timpul cautarii obiectului si a impingerii lui in afara suprafata care va fi marcata la exterior printr-un inel de alta culoare decat interiorul suprafetei (alb/negru).

Hardware design

Lista de piese:

Placa de baza

Designul Hardware pentru placa imprimanta standard si pentru modulele hardware suplimentare:

2 x Motor: 50:1 Metal Gearmotor 37Dx54L mm

H-Bridge L298

Schema placii pentru L298

PCB-ul placii pentru L298

pcb.jpg

Senzor distanta: Sharp GP2Y0A02YK0F Analog Distance Sensor 20-150cm

Senzor de culoare/luminozitate

Il folosim ca sa detectam alb/negru. Acest senzor este confectionat dintr-un fototranzistor + led Infrarosu + 2 rezistente

senzor_margine.jpg

Software design

In primul rand trebuie prezentat automatul finit care sta la baza AI-ului robotului :

Descrierea starilor :

SURVIVE

- Robotul se afla la marginea ringului

- Robotul va da cu spatele timp de 1 secunda

- Robotul va intra in starea HUNT

HUNT

- Robotul cauta obiectul in interiorul ringului invartindu-se pe loc

- Daca se detecteaza marginea ringului se va trece in starea SURVIVE

- Daca se detecteaza obiectul se trece in starea ATTACK

ATTACK

- Robotul a gasit obiectul si merge drept spre el

- Daca se detecteaza marginea ringului se va trece in starea SURVIVE

- Daca nu se mai detecteaza obiectul se trece in starea HUNT

Implementarea algoritmului

S-au folosit urmatoarele utilitare : pachetul de programe WinAVR care contine compilatorul avr-gcc pentru Windows si utilitarul Avrusbboot. Codul a fost scris in C.

Exista 5 functii importante :

Initialize() - initializarea registrilor

SampleEdge() - detectarea marginii ringului

SampleLong() - detectarea obiectelor

LeftMotor(int)- seteaza puterea motorului stang valori : [-100,100]

RightMotor(int) - seteaza puterea motorului drept valori : [-100,100]

Rezultate obtinute

Rezultatele obtintue sunt foarte bune : robotul functioneaza fara probleme si se misca foarte bine desi motoarele nu sunt solicitate 100% ci puterea maxima la care functioneaza este 70%. Robotul detecteaza obiecte le urmareste si se opreste la marginea ringului.

Video

watch

watch

Concluzii

Pe parcursul implementarii proiectului, am invatat sa testam componentele pe masura ce le lipeam (chiar daca nu aveam inca placutele interconectate, am testat individual puntea H si senzorii, corectand eventualele erori de proiectare).

Este captivant sa construiesti un robot si apreciem ca in urma acestui proiect am ramas atat cu experienta lucrului practic cu circuite electronice, cat si cu scheletul unui robot ce poate fi dezvoltat in numeroase alte proiecte.

Intentionam ca la anul sa participam cu Akebono la o competitie oficiala de sumo intre roboti.

Bibliografie

pm/prj2010/pgp/sumorobot.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