Sunteți pe pagina 1din 12

Comanda i controlul robotului hexapod

Introducere
Navigarea roboilor mobili, ntr-un mediu dinamic i incert, reprezint o direcie prioritar de cercetare n domeniul roboticii. Pentru a naviga n siguran intr-un mediu interior necunoscut, robotul trebuie s urmreasc o anumit cale, numit i traiectorie i n acelai timp s rezolve situaiile noi care pot aprea. De exemplu, robotul trebuie s fie capabil s evite obstacolele din mediu i s rezolve erorile senzorilor . Alegerea tipului de locomoie pentru un robot mobil este un aspect principal n proiectarea acestuia. Multe dintre mecanismele de locomoie utilizate n prezent sunt inspirate din mecanismele biologice similare, deoarece acestea reuesc s se deplaseze ntr-o larg varietate de medii dificile. Locomoia cu picioare necesit multe grade de mobilitate, motiv pentru care complexitatea roboilor pitori este mai mare dect cea a vehiculelor cu roi. Din punctul de vedere al randamentului locomoiei, cea cu picioare este mult mai eficient pe teren accidentat fa de cea cu roi, deoarece presupune un contact punctiform cu solul. Robotul hexapod (figura 1) este dotat cu un numr de 18 servomotoare care permit configuraia spaial a picioarelor. Comanda servomotoarelor se realizeaz prin intermediul controller-ului SSC-32, acesta fiind accesat la rndul lui prin intermediul portului serial al calculatorului, sau poate fi comandat de ctre microcontroller-ul Basic Atom. Configuraia picioarelor cu trei grade de libertate (figura 2) ofer robotului posibilitatea de a se deplasa n orice direcie (micare de translaie), de a se roti pe loc sau n mers i de a-i modifica nlimea.

Fig. 1. Robotul hexapod: a configuraia hexagonal; b- configuraia rectangular

Fig.2. Configuraia unui picior robotului hexapod

Servomotorul
nainte de a ilustra cum se folosete regulatorul SSC-32 pentru a controla mai multe servomotoare, vom explica ce este un servomotor i vom defini modalitile de control. Servomotorul (figura 3) este un dispozitiv la care arborele poate fi poziionat la un unghi bine stabilit prin transmiterea unui semnal codat ctre acesta. Att timp ct semnalul este prezent pe linia de comand, acesta va menine poziia unghiular cerut.

Fig.3. Exemplu Servomotor HS-475HB

Semnalul const din impulsuri pozitive cu o durat variind ntre 0.9 i 2.1 ms (cazul poziionrii ntre -45 i +45 - figura 4, stnga), repetate de 50 de ori pe secund (deci la fiecare 20 ms). Servomotorul i poziioneaz axul proporional cu durata pulsului. Servomotoarele au n general o raz mecanic de aciune mai mare de 90, putnd efectua o micare pe un domeniu de 180. Totui, unele servomotoare pot fi avariate cnd sunt comandate peste limitele lor mecanice. SSC-32 permite utilizarea acestei raze suplimentare

de aciune. Valoarea unei poziii de 500 corespunde unui impuls de 0.5 ms (unghi de -90), iar o valoare de 2500 corespunde unei durate a pulsului de 2.5 ms (unghi de +90). Schimbarea unei uniti n valoarea poziiei produce o schimbare de 1 s n durata pulsului. Rezoluia poziionrii este de 0.09 (180/2000).

Fig.4. Poziionarea arborelui servomotorului funcie de limea semnalului primit pe linia de comand.

Un servomotor conine motorul propriu-zis, circuite de control i reductor, toate ncapsulate ntr-o singur carcas (figura 5). Circuitul de control monitorizeaz unghiul la arbore. Dac este cel corect, atunci motorul este oprit n acea poziie.

Fig. 5. Construcia unui servomotor de tip Futaba S-148.

Construcia hexapodului presupune iniial ca servomotoarele s fie poziionate n centrul domeniului lor de rotaie. Exist dou modaliti pentru efectuarea acestui lucru cu SSC-32. Se poate folosi interfaa LynxTerm (figura 6) prin scrierea unei comenzi simple: #0 P1500. Aceasta activeaz servomotorul conectat pe canalul 0 i i poziioneaz arborele la 0. A doua modalitate este utilizarea butonului All 1500. Centrarea unui servomotor necesit generarea unui impuls pozitiv de 1.5 ms care se repet la fiecare 20 ms.

Fig.6. Interfaa Lynx SSC-32 Terminal

