Documente Academic
Documente Profesional
Documente Cultură
Sistemul senzorial
Undele ultrasonore sunt vibraţii mecanice ale unui material solid, lichid sau gazos. Ele
reprezintă un caz particular al undelor acustice. Intervalul de frecvenţe pentru undele
ultrasonice este 15KHz-150KHz, fiind superior spectrului acustic şi inferior domeniului
hipersunetelor [5].
Ce este senzorul? Senzorii sunt elemente de automatizare, care sesizează şi transformă
mărimea de măsurat (de ieşire a procesului) într-un semnal mai convenabil, de obicei de altă
natură [2]. Ȋn dese rânduri este folosită sintagma senzori şi traductoare, în cadrul căreia fie
pun pe picior de egalitate senzorul şi traductorul, utilizând alternativ sau preferenţial, unul
dintre termeni, fie considereă că unul reprezintă o categorie ierarhică superioară, incluzându-l
pe celălalt [12]. Termenul senzor are ca origine cuvantul latin sensus, care este tradus ca simț
şi înainte de a fi adoptat de domeniul tehnic a fost şi este folosit pentru a desemna capacitatea
organelor de simţ ale oamenilor şi organismelor vii de a aduna şi procesa informaţii din
mediul înconjurător şi a le trimite spre creier. Cea mai veche tehnică de măsurare sonică
folosită de oameni este număratul secundelor dintre momentul în care se observa un fulger şi
momentul în care se aude tunetul pentru a afla cât de apropiată este furtuna. Ideea exploatării
acestei metode de măsură a dus la dezvoltarea senzorilor ultrasonici.
Principiul de funcţionare al senzorilor ultrasonici constă în emiterea de impulsuri sonore
scurte, de înaltă frecvenţă, la intervale de timp regulate. Aceste unde se propagă în aer cu
viteza sunetului. Dacă lovesc un obiect ele sunt reflectate înapoi ca semnal de ecou către
senzor (fig. 1). Măsurarea distanţei se bazează pe diferenţa din momentul de timp la care s-a
transmis impulsul sonic şi momentul la care acesta se detectează, având în vedere viteza
sunetului şi folosind formula din fizica pentru spaţiu:
D=V ×T [1]
Pioneer 2 vine echipat cu senzori ultrasonici atât pe partea frontală cât şi în spate fiecare
cu câte 8 traductoare care oferă detecţia obiectelor, informaţii despre distanţa faţă de acestea şi
navigarea pe lângă obstacole. Locaţia senzorilor este identică în ambele situaţii, câte unul pe
fiecare parte şi 6 situaţi frontal la intervale de câte 20 de grade (fig..2). Ȋmpreună furnizează
informaţii de pe o rază de 360 de grade.
Figura 2 Poziția senzorilor la robotul Pioneer 2
Semnalul de distanţă măsurată de sonare este cuprins în intervalul 15-300 cm sau 15-400
cm, depinzând de versiunea robotului. Deviaţia senzorilor faţă de axa de simetrie a robotului
este următoarea S0=90 o, S1=50o , S2=30o , S3=10o , S4=−10o , S5=−30o , S6=−50o , S7=−90 o.
Caracteristicile de directivitate nu au fost incluse în manualul de utilizare. De regulă,
directivitatea senzorilor ultrasonici depinde de puterea emiţătorului şi capacitatea
amplificatorului de receptie, de dimensiunea obstacolului, de reflectivitatea suprafeţei şi de
orientarea sa. Pot exista situaţii neobişnuite, când un obiect aflat în faţa unui senzor nu poate
fi detectat, cum are fi de exemplu o oglindă orientată înclinat faţa de axa normală la suprafaţa
sonarului. Ȋn cazul evitării obstacolelor, dacă aceasta situatie este întalnită, cei 8 senzori se
completeaza reciproc. Când acest caz este întâlnit, senzorul are o perioadă de orbire, precum
radarul în cazul detecţiei aşa ziselor avione invizibile. Frecvenţa de emisie a senzorilor este de
25 Hz (40 ms pe senzor). Există o distanţă minimă, sub care sonarul nu detectează nici un
obstacol, distanţă care se înscrie în limita indicată de producător, aproximativ 10-15 cm. Acest
fapt este datorat pulsului minim emis şi vitezei de propagare prin aer a undelor acustice [3].
Formula de calculul pentru această distanţă este:
V ×T
dm= [2]
2
unde v este viteza sunetului iar T este durata impulsului de emisie al sonarului. Distanţa
maximă de detecţie este foarte aproape de 400 cm. Ȋn general această limită este impusă din
construcţie, pentru a evita incertitudinea care apare prin nedetectarea obstacolelor la distanţe
mari, datorată semnalului reflectat slab. Deschiderea unghiulară este de 200 centrată pe
normala sonarului. Obiectul ţintă are o poziţie unghiulară şi o laţime necunoscută dar o mare
parte din el se află în interiorul deschiderii unghiulare. Datorită acestui fapt, informaţiile de la
mai mulţi senzori trebuie să se completeze reciproc iar în unele cazuri robotul trebuie să
efectueze mişcări de rotaţie pentru a culege semnale din mai multe direcţii.
Viteza sunetului în aerul uscat, să spunem 15℃ este de 340 [m/s] sau 0.034 [cm/us]
valori care au fost obţinute cu ajutorul formulei:
m cm 1S
340 ×100 × 6 =0.034 cm/µs [3]
s m 10 µs
Putem exprima şi timpul, în microsecunde, necesar semnalului pentru a parcurge un
centimetru, care are valoarea de 29.41 µs/cm, cu formula:
1 100000 µs 1m
× × =29.41 µs/cm [4]
340 m/ s 1s 100 cm
În aer, ca şi în alte gaze, viteza sunetului depinde de temperatură, presiune cât şi
umiditate. La 0℃ viteza sunetului este mai scăzută, de respectiv 331 [m/s] pe când la 20℃
aproximativ 343.4 [m/s]. Făcând abstracţie de presiunea atmosferică şi umiditate, care au un
impact redus asupra vitezei sunetului, formula următoare permite calculul vitezei de
propagare a sunetelor în funcţie de temperatură, pentru un domeniu de temperaturi în jurul
valorii de 0℃ [3].
C aer= (331.4 +0.607∗t ) ms−1 [5]
Ȋn cazul celor mai comuni senzori pentru roboţi mobili, ultrasonici, laser sau IR,
informaţia care este transmisă către robot este distanţa către cel mai apropiat obstacol
detectabil, într-o anumită direcţie. Această informaţie este folosită pentru a ajuta robotul să
navigheze direct. Se poate construi totuşi un algoritm după cum urmează: mergi catre obiectiv
dar nu mai aproape de 1 m de oricare obstacol [4]. Există câteva probleme cu această soluţie.
Una din ele este că senzorii nu au o detecţie perfectă şi datorita acestui fapt vor transmite
informatii eronate din cand in cand. Dacă utilizatorul doreşte să preia controlul asupra
robotului poate să facă acest lucru prin intermediul programului Teleoperare. Temenul de
teleoperare înseamnă a controla acţiunile unui robot de la distanţă. În cazul în care
dispozitivul are această abilitate, el se numeşte telerobot. Sistemul de teleoperare este
considerat master/slave, unde operatorul uman execută diferite sarcini prin intermediul
roboţilor. Pentru modelele mai noi de Pioneer 2 (după anul 2000) s-a prevăzut un joystick
pentru teleoperare, pe când modelele vechi, cum este şi cazul de faţă, se pot controla din
taste(fig.3).
După acţionarea butonului de START, robotul se află în starea Asteaptă Comanda. După
ce se primeşte comanda de mişcare, motoarele şi senzorii se activează. Robotul începe
deplasarea pe direcţia înainte până detectează un obstacol. Dacă distanţa la care se află cel mai
apropiat obstacol este mai mare de 50 cm, robotul continuă deplasarea. Când pragul de 50 cm
a fost atins, sistemul de comandă al robotului transmite informaţia către sistemul de acţionare
care modifică direcţia de deplasare spre stânga sau spre dreapta în funcţie de poziţia
obstacolului. Dacă sistemul senzorial nu detectează nici un obstacol, robotul îşi continuă
deplasarea (fig. 4).
Programul ARIA
ARIA este un program scris în limbajul C++ pentru toţi roboţii construiţi de ActiveMedia
Robotics (fig.3.5). Prin intermediul său se controlează viteza robotului, direcţia şi alţi
parametrii de mişcare fie prin comenzi simple sau printr-o infrastructură mai complexă. De
asemenea estimarea de poziţie, informaţii de la senzori şi toate datele de operare trimise de
platforma robotului sunt procesate de acest program. ARIA oferă opţiunea de integrare a unor
dispozitive I/O digitale, analogice sau seriale precum un braţ robotic, o cameră pentru
transmiterea de imagini şi un laser pentru aflarea distanţelor. O varietate de opţiuni utile
pentru roboţi se găsesc implementate în ARIA, precum recunoaşterea vocală, redarea efectului
de sunet, funcţii matematice etc. Programul este structurat pe diferite nivele de complexitate
de la simplul control prin teleoperare al robotului până la autonomie. Metoda prin care sunt
transmise şi recepţionate datele de la şi către server trebuie specificată. Dacă se doreşte
testarea unui anumit program pe un simulator, înainte de a fi copiat în microcontrolerul
robotului, cea mai bună cale este conectarea la un subprogram numit ArSimpleConnector.
Acest subprogram are ca instrucţiune principală conectarea la un simulator în cazul în care
unul este detectat, în caz contrar se efectuează conexiunea cu robotul prin portul serial. O
parte a programului de control asupra robotului este disponibilă prin programul Mathlab,
Simulink şi C. Am descăract programul ARIA, MobileSim şi ServerDemo gratuit de pe site-ul
www.mobilerobots.com ultimă variantă de ARIA fiind 2.9.4. Softul trebuie instalat pe ambele
dispozitive, robot şi calculatorul unde se doreşte compilarea, testarea sau execuţia
programelor. ARIA a fost gândit să funcţioneze ca o punte de comunicaţie între serverul
integrat al robotului şi calculator. Funcţia încorporată ArRobot are rolul de portal de
comunicaţie şi de colectare de informaţii de sine stătătoare cum ar fi poziţia (x,y) şi
viteza(translaţie şi rotaţie) [9]. Aceste informaţii sunt trimise de către robot către calculator la
fiecare 50 sau 100 ms.
Programarea
Evitarea de obstacole este una din cele mai importante probleme care se pun la
proiectarea şi realizarea unui robot mobil. Fără această capabilitate, mişcarea robotilor ar fi
restrictivă şi fragilă. Un robot mobil trebuie construit şi programat astfel încât să fie capabil să
efectueze mişcari rapide, controlate şi să fie destul de inteligent pentru a expora şi negocia
obstacolele în modul cel mai eficient [11]. A evita obstacolele înseamnă detectarea acestora şi
oprirea sau schimbarea direcţiei de deplasare a roboţilor mobili, cu scopul de a evita
coliziunile. Termenul Evitarea obstacolelor descrie un set de tehnici software, care permit
maşinilor mobile să-şi ajusteze traiectoria şi viteza în funcţie de mediul înconjurător [11].
Evitarea obstacolelor este o forma de deplasare complexa, în acest sens au fost create două
programe dedicate acestui scop. Primul este Wander mode (), program ce nu necesită
alcatuirea unei hărţi a încăperii şi a obstacolelor prezente. Robotul se deplasează şi ia decizii
pe baza informaţiilor primate de la senzori. Programul se încarcă în memoria robotului cu
ajutorul Microsoft Visual Studio. După realizarea conexiunii, meniul principal al robotului
arată totalitatea programelor active. Pentru lansarea programului se apasă tasta W în meniul
de conexiune cu robotul. Prezint în pagina urmatoare codul pentru programul Wander.
void wander(double speed, ArRobot *thisRobot)
{
int rand1; //Stabileşte dacă se schimbă direcţia
int rand2; //Stabileşte unghiul de virare
int rand3; //Stabileşte direcţia de virare
int dir; //Direcţia de virare
srand(static cast<unsigned>(time(0))); //Setarea vitezei
rand1 = (rand()%2); //Selectarea unui număr între 0 şi 1
if (rand1 == 0) //1 in 2 chance of turning
{
rand2 = (rand()%10); //Selectarea unui număr între 0 şi 9
rand3 = (rand()%2); //Selectarea unui număr între 0 şi 1
switch(rand3) //Stabileşte direcţia de mers bazată pe rand3
{
case 0:dir = -1;break; //Schimbarea direcţiei către dreapta
case 1:dir = 1;break; //Schimbarea direcţiei către stânga
}
else
{
dir = 0; //Nu se schimbă direcţia
rand2 = 0;
}
thisRobot->setRotVel(rand2*10*dir/2); //Selectarea vitezei de rotaţie
thisRobot->setVel(speed); //Selectarea vitezei de translaţie
Al doilea program pentru evitarea obsatcolelor este Obstacle avoidance mode care
pentru a fi implementat necesită o planificare anterioară a traseului de urmat precum şi
programul Mapper3Basic (fig. 3.6).
Problema planificării mişcarii unui robot mobil este aceea a găsirii unei mişcari pentru
un robot care trebuie să se deplaseze de la o configuraţie dată, la o destinaţie stabilită, într-un
mediu care să conţină o mulţime de obstacole prestabilite, astfel încât robotul să nu intre în
coliziune cu nici unul dintre acestea. Obstacolele nu sunt totdeanuna statice iar robotul nu
poate fi modelat ca un singur obiect rigid, precum în cazul problemei de baza a planificării
[8]. Este de la sine înteles că un robot care se mişca printre obstacole mobile este capabil de
performanţe mult mai mari şi de o serie de sarcini mult mai complexe. Ablitatea ocolirii
obstacolelor în mişcare este indispensabilă pentru orice robot real.
Codul pentru evitarea obstacolelor este următorul:
void obstacleAvoid(double minAng, double driveSpeed, ArRobot
*thisRobot)
{
double avoidAngle; //Unghiul de schimbare a direcţiei
if (minAng ≥ 0 && minAng < 46 ) //Dacă obstacolul este la stânga
{
cout << "TURNING RIGHT!\n";
avoidAngle = -30.0; //Virează dreapta
}
if (minAng > −46 && < 0) //Dacă obstacolul este la dreapta
{
cout << "TURNING LEFT!\n";
avoidAngle = 30.0; //Virează la stânga
}
thisRobot.setRotVel(avoidAngle); //Viteza de rotaţie
thisRobot.setVel(driveSpeed); //Viteza de translaţie
}
Transmiterea de imagini
Robotul Pioneer 2 a venit echipat cu o cameră Sony PTZ EVI D-30 (fig 3.8). Prescurtarea
PTZ provine de la Pan, Tilt, Zoom ceea ce corespunde mişcării pe axa x, pe axa y şi
posibilitatea de mărire şi micşorare a imaginii. Utilizatorul are posibilitatea să controleze
aceste mişcari după ce a fost realizată conexiunea cu calculatorul şi a fost selectat programul
corespunzător. La camerele standard, faţă opţiunea PTZ, câmpul vizual este definit în
momentul instalării fără posibilitatea reglării ulterioare, pe când la acest tip de cameră se
poate controla poziţia obiectivului şi după instalarea mecanică. Conexinea camerei cu placa de
baza a robotului se face prin decupajul din platforma superioară iar cablul de transmisie a
datelor este un RS 232C ce se conectează la portul auxiliar 1. Atât conectorii video cât şi
audio sunt de tip RCA. Opţional se poate ataşa un microfon cu mufa de conexiune de 3.5mm.
Pentru funcţionare, camera are nevoie de 12V.
Cele două metode de interacţiune cu camera robotului sunt prin programul ARIA şi prin
MobileEyes. În programul ARIA, camera se poate folosi doar când robotul este static.
După ce a fost instalată fizic, camera trebuie iniţializată. În Visual Basic se scrie,
compilează şi transferă programul:
ArRobot(robot); //Iniţializare robot
ArSonyD30 ptz(&robot); //Iniţializare ptz şi transfer către robot
bool ptzInitialized; //Verificare iniţializare
ptzInitialized = ptz.init(); //Iniţializare ptz
ArUtil::sleep(4000);
Figura 8 Localizarea mufelor de conexiune şi a butoanelor camerei Sony EVI D-30
În spatele camerei, găsim o serie de mufe de conexiune care fac posibilă utilizarea
multifuncţională a dispozitivului. Imaginile pot fi transmise pe un televizor, video sau
calculator folosind sistemul wireless video.
După ce s-a efectuat conexiunea, robotul se află în modul teleoperare, care permite
utilizatorului să controleze robotul după cum doreşte. Pentru a selecta modul Camera, se
apasă tasta C iar din meniul apărut se alege opţiunea 1, la pasul final se alege portul auxiliar 1.
Cu ajutorul tastelor se controlează camera prin deplasări de câte 30 pe axa y şi câte 50 pe axa
x. Pentru auto centrare se foloseşte Space. Din tastele x şi y se măreşte sau micşorează
imaginea. Factorul de mărire este de 12X atăt în mod manual căt şi automat. Rotirea camerei
este posibilă până la 2000 iar înclinaţia maximă este de 500. Rezoluţia camerei în modul
NTSC este de 768 x 494 pixeli iar în modul PAL 753 X 585 pixeli. Consumul camerei este de
11 W.
Dispozitivul de cuplaj cu sarcina(DCS) nu este atins de lumina în mod direct,
fasciculul de lumina trece iniţial prin lentilă sau sistemul de lentile. Acest lucru oferă doi
parametrii importanţi: distanţa focală şi deschiderea diafragmei. Acest DCS este un registru cu
deplasare analogic ce permite transportul semnalelor analogice prin mai multe etape
successive, sub controlul unui semnal de ceas. Principala utilizare a acestor dispozitive o
constituie senzorii de imagine folosiţi în scanere, aparate foto digitale, în telescope şi în alte
dispositive de captat imagini. Un senzor DCS cum este al camerei Sony este format dintr–un
tablou de diode fotosensibile care captează datele imaginii şi un tablou de memorare cere le
preia, atunci când este cuplat la tabloul de diode [14].
Camera are încorporat un microcomputer care memorează poziţia după fiecare
deplasare. În cazul în care ledul din drapta obiectivului este roşu intermitent memorarea
poziţiei nu a avut loc, în acest caz se apasă butonul de Reset. Datorită puterii de procesare
avansată, camera poate fi setată să distingă anumite culori şi luminuozităţi şi are opţiunea
urmăririi obiectelor cu aceste proprietăţi folosindu-se funcţiile Urmărire automată şi
Detectarea mişcărilor. Funcţia Detectarea mişcarilor analizează diferenţa între imaginea de
referinţă şi imaginea actuală. Tehnologia convenţională din spatele acestei funcţii foloseşte
luminuozitatea semnalului video. Camera Sony D-30 foloseşte atât culoarea cât şi
luminuozitatea fapt ce permite detectarea unui obiect ce se confundă cu mediul înconjurător.
Schimbarile de luminuozitate sunt monitorizate constant şi datele despre imaginea de referinţă
ajustate. Utilizatorul are la dispoziţie două arii de detecţie rectangulare, de orice dimensiune şi
în orice poziţie a ecranului. Odată ce mişcarea a fost detectată, în oricare din ferestrele de
căutare, un semnal de alarmă este emis, care spre exemplu poate porni o înregistrare. Acest
mod este versatil datorită abilităţii de ajustare a culorilor, a luminuozităţii şi a ariei de detecţie.
Urmărirea automată memorează în cadranul de selectare anumite culori ale obiectelor
şi controlează mişcările camerei cu ajutorul motoarelor de înclinaţie şi rotire. Camera are 3
moduri de urmărire: primul mod este mişcarea chenarului de selecţie cât timp camera este
fixă, al doilea mod este mişcarea camerei iar cel de-al treilea este urmărirea obiectului de
cameră şi chenar.