Un servomotor prezint la ieire 3 cabluri identificate prin culori: negru (masa), rou (alimentare la +5V) i galben (control Pulse Coded Modulation).

Regulatorul SSC-32
SSC-32 este un regulator cu 32 de canale avnd o rezoluie de 1s care asigur o poziionare precis i micri fine ale servomotoarelor, cu o gam cuprins ntre 0.50 ms i 2.50 ms pentru un domeniu de rotaie de aproximativ 180. Controlul micrii poate fi de tip rspuns imediat, controlat n vitez, cu control al duratei micrii, sau o combinaie ntre acestea. Aplicaia soft disponibil pentru controlul servomotoarelor prin intermediul regulatorului SSC-32 este LynxTerm (figura 6) a crui secven de comand are urmtoarea form general, pentru micarea unui servomotor sau grup de servomotoare:

# <ch> P <pw> S <spd> # <ch> P <pw> S <spd> T <time> <CR> unde: <ch> = numrul canalului de comandat, 0:31; <pw> = durata pulsului n microsecunde, 500-2500; <spd> = viteza de micare n s pe secund pentru un canal (opional); <time> = timpul n ms pentru ntreaga micare, afecteaz toate canalele, max. 65535 (opional). <esc> = anuleaz comanda curent, ASCII 27; <CR> = apsare tasta ENTER. Exemplu pentru micarea unui servomotor: #5 P1600 S750. Aceast comand va mica servomotorul de pe canalul 5 la poziia identificat cu 1600 (aproximativ +9, dac poziia de mijloc 0 se obine pentru valoarea prescris de 1500). Micarea se va efectua cu o vitez de 750 s/s pn se va atinge destinaia prescris. Pentru o mai bun nelegere a argumentului vitez se consider c n 1000 s de micare rezult o rotaie de aproximativ 90. Pentru o valoare a vitezei de 100 s/s ar nsemna c servomotorul s-ar mica 90 n 10 secunde. Viteza maxim pentru aceste tipuri de servomotoare ar putea fi 3500 s/s. Instruciunea poate conine referiri la mai multe canale care se doresc a fi controlate n acelai timp. De exemplu: #1 P1600 #3 P1200 #4 P2200 T2500 <CR> servomotorul 1 va fi poziionat la poziia 1600, servomotorul 3 la poziia 1200 iar servomotorul 4 la poziia 2200 (poziiile corespund unor unghiuri diverse care se pot calcula ca mai sus), toat micarea efectundu-se n 2.5 secunde. Toate servomotoarele pornesc i se opresc n acelai timp.

Alimentarea echipamentului
Figura 7 prezint schema de alimentare a echipamentului, care permite servomotoarelor s fie alimentate independent de partea electronic. Pentru ntregul ansamblu sunt necesare dou surse de alimentare, una de 6 Vcc pentru alimentarea servomotoarelor, i una de 9 Vcc pentru alimentarea prii logice. Exist posibilitatea alimentrii ntregului ansamblu de la sursa de 6 Vcc, prin plasarea jumperului VL=VS1, dar aceast variant nu este recomandat n configuraia de fa.

Fig.7. Schema de alimentare a regulatorului SSC-32.

Regulatorul SSC-32 prezint dou iruri de porturi denumite VS1 i VS2, fiecare coninnd cte 16 porturi pentru conectarea servomotoarelor. n configuraia din figura 7, cele dou iruri de porturi sunt alimentate de la aceeai surs de alimentare. Exist ns i posibilitatea alimentrii irurilor de porturi de la surse de alimentare diferite, caz n care trebuie ndeprtai cei doi jumperi denumii VS1=VS2. Numerele porturilor la care sunt conectate servomotoarele hexapodului sunt prezentate n figura 8.

a b cazul hexapodului rectangular.

Fig.8. Porturile asignate servomotoarelor Hexapodului: a cazul hexapodului hexagonal;

Controlul robotului hexapod prin intermediul programului Matlab


Matlab (Matrix Laboratory) este un mediu de dezvoltare pentru calcul numeric i analiza statistic ce conine limbajul de programare cu acelai nume, creat de MathWorks. Acest program permite manipularea matricilor, vizualizarea funciilor, implementarea algoritmilor, crearea de interfee i poate interaciona cu alte aplicaii. Un pachet adiional, Simulink, ofer posibilitatea de a realiza simulri ale sistemelor dinamice utiliznd modele matematice. Pentru a comanda robotul hexapod prin intermediul programului Matlab, trebuie urmai urmtorii pai: 1) Definirea unui obiect virtual denumit hexapod este de fapt un obiect virtual tip port serial asociat portului COM la care este conectat regulatorul SSC-32: Hexapod = serial (COM4,BaudRate, 115200) Rezultatul afiat n urma execuiei este de forma:
Serial Port Object : Serial-COM3 Communication Settings Port: COM3 BaudRate: 115200 Terminator: 'LF' Communication State Status: closed RecordStatus: off Read/Write State TransferStatus: BytesAvailable: ValuesReceived: ValuesSent: idle 0 0 0

2) Pentru a comunica cu dispozitivul extern, obiectul virtual este conectat la portul serial prin intermediul funciei FOPEN: Fopen (Hexapod) 3) Pentru a trimite instruciuni ctre controller-ul SSC32, este setat parametrul CR (Carriage Return) astfel: Hexapod.Terminator = CR n acest moment, pot fi comandate oricare dintre servomotoare sau toate, prin transmiterea unui ir de caractere cu forma prezentat ctre portul serial conectat la placa SSC-32. Toate servomotoarele vor fi poziionate n poziia median ntr-un timp de 2 secunde:

fprintf(Hexapod,'#0 P1500 #1 P1500 #2 P1500 #4 P1500 #5 P1500 #6 P1500 #8 P1500 #9 P1500 #10 P1500 #16 P1500 #17 P1500 #18 P1500 #20 P1500 #21 P1500 #22 P1500 #24 P1500 #25 P1500 #26 P1500 T2000')

Comanda fclose (hexapod) este folosit pentru a deconecta obiectul virtual creat de la portul serial.

Exemplu de program Matlab pentru controlul robotului hexapod rectangular.


hexapod=serial('COM3','Baudrate',115200) fopen(hexapod) hexapod.Terminator='CR' %initializare fprintf(hexapod,'#0P1500 #1P1500 #2P1500 #4P1500 #5P1500 #6P1500 #8P1500 #9P1500 #10P1500 #16P1500 #17P1500 #18P1500 #20P1500 #21P1500 #22P1500 #24P1500 #25P1500 #26P1500 T1000')% all 1500 pause(1) fprintf(hexapod,'#9P1750 #1P1750 #21P1250 T500') %ridicare 1,3,5 pause(0.5) fprintf(hexapod,'#8P1700 #0P1700 #20P1300 #4P1300 #16P1700 #24P1700 T700') %pozitionare 1,3,5 /deplasare 2,4,6 pause(1) for i=1:2 fprintf(hexapod,'#9P1500 #1P1500 #21P1500 T500') %asezare 1,3,5 pause(0.5) fprintf(hexapod,'#5P1750 #17P1250 #25P1250 T500') %ridicare 2,4,6 pause(0.5) fprintf(hexapod,'#4P1700 #16P1300 #24P1300 #8P1300 #0P1300 #20P1700 T700') %pozitionare 2,4,6 , deplasare 1,3,5 pause(0.5) fprintf(hexapod,'#5P1500 #17P1500 #25P1500 T500')%asezare 2,4,6 pause(0.5) fprintf(hexapod,'#9P1750 #1P1750 #21P1250 T500') %ridicare 1,3,5 pause(0.5) fprintf(hexapod,'#8P1700 #0P1700 #20P1300 #4P1300 #16P1700 #24P1700 T700') %pozitionare 1,3,5 /deplasare 2,4,6 pause(0.5) end fclose(hexapod) clear hexapod

Exemplu de program Matlab pentru controlul robotului hexapod hexagonal.


hexapod=serial('COM1', 'BaudRate', 115200) fopen(hexapod) hexapod.Terminator='CR' fprintf(hexapod,'#0P 1500 #1 P1500 #2 P1500 #4 P1500 #5 P1500 #6 P1500 #8 P1500 #9 P1500 #10 P1500 #16 P1500 #17 P1500 #18 P1500 #20 P1500 #21 P1500 #22 P1500 #24 P1500 #25 P1500 #26 P1500 T2000') pause(2) fprintf(hexapod,'#1 P1300 #2 P1280 #9 P1300 #10 P1280 #21 P1700 #22 P1720 T2000')% impingere initiala pe 1,3,5 % pause(1) fprintf(hexapod,'#5 P1800 #17 P1200 #25 P1200 T2000')%ridicare 2,4,6% pause(1) for i=1:2 fprintf(hexapod,'#4 P1800 #16 P1200 #24 P1500 #25 P1500 #26 P2150 T2000')%pozitionare 2,4,6% pause(1) fprintf(hexapod,'#1 P1050 #2P850 #8 P1200 #9 P1300 #10 P1280 #20 P1800 T2000')%deplasare pe 1,3,5% pause(1) fprintf(hexapod,'#5 P1300 #6 P1280 #17 P1700 #18 P1720 #25 P1850 T2000') %impingere pe 2,4,6% pause(1) fprintf(hexapod,'#1 P1800 #2 P1500 #9 P1800 #10 P1500 #21 P1200 #22 P1500 T2000') %ridicare 1,3,5% pause(1) fprintf(hexapod,'#0 P1800 #8 P1500 #9 P1500 #10 P850 #20 P1200 T2000')%pozitionare 1,3,5% pause(1) fprintf(hexapod,'#4 P1200 #16 P1500 #17 P1950 #18 P2150 #24 P1800 #25 P1700 #26 P1720 T2000')%deplasare 2,4,6% pause(1) fprintf(hexapod,'#21 P1700 #22 P1720 #1 P1300 #2 P1280 #9 P1150 T2000')%impingere 1,3,5% pause(1) fprintf(hexapod,'#5 P1800 #6 P1500 #17 P1200 #18 P1500 #25 P1200 #26 P1500 T2000')%ridicare 2,4,6% end fclose(hexapod) clear hexapod

Comanda robotului hexapod prin intermediul microcontroller-ului Basic Atom


Basic Atom 28 este un microcontroller cu un procesor puternic, uor de programat i cu o diversitate de porturi de intrare-ieire. Placa Mini-ABB uureaz att accesul la porturile I/O ale controller-ului Basic Atom, ct i interfaarea acestuia cu PC-ul i cu dispozitivele pe care urmeaz s le coordoneze. Pentru conectarea microcontroller-ului Basic Atom la regulatorul SSC-32, trebuie urmrii urmtorii pai: 1. Setarea ratei de transfer (Baud Rate) a controller-ului SSC-32 la valoarea 38400 prin intermediul jumperilor denumii Baud, conform tabelului inscripionat pe cablaj (figura 9);

Fig.9. Schema de interconectare i alimentare a plcilor Mini-ABB i SSC-32.

2. Eliminarea jumperilor denumii RX i TX de pe controller-ul SSC-32 i conectarea prin intermediul unui conector cu 2 fire (negru i galben) la portul 15 al plcii Mini-ABB, conform figurii 9; 3. Eliminarea de pe placa Mini-ABB a jumperului VS=VL; 4. Conectarea sursei de alimentare de 9 Vcc la portul VL al plcii Mini-ABB. Programarea microcontroller-ului Basic Atom se face prin intermediul programului BasicMicro ATOM IDE versiunea 5310. n vederea programrii, microcontroller-ul se conecteaz la portul serial al calculatorului prin intermediul unui cablu serial de tipul RS232. Pentru crearea unui nou program, din meniul File al programului BasicMicro ATOM IDE se va selecta cmpul New. n acel moment va aprea o fereastr n care trebuie aleas locaia i numele noului fiier program cu extensia .BAS. n urma apsrii butonului Open, va apare o nou fereastr intitulat HexFile Chip selection, prin intermediul creia se poate selecta familia dispozitivului (Device Family), n cazul nostru BasicAtom, i numele procesorului (Processor Name), n cazul nostru BASICATOM28. n urma apsrii butonului OK, fereastra programului va arta ca n figura 10.

Fig.10. Fereastra programului BasicMicro ATOM IDE.

Fereastra programului este divizat n trei pri principale: Fereastra File Explorer (n partea stng) afieaz directoarele i fiierele; Fereastra Build (n partea dreapt, jos) afieaz mesajele de compilare i erorile;

Fereastra ce poart numele programului creat (n partea dreapt, sus), fereastr n care se vor tasta liniile de program pentru microcontroller. Pentru a verifica automat sintaxa programului scris, se apas pe butonul Compile existent n partea stng a barei de instrumente a programului. Comenzile i sintaxa programului sunt prezentate n manualul microcontroller-ului Basic Atom, disponibil pe siteul www.lynxmotion.com . Pentru ncrcarea programului n memoria microcontroller-ului Basic Atom, se va apsa pe butonul Program din bara de instrumente a programului. n figura 11 este prezentat un exemplu de program n limbaj BASIC pentru micarea piciorului din dreapta fa al hexapodului pe vertical.

Fig.10. Secven de program n limbaj BASIC pentru micarea unui picior al robotului hexapod.