SSttuuddiiuull șșii pprrooiieeccttaarreeaa ssiisstteemmuulluuii ddee [602733]
UNIVERSITATEA ,,LUCIAN BLAGA” DIN SIBIU
FACULTATEA DE INGINERIE
Specializarea: MECATRONICĂ
LLUUCCRRAARREE DDEE LLIICCEENNȚȚĂĂ
Coordonator științific:
Prof. Univ. Dr. Ing. Sever -Gabriel RACZ
Absolvent: [anonimizat] , 2015
1
UNIVERSITATEA ,,LUCIAN BLAGA” DIN SIBIU
FACULTATEA DE INGINERIE
Specializarea: MECATRONICĂ
SSttuuddiiuull șșii pprrooiieeccttaarreeaa ssiisstteemmuulluuii ddee
llooccoommooțțiiee ppeennttrruu uunn rroobboott mmoobbiill
Coordonator științific:
Prof. Univ. Dr. Ing. Sever -Gabriel RACZ
Absolvent: [anonimizat]
2015
2
Motivarea alegerii temei
Tema lucrării mele de licență se intitul ează "Studiul și proiectarea sistemului de
locomoție pentru un robot mobil" și este rezultatul unei provocări științifice extracurriculare
în care m -am implicat. Motivul alegerii acestei teme provine din dorința de documentare cu
privire la problematica de osebit de complexă, ridicată de realizarea și controlul unui robot
mobil autonom cu două roți motoare.
Curiozitatea intelectuală s -a format și dezvoltat în cadrul cursurilor universitare din
cadrul Universității "Lucian Blaga" din Sibiu, Facultatea de In ginerie și a proiectelor
extracurriculare la care am luat parte.
Noțiunile dobândite în cadrul acestui nivel de studii m -au făcut să mă implic activ în
echipa CyberTech, echipa de robotică a facultății, încă de la conceperea ei în anul 2013.
Datorită f aptului că în fiecare an concursul Eurobot are o temă specifică, trebuie
dezvoltați noi roboți care să îndeplinească sarcinile tot mai interesante, în scurtul timp pe care
îl au la dispoziție. Având în spate experiența acumulată la ediția din anul 2014, an ul acesta
am dezvoltat un robot mult mai calitativ atât din punct de vedere har dware, cât și din punct de
vedere software.
Sistemul de locomoție al unui robot fiind elementul esențial în realizarea sarcinilor,
este esențial ca la proiectarea și realizare a lui să se țină cont de o întreagă serie de factori care
duc la alegerea și aplicarea unei soluții optime. De asemenea, ace astă parte hardware bine
dezvoltată trebuie să fie controlată de un sistem pe măsur ă. Tocmai de aceea am propus
utilizarea unui control PID a sistemului de locomoție al robotului.
Pe baza acestor considerații, am decis să întreprind o cercetare conform normelor
universitare asupra rolului, importanței și dezvoltării sistemului de locomo ție al unui robot cu
două roți motoare.
Doresc să adresez cele mai sincere și calde mulțumiri domnului profesor dr. ing.
Sever – Gabriel Racz, în calitate de coordonator științific, pentru permanenta îndrumare,
pentru îndrumările competente și pentru exi gența manifestată atât în redactarea acestei lucrări
de licență , cât și în cadrul echipei de robotică, dar și pentru contribuția la formarea mea pe
plan științific și personal.
Nu în ultimul rând, doresc să mulțumesc în mod deosebit familiei mele pentru
sprijinul moral și material acordat pe parcursul anilor de facultate.
3
Rezumat
Principala teză a acestei lucrări este reprezentată de realizarea și controlul sistemului de
locomoție al unui robot mobil autonom . Acest robot a fost dezvoltat în cadrul echipei CyberTech,
echipa de robotică a Universității "Lucian Blaga" din Sibiu , Facultatea de Inginerie .
Este esen țial la proiectarea unui robot mobil autonom ca acesta să aibă un sistem de
locomoție competent, astfel încât robotul să fie capabil să rea lizeze sarcinile de navigație
specifice. Pentru acest lucru, în urma calculelor de dimensionare, s -au ales două motoare de
curent continuu fără perii. Datorită faptului că motoarele au fost poziționate la un nivel superior
plăcii de bază, s -a decis transmi sia mișcării de rotație și a puterii corespunzătoare de la arborele
reductorului către cel al roții motoare prin intermediul unei cure le de transmisie.
Însă, robotul mobil nu ar fi nici pe departe la fel de eficient, dacă nu ar fi susținut de un
sistem de control adecvat. Pentru aceasta se propune o reglare în buclă închisă folosind un
controler PID care să permită execuția unei reglări a vitezei motoarel or de curent continuu fără
perii. Reacția sistemului este asigurată prin intermediul a două encodere incrementale de rotație.
Lucrarea este structurata în cinci capitole, fiecare având mai multe subcapitole, urmate de
o serie de concluzii si o listă cupr inzătoare de referințe bibliografice.
În capitolul 1 am făcut o trecere în revistă a concepte lor de robotică și mecatronică,
precum și o prezentare a concursului european de robotică Eurobot.
În capitolul 2 se prezintă noțiunile teoretice cu privire la roboții mobili autonomi, precum
și stadiul actual al cunoașterii.
Capitolul 3 evidențiază principalele obiective urmărite, făcându -se un studiu de caz
asupra odometriei și a sistemelor de reglare automată. Sunt prezentate erorile de navigare și
formule de calcul privind determinarea poziției momentane a unui robot mobil, precum și
corecția unui sistem cu ajutorul regulatoarelor PID.
Capitolul 4 este dedicat studiului asupra proiectării și comandării sistemului de locomoție
a robotului mobil cu două roți m otoare. În acest capitol se prezintă componentele hardware care
stau la baza sistemului de locomoție, cât și caracteristicile acestora. De asemenea, este prezentată
atât etapa premergătoare construcției și realizării robotului reprezentată de proiectarea ș i
modelarea sistemului de locomoție al robotului în programul CATIA V5, precum și etapa
ulterioară realizării reprezentată de controlul sistemului de locomoție folosind un controler PID.
Capitolul 5 prezintă concluziile generale ale rezultatelor obținute în urma studiului și
desfășurării cercetărilor ținând cont de toate ideile introduse. Valorificarea rezultatelor și
direcțiile viitoare de cercetare încheie acest capitol.
4
Abstract
The main thesis of this paper is the realization and control of a mobile robot
autonomous locomotion system. This robot was developed within the team CyberTech,
robotics team of the University "Lucian Blaga" from Sibiu, Faculty of Engineering.
It is essential at designing an auto nomous mobile robot that has a competent
locomotion system, so that the robot should be able to achieve the specific navigation tasks.
For this, after sizing calculations, there were chosen two brushless DC motors. Because of the
fact that the engines were positioned at a higher level than the board, it was decided that the
transmission of rotary motion and the corresponding power from the gear shaft to the motors
gear shaft should be realized through a transmission belt.
But the mobile robot would be nowhe re near as effective, if it were not supported by
an adequate control system. For that it is proposed a closed loop control by using a PID
controller that allows adjustment execution of the speed of brushless DC motors. The reaction
system is ensured throu gh two rotary incremental encoders.
The paper is structured into five chapters, each with several chapters, followed by a
series of conclusions and a comprehensive list of references.
In the first chapter I did an overview of the concepts of robotics and m echatronics, as
well as a presentation of the European robotics contest Eurobot.
Chapter 2 presents the theoretical concepts of autonomous mobile robots and the
current state of knowledge.
Chapter 3 highlights the main pursuit objectives, making a case stu dy on odometry
and automatic control systems. Navigation errors and formulas are presented for determining
the momentary position of a mobile robot,as well as correction system using PID controllers.
Chapter 4 is devoted to the study of design and ordering of the locomotion system
with two -wheel drive of the mobile robot. This chapter presents the underlying hardware of
the locomotion system and their characteristics. Also, it is shown the pre -construction and
implementation of the robot represented by the design and modeling of locomotion system of
the robot in the CATIA V5 program, as well as further stage of realization represented by the
control of the locomotion system using a PID controller.
Chapter 5 presents general conclusions from the results obtai ned in the study and the
investigations taking into account all the introduced ideas. Recovery results and future
research directions close this chapter.
This work is the result of my own activity. I have neither given nor received
unauthorized assistance on this work.
5
Cuprins
Capitolul 1 ………………………….. ………………………….. ………………………….. ………………………….. …………. 7
INTRODUCERE ………………………….. ………………………….. ………………………….. ………………………….. … 7
Capitolul 2 ………………………….. ………………………….. ………………………….. ………………………….. ……….. 12
ROBOȚI MOBILI AUTONOMI ………………………….. ………………………….. ………………………….. …… 12
2.1. Considerente generale ………………………….. ………………………….. ………………………….. ……………. 12
2.2. T ipuri de locomoție ………………………….. ………………………….. ………………………….. ……………….. 18
2.3. Sistemul de control ………………………….. ………………………….. ………………………….. ……………….. 26
Capitolu l 3 ………………………….. ………………………….. ………………………….. ………………………….. ……….. 29
CONDUCEREA ROBOȚILOR MOBILI ………………………….. ………………………….. …………………… 29
3.1. Odometria și erori de navigare ………………………….. ………………………….. ………………………….. … 29
3.1.1. Erori sistematice și nesistematice ………………………….. ………………………….. ………………….. 34
3.1.2. Măsurarea erorilor de odometrie ………………………….. ………………………….. ………………….. 35
3.1.3. Reducerea erorilor de odometrie ………………………….. ………………………….. ………………….. 45
3.2. Sisteme de reglare automată ………………………….. ………………………….. ………………………….. …… 61
3.2.1. Clasificarea regulatoarelor automate ………………………….. ………………………….. …………….. 61
3.2.2. Regulatorul proporțional (P) ………………………….. ………………………….. …………………………. 62
3.2.3. Regulator proporțional – integrativ (PI) ………………………….. ………………………….. …………… 63
3.2.4. Regulator proporțional – derivativ (PD) ………………………….. ………………………….. …………… 63
3.2.5. Regulator proporțional -integral -derivativ (PID) ………………………….. ………………………….. .. 64
3.2.6. Corecția unui sistem cu ajutorul regulatoarelor PID ………………………….. ……………………… 65
Capitolul 4 ………………………….. ………………………….. ………………………….. ………………………….. ……….. 74
PROIECTAREA ȘI CONTROLUL SISTEMULUI DE LOCOMOȚIE ………………………….. …… 74
4.1. Caracteristicile sistemului de locomoție al robotului mobil cu două roți motoare ……………….. 74
4.1.1. Placa de dezvoltare Arduino Mega 2560 ………………………….. ………………………….. ………… 76
4.1.2. Driver -ul pentru motoare ESCON Module 50/5 ………………………….. ………………………….. .. 78
6
4.1.3. Acumulatorul Kypom LiPo 3300 mAh 6S 35C ………………………….. ………………………….. ….. 79
4.1.4. Encoderul incremental rotativ Yumo E6B2 -CWZ3E ………………………….. ………………………. 81
4.2. Alegerea motoarelor de curent continuu ………………………….. ………………………….. ……………….. 84
4.3. Proiectarea asista tă de calculator a sistemului de locomoție al robotului mobil …………………… 90
4.4. Controlul sistemului de locomo ție folosind un controler PID ………………………….. ………………. 92
Capitolul 5 ………………………….. ………………………….. ………………………….. ………………………….. ……… 100
CONCLUZII ………………………….. ………………………….. ………………………….. ………………………….. ….. 100
BIBLIOGRAFIE ………………………….. ………………………….. ………………………….. ………………………….. . 102
Anexă ………………………….. ………………………….. ………………………….. ………………………….. ……………… 104
7
Capitolul 1
INTRODUCERE
Robotul este un produs al mecatronicii care combină tehnologia mecanică cu cea
electronică fiind o componetă ev oluată de automatizare care înglobează electronica de tip
calculator cu sistemele avansate de acționare pentru a realiza un echipament independent de
mare flexibilitate. [1] [2]
Cuvântul “robot” a apărut pentru prima dată în piesa R.U.R.( Robotul Universal al lui
Rossum) scrisă de dramaturgul ceh Karel Capek în care autorul parodia cuvantul “robota” (
muncă în limba rusă și corvoadă în limba cehă) observând oamenii care călătore sc într -un
tren arhiplin din suburbiile orașului Praga, care erau ca niște mașini lipsite de individualitate,
pe care i -a denumit roboți. În anul 1923 piesa fiind tradusă în limba engleză, cuvântul robot a
trecut neschimbat în toate limbile pentru a defin ii ființe umanoide protagoniste ale
povestirilor știintifico -fantastice. [1] [3]
Inițial oamenii aveau o doză de îndoială în aceste noi descoperiri tehnologice , însă în
timp robotul a ajuns tot mai cunoscut și tot mai apreciat pentru avantajele și performanțele
ridicate pe care le oferă . În ziua de astăzi roboții sunt indispensabili funcționării comunității
umane a secolului XXI. Ei sunt î ntâlniți în procesele de producție, dar și în domenii precum
agricultură, transporturi, medicină , divertisment sau comunicații , unde optimizează
performanțele umane atât cantitativ , cât și calitativ. Aparatura electronică și electrocasnică,
mijloacele de transport moderne și majoritatea lucrurilor care încep să ne marcheze stilul de
viață vor ajunge automate, robotizate și autonome.
Roboții s -au dezvoltat prin creșterea gradului de echipare cu elemente de inteligență
artificială. Pentru a culege informații unui mediu, roboții s -au dotat cu senzori tactili, de forță,
de moment video, etc. Cu ajutorul acestora robotul poate să -și creeze o imagine a mediului în
care evoluează, bazându -se pe percepția artificială.
Următorul pas în actuala evoluție industrială este reprezentat de folosirea roboților în
toate domen iile. Aceștia vor atinge capacitatea de a imita orice acțiune a omului (Fig. 1.1).
Actualmente există multe domenii unde roboții au preluat locul oameniilor, c ei mai comple cși
roboți fiind cei folosiți de NASA pentru explorarea spațiului cosmic. Pentru viitoare misiuni
spațiale , roboții umanoizi concepuți de NASA, vor fi delegați în zonele care prezintă un risc
aparte pentru personalul uman și vor reprezenta cel mai bine antrenat astronatutul.
8
Fig. 1.1 Robotul viitorului
Conceptul de mecatronică s -a născut în Japonia la începutul deceniului al VIII -lea al
secolului trecut, cuvântul “ mecatronică ” fiind folosit prima dată de către un inginer japonez,
Tetsuro Mori , în 1969, care a făcut și prima încercare de definire a acesteia:
“Cuvântul mecatronică (en. mechatronics) este compus din “ meca ”, de la mecanism
și din “ tronică ”, de la electronică. Cu alte cuvinte, tehnologiile și produsele evoluate
vor încorpora în mecanismele lor din ce în ce mai multă electronică, în mod intim și
organic, fiind imposibil să se stabileas că unde se termină una și unde începe
cealaltă. ” [4]
În ciuda încercărilor continue de a ajunge la o definiție clară a mecatronicii, a
dezvoltării unei curricule standard și a clasificării produselor mecatronice, o concluzie
consensuală nu a fost încă f ormulată. Această lipsă de consens constituie un simptom benefic,
deoarece se poate considera că acest domeniu ingineresc se dezvoltă continuu.
Așadar este clar că studiul mecatronicii oferă un instrument important pentru a
înțelege și explica procesele moderne de proiectare și fabricare, pentru a clasifica, defini,
integra și organiza numeroasele aspecte într -un pachet coerent.
9
În figura 1 .2 se sugerează că, în activitatea de concepție, abordarea tradițională în
baza căreia ingineria mecanică studiază probleme specifice mișcării maselor, ingineria
electrică respectiv electronică studiază probleme specifice mișcării electronilor, iar
informaticienii studiază probleme specifice mișcării informației, nu mai este posibilă. În
structura unui produs mecatron ic, practic nu se pot separa cele trei componente. [5]
Fig. 1.2 Mecatronica: Integrarea sinergetică a diferitelor arii de specialitate
Mecatronica reprezintă o noua treaptă în procesul evoluției științei inginerești
contemporane, datorită stimulării efectului de sinergie.
Un sistem mecatronic este un sistem tehnic care integrează, într -o configurație
flexibilă, componente mecanice, elec tronice și de comandă cu sisteme numerice de calcul,
pentru generarea unui control inteligent al mișcărilor, în vederea obținerii unei multitudini de
funcții.
La ora actuală, tot ceea ce numim un produs de înaltă tehnicitate, reprezintă un produs
mecatronic. Automobilul modern, echipamentele periferice ale calculatoarelor, mașinile –
unelte cu comandă numerică, aparatura biomedicală, aparatura electrocasnică, tehn ica de
telecomunicații, aparatura de cercetare, roboții etc., sunt doar câteva exemple de produse
mecatronice. Practic, mecatronica se regăsește în toate domeniile de activitate.
În secolul XXI se așteaptă dezvoltarea sistemelor integrate bio-electronico -mecanice,
sistemelor pico si nano, computerelor cuantice, cât și anumite sisteme neprevăzute, ceea ce ne
face să afirmăm că viitorul mecatronicii va avea un potențial deosebit.
10
Concursul european de robotică Eurobot
Eurobot este o comp etiție de robotică, care se adresează în special tinerilor din
Europa, dar este deschisă tinerilor din întreaga lume, care vor să intre în lumea tehnicii și în
special a roboticii.
Eurobot este un concurs cu roboți autonomi organizat de organizația Eurob ot.
Competi ția Eurobot a fost fondată în 1998 de către trei parteneri: orașul La Ferte -Bernard,
VM Group și Planete Sciences. Din anul 2004 cei trei parteneri au decis să înființeze
asociația non -profit Eurobot înregistrată în Franța. Ea a luat ființă la 6 ani după prima
competiție robotică care a avut loc în Franța.
Scopul pe care asociația Eurobot îl are este reprezentat de faptul că încearcă să
dezvolte interesul tinerilor pentru tehnică și în special pentru robotică pe scară internațională.
Pentru a -și atinge scopul asociația favorizează organizarea de calificări naționale și finale
internaționale ale concursului de robotică.
Concursurile oferă înainte de orice, ocazia de a participa la o competiție fair play și de
a pune în aplicare cunoștințele tehn ice. În acest sens se concentrează pe formarea
participanților din rândul tinerilor, adică a studenților sau membrilor cluburilor independente
de robotică. Dintre multitudinea de obiective educaționale pe care le oferă amintim doar
următoarele:
– Să desco pere și să îndrăgească știința și tehnologia .
– Să aplice concret cunoștințele științifice .
– Să învețe gestiunea de proiecte .
– Să învețe să lucreze în echipă .
– Să învețe să realizeze un proiect multidisciplinar.
– Să respecte termenele.
– Să coopereze pentru realizarea unui proiect serios fără a lua acest lucru în serios.
– Răspândirea științei în rândul publicului, evenimentele fiind mediatizate, pline de
viață și active.
– Stabilirea de legături între amatorii de robotică.
– Oferă ocazia să se întâlnească tinerii din diferite medii culturale.
– Valorifică munca tinerilor și implică sponsorii.
Roboții care participă sunt roboți autonomi, iar tema concursului se modifică în
fiecare an. Regulile pun în valoare caracterul didactic, da r într -un mod atractiv de competiție.
Regulile promovează nonviolența în comportamentul roboților.
11
Competiția Eurobot 2015
În acest an roboții pășesc pe platourile de filmare în încercarea lor de a deveni staturi
de cinema, tema concursului purtând denum irea de "Robomovies".
Fiecare echipă poate construi unul sau doi roboți, respectând încadrarea acestora la
dimensiunile cerute în regulament. Roboții trebuie să fie complet autonomi, în timpul
meciului nefiind permisă nici o comandă din exterior.
Un mec i durează 90 de secunde și se desfășoară pe o suprafață special amenajată (fig.
1.3) între două echipe diferite care preiau elementele de culoarea verde sau galben în funcție
de culoarea de pe care se pornește. Sarcinile de anul acesta sunt următoarele:
– "The Spotlight" : roboții vor trebui să ilumineze platoul prin plasarea cilindrilor unul
peste celălalt și a unei mingi de tenis pe cel mai de sus
– "The Clapperboard": roboții vor trebui să închidă clachetele (en. clapperboard)
echipei
– "The Popcorn ": roboții vor trebui să adune popcornul din mașinile de popcorn și
paharele cu popcorn, apoi să plaseze popcornul, care este reprezentat de către mingi din
polistiren, în zonele special amenajate
– "The Red Carpet": la finalul meciului, roboții vor trebu i să întindă covorul roșu
– "Climbing the red carpet": la final, ca o ultimă reprezentare, roboții vor trebui să
defileze pe covorul roșu, urcând scările și ajunând în zona înălțată, precum niște adevărate
vedete de cinema.
Fig. .1.3 Masa de joc pentru ediția 2015
12
Capitolul 2
ROBOȚI MOBILI AUTONOMI
2.1. Considerente generale
Unul din obiectivele esențiale ale roboticii este elaborarea roboților autonomi. Astfel
de roboți ar putea efectua sarcinile de îndeplinit fără alte intervenții umane. Comenzile
primite vor indica ce dorește utilizatorul și nu modul în care robotul să execute comenzile.
Roboții capabili să îndeplinească aceste operații vor fi echipați cu senzori de percepere a
mediului înconjurător, afla ți sub controlul unui sistem de calcul. [6]
Progresul roboților autonomi reprezintă un interes major în multe domenii de aplicații,
câteva din domeniile de aplicație fiind agricultura și recoltele, procesarea deșeurilor, industria
alimentară, medicină, explorarea spațiului, oceanelor și a zonelor d e risc ridicat, domeniul
militar etc.
Pentru a dezvolta tehnologiile necesare pentru obținerea unor roboți mobili care să
sprijine sau să substituie anumite operații realizate de către om este nevoie de o as ociere a
mai multor domenii ca cele ale intelige nței artificiale, senzorilor, controlului motoarelor,
procesării semnalelor, sistemelor de calcul, planificării traiectoriei, electronicii și științelor
calculatoarelor.
Robotul mobil este un sistem complex care poate realiza diferite activități. Acesta
reprezintă o îmbinare de dispozitive cu servomotoare și senzori care operează într -un spațiu
real care este marcat de o serie de proprietăți fizice, acestea trebuind să planifice mișcările
robotului încât acesta să poată efectua sarcina în funcție de sta rea inițială a sistemului, dar și
de informațiile care există de spre mediul de lucru. Robotul poate îndeplini cu succes sarcinile
depinzând de cunoștințele ce le are acesta asupra configurației inițiale a spațiului de lucru,
dar și cele obținute pe parcur sul evoluției acestuia. Există anumite probleme ce apar la roboții
mobili, precum : determinarea poziției și orientării pe suprafața de lucru, evitarea impactului
cu diferite obiecte , planificarea unei traiectorii optime de mișcare. Robotul trebuie să fie î n
stare să își planifice mișcările, să hot ărască care mișcare trebuie executată pentru ca o sarcină
să fie îndeplinit ă, în funcție poziția la un moment dat a obiectelor . Planificarea mișcărilor este
formată dintr -un ansamblu de probleme. Pentru a evita col iziunile cu obstacolele fixe sau
mobile ce se regăsesc în spațiul de lucru al robotului se ține cont de următoarele: se
realizează apărători mecani ce, se utilizează senzori care măsoară distanța de la robot până la
obstacolele din calea sa , se folosesc informații de la mai multe tipuri de senzori . Starea
13
robotului se schimbă din cauza forțelor de reacțiune care apar datorită contactului fizic dintre
robot și obiectele din mediu. Dacă vitezele de lucru sunt mari , efectele dinamice ale
contactului fizic cu anumite obiecte manipulate sau cu obstacolele din calea sa sunt riscante.
Navigarea robotului se face prin mai multe metode, cum ar fi măsurarea numărul ui de rotaț ii
realizate de roțile motoare, folosirea giroscoape lor și accelerometrelor, însă de obicei se
determină poziția și orientarea robotului în raport cu un sistem de coordonate fix.
Există roboți c are sunt dotați cu funcții de decizie și își planifică singuri traiectoria de
mișcare , denumiți roboți inteligenți, și roboți la care traiectori a este fix ă și marcată pe
suprafața de luc ru. Sunt necesare niște dispozitive care să adune i nformațiile din mediul de
lucru, să realizeze interacțiunea robot -mediu , precum și o unitate centrală ce prelucrează în
timp real informația senzorială și o transformă într -o configurație utilă pentru sistemul de
comandă.
Sistemul sen zorial se regăsește și sub denumirea de sistem de m ăsurare. Acest sistem
asigură mă surarea unor mărimi fizice și observarea unor modificări semnificative a acestor a.
Senzorii pot analiza zona de lucru, zona de contact, zona apropiată sau îndepărtată .
Caracteristicile senzoriale ale unui robot depind în mare măsură de aplicațiile pentru care a
fost proiectat, de gradul său de autonomie și de tipul mediului de lucru .
2.1.1. Clasificare roboților mobili
În funcție de dimensiuni:
– macro -roboți
– micro -roboți
– nano -roboți
În funcție de mediul în care acționează:
– roboți tereștri
– roboți subacvatici
– roboți zburători
– roboți extratereștri
Din punct de vedere al sistemului de locomoție:
– roboți pe roți sau șenile
– roboți pășitori: bipezi, patrupezi, hexapozi, miriapozi
– roboți târâtori: imită mișcarea unui șarpe, a unei râme etc.
14
– roboți săritori: imită deplasarea broaștelor, cangurilor etc.
– roboți de formă sferică: se deplasează prin rostogolire etc.
În funcție de comunicare:
– robot telecomandat permanent de un operator uman
– robot telecomandat periodic
– robot complet autonom
2.1.2. Stadiul actual al cunoașterii
Un număr mare de cercetători au cercetat acest domeniu și un număr mare de
companii au realizat diverse tipuri de roboți mobili și vehicule autonome. Datori tă acestui
motiv analiza tuturor articolelor s tiințifice sau roboților mobili și vehiculelor autonome nu
este posibil ă. În această parte sunt prezentate câteva dintre realizările notabile din acest
domeniu. Diverse companii au dezvoltat diverși roboți mobili autonomi capabili să execute
diverse sarcini în gospodărie, iar câteva exemple sunt prezentate mai jos.
Vehicul ul autonom TerraMax, [7], (Fig. 2. 1) produs de Oshkosh Truck Corporation,
Laboratorul de viziune artificială și Sisteme inteligente al Universității din Parma și Rockwell
Collins a terminat proba DARPA Grand Challenge din 2005. Vehiculul utilizează 3 laser e
LIDAR, 3 camere anticipative și 2 sisteme de navigație GPS. Acest vehicul autonom a fost
dezvoltat și actualmente este folosit în misiuni de recunoaștere și transport de marfă în zonele
cu risc ridicat.
Fig. 2. 1 Vehiculul autonom TerraMax
Cei de la N.A.S.A au realizat vehiculul autonom Curiosity, (fig. 2.2) pe care l -au
trimis pentru a explora planeta Marte. Acest robot este cel mai sofisticat robot creat de
Agenția spațială americană pentru a explora o alta planetă. Roverul este echipat cu 10
15
instrumente științifice, cu camere de înaltă definiție și un dispozitiv laser care îi permite să
analizeze ținte aflate la o distanță de pâna la șapte metri. Robotul Curiosity, montat pe șase
roți, posedă un braț capabil să foreze până la șase centimet ri în interiorul rocilor, ceea ce
reprezintă o premieră pentru asemenea misiuni. Alimentarea acestuia se face de la un
generator termoelectric cu radioizotopi. [8]
Fig. 2.2 Robotul Curiosity pe suprafața marțiană
În 2010 a fost lansat testul Vislab Intercontinental Autonomous Challenge, [9], la care
au participat 4 vehicule autonome, VIAC (Fig. 2.3), și care au străbatut distanța de peste
15000 km de la Parma, Italia, până la Shanghai, China, fără intervenția opera torului uman.
Vehiculele au îndurat condiții foarte dificile: șosea, vreme, infrastructură, temperatură, trafic
și chiar comportament periculos al participanților la trafic, iar ruta a fost necunoscută. Pentru
a rezolva aceste probleme VisLab a gândit 2 ve hicule autonome care se deplasează în același
timp, însă cu scopuri diferite. Primul vehicul merge autonom în majoritatea timpului, însă
uneori are nevoie de intervenția umană pentru a corecta erorile, iar al doilea vehicul
urmărește primul vehicul și se d eplasează autonom pe întreg parcursul testului. Roboții
mobili și vehiculele autonome sunt sisteme nonholonomice, descrise de sisteme de ecuații
neliniare. Din acest motiv conducerea folosind regulatoare PID nu dă rezultate satisfăcătoare.
Pentru conducere a proceselor neliniare s -au dezvoltat mai multe metode, cum ar fi ,metodele
backstepping, sliding -mode, fuzzy și rețelele neuronale. Metodele de conducere a roboților
16
mobili și vehiculelor autonome au ca scop proiectarea unor controllere capabile să calcul eze
viteza liniară și viteza unghiulară a vehiculului pentru ca acesta sa urmărească o traiectorie
dorită. Conducerea sistemelor nonholonomice a fost cercetată de un număr mare de
cercetători și diferite regulatoare au fost propuse.
Fig. 2.3 Vehiculele autonome VIAC
Compania Bostons Dynamic în parteneriat cu Defence Advanced Research Project
Agency a realizat prima versiune în anul 2004 a robotului BigDog, iar în anul 2008 a
îmbunătățit această versiune (fig. 2.4). Scopul acestui robot a fo st de a transporta diferite
încărcături pe teren accidentat și greu accesibil. Cu o utilitate puternic militară BigDog a
constituit o revoluție în lumea roboticii mobile, în special datorită faptului că a fost primul
robot care își poate păstra echilibrul. Poate merge pe gheață, urca trepte, să escaladeze un zid
etc.; robotul cântărește 106kg și poate transporta aproximativ o sarcină de 155kg. [10]
Fig. 2.4 Robotul BigDog pe teren greu accesibil
17
Frigo -M (fig. 2.5) este un robot mobil dezvoltat în Japonia și este capabil să
recunoască și să urmărească autonom un pompier care este echipat cu echipament
antiincendiu. Recunoaște și memorează automat calea pe care o parcurge și transportă
autonom la loc sigur victimele găsite de către pompier. Are corpul principal protejat
împotriva apei, prafului, exploziilor și a șocurilor puternice. [11]
Fig. 2.5 Frigo -M
SpeciMinder (fig. 2.6) este un robot mobil total autonom care ajută la transportul
materialelor medicale în interiorul diverselor laboratoare. Poate funcționa 24 de ore pe zi.
Utilizarea lui nu necesită modificări ale instalațiilor din laborator. Astfel, în scurt timp
robotul realizează o hartă a rutei pe care circulă. Are 12 programe pre -setate, se ghidează cu
ajutorul hărții laboratorului pe care și -o creează singur, nu are nevoie de calculator principal,
iar pentru evitarea obstacolelor și a interferenței cu operatorul uman folosește un senzor cu
laser. [12]
Fig. 2.6 Robotul SpeciMinder în timp ce colectează materiale medicale
18
2.2. Tipuri de locomoție
Locomoția reprezintă procesul care îi permite robotului mobil să se deplaseze în
mediu prin acționarea anumitor forțe asupra sa. Studiul acțiunii acestor forțe se numește
dinamica, iar studiul formulelor matematice asociate mișcării, fără a considera forțe le fizice, se
numește cinematică. [13]
Sistemul de locomoție are un rol hotărâtor în atingerea scopului propus prin funcția
robotului mobil. Contribuie la acest lucru atât varianta de realizare a locomoției (roată, șenile,
picior etc.), cât și aspectele structurale (grade de mobilitate, orientare, manevrabilitate) ale
variantei admise pentru robot.
Structura robotizată se poate realiza:
– cu contact direct cu solul (aparținător mediului de lucru): roboții mobili cu roți, cu
șenile, pășitori sau șerpui toare;
– fără contact direct cu solul (roboții submersibili, cu propulsie proprie), caz în care
mediul de lucru acționează asupra lor.
O tehnică de estimare a poziției unui robot mobil în mediul său se numește odometrie.
Prin odometrie se calculează distanța parcursă de un robot mobil în funcție de cât de mult s -au
rotit roțile acestuia. Dacă luăm cazul unei roți ideale, la fiecare rotație a acesteia se poate aprecia
că robotul a parcurs o distanță egală cu 2 πr, unde r reprezintă raza roții respective . Însă în
practică, datorită forțelor de frecare și a aluncărilor, estimările sunt mult mai puțin precise.
Un robot mobil aflat într -un plan are 3 grade de libertate: o poziție ( x, y) și o orientare θ
față de axa orizontală. Acest triplet ( x, y, θ) poartă denumirea de copoziția (relativă sau
absolută) a robotului mobil (en. robot pose) și reprezintă variabila efectivă de control a
sistemului de locomoție.
Pentru ca robotul să ajungă dintr -o anumită poziție în alta, trebuie îndeplinite o serie de
manevre mai mult sau mai puțin complexe, deoarece un robot mobil nu are control deplin
asupra celor trei variabile. În literatura de specialitate, poziția de start se notează cu ( xS, yS, θS),
iar poziția unde trebuie să ajungă robotul cu ( xg, yg, θg). [14], [15]
De obicei, în dotarea roboților mobili, pe lângă roțile motoare, se regăsesc fie roți
adiționale fie alte puncte de contact care nu fac altceva decât să asigure suportul robotului.
În dotarea unor roboți mobili, pe lângă roțile motoare, se regăsesc fie roți a diționale fie
alte puncte de contact, care asigură suportul robotului. Cele mai des întâlnite sunt roțile de tip
castor, roți care nu sunt de obicei considerate în ecuațiile cinematice ale robotului mobil.
Sistemele de locomoție pot avea proprietăți și com ponente diferite unul față de celălalt.
19
În continuare se prezintă câteva dintre cele mai populare sisteme de locomoție ale
roboților mobili.
2.2.1. Sisteme de locomoție diferențiale
Sistemele diferențiale (en. differential drive) sunt printre cele mai simple sisteme de
locomoție întâlnite la un robot mobil. Robotul dispune de două roți motrice, montate pe o axă
comună orizontală și fixă în raport cu șasiul robotului, care sunt comanda te independent.
Cinematica se ocupă de relațiile între parametrii de control și comportamentul sistemului
în spațiul stărilor. Evoluția robotului pe tronsoane drepte este dată de viteza liniară egală a
celor două roți. Viteze diferite ale celor două roți conduc la traiectorii circulare și existența
unui centru instantaneu de rotație. Mișcarea de acest tip este prezentată în figur a 2.7 .
Fig. 2.7 Robot cu mișcare de tip diferențial
Vitezele celor două roți trebuie să respecte următoarea relație:
(2.1)
(2.2)
(2.3)
(2.4)
(2.5)
unde: vs – viteza roții din partea stângă;
vd – viteza roții din partea dreaptă;
R – distanța dintre mijlocul axei celor două roți și centrul instantaneu de rotație CIR;
ω – viteza unghiulară;
20
L – distanța între cele două roți;
θ – unghiul de rotație .
Rezolvarea sistemului de ecuații de mai sus duce la soluția următoare:
(2.6)
Semnificația celor două cazuri de mișcare, se poate determina din rel. 2.6.:
– Mișcare în linie dreaptă : în acest caz raza R tinde spre infinit, iar vitezele sunt egale
și au același sens.
– Mișcare rotațională (curbă) – în acest caz raza R are valoare finită. Mișcarea de
pivotare în jurul punctului A se realizează dacă R tinde spre zero, iar vitezele sun t egale și au
sensuri diferite.
Prin alegerea vitezelor vs și vd se pot atinge o multitudine de puncte diferite.
Determinarea unui punct care poate fi atins de robot prin manipularea parametrilor de control
poarta numele de ecuațiile cinematice directe al e robotului.
(2.7)
Ecuația de mai sus descrie mișcarea de rotație a unui robot la o distanță R dintre
mijlocul axei celor două roți și centrul instantaneu de rotație CIR cu viteza unghiulară ω.
Astfel, prin integrarea ecuației de mai sus, pornind de la un set de condiții ini țiale ( x0, y0,
θ0), se poate determina poziția robotului la un timp t, pe baza parametrilor de control vd(t) și
vs(t).
(2.8)
Determinarea parametrilor de control (vitezele vs și vd) pentru a ajunge într – un anumit
punct deja stabilit, poartă numele de ecuațiile cinematice inverse ale robotului. Datorită faptului
că rezolvarea sistemului de ecuații de mai sus este anevoioasă, se propun două cazuri speciale de
mișcare a robotului cu sistem de locomoție diferențial.
În primul caz, dacă se egalează vS cu vd = v, ecuația de mai sus devine:
(2.9)
21
Astfel, pentru a deplasa un robot din ( xS, yS, θs) în ( xg, yg, θg), cu θg ≠ θS, se poate folosi
legea a doua de control ( vs = -vd) până în momentul în care θg = θS, urmând apoi a deplasa
robotul folosind prima lege de control ( vs = v d).
În al doilea caz, dacă se alege vs = -vd = v, ecuația devine:
(2.10)
2.2.2. Sisteme de locomoție de tip triciclu
În cazul acestui tip de sistem, avem o structură alcătuit din 3 roți, în care roata din față
este cea care asigură direcția și deplasarea robotului mobil (fig. 2 .8). În acest caz robotul este
controlat prin unghiul α și prin viteza de deplasare v.
Fig. 2.8 Robot cu mișcare de tip triciclu
Dacă roata din față este poziționată la un unghi α, robotul se va roti cu viteza unghiulară
ω, la o distanța R pe direcția unei linii perpendiculare și care trece prin roțile din spate. R și ω se
pot determina din:
(2.11)
(2.12)
Precum s -a menționat în cazul sistemului de locomoție diferențial, ecuațiile cinematice
inverse sunt destul de complicate, și din aceleași considerente, se analizează două cazuri
speciale.
Dacă α=0, robotul se deplasează înainte, poziția lui fiind data de:
22
(2.13)
În cel de al doilea caz, dacă robotul este capabil să manevreze roata motoare la unghiuri
de +/- 90 grade, atunci robotul se poate întoarce pe loc, iar poziția va fi dată de:
(2.14)
De notat faptul că, dacă roata din fața nu se poate roti la unghiuri de +/ – 90 grade, este
imposibil de a schimba orientarea robotului fară a -i schimba poziția.
2.2.3. Sisteme de locomoție de tip sincron
Mișcarea sincron se caracterizează prin faptul că toate roțile se rotesc uniform.
Practic roțile se rotesc concomitent și virează în același timp. Precum se poate observa din
figura 2.9 configurațiile tipice de sisteme sincrone presupun existența a trei ro ți motoare
așezate pe vârfurile unui triunghi echilateral.
Fig. 2. 9 Sistem de locomoție sincron
Un tip de dispunere mecanică pentru un robot cu mișcare de tip sincron este de a
folosi două motoare, unul pentru a mișca roțile înainte sau înapoi, iar cel de-al doilea pentru a
roti toate roțile într -o direcție.
Astfel roboții cu locomoție sincronă se rotesc în jurul centrului lor geometric datorită
faptului că toate rotile rămân paralele.
Ecuațiile cinematice directe pentru un robot cu sistem de locomoție sincron, care se
rotește cu viteza unghiulară ω și se deplasează cu viteza v, sunt:
23
2.2.4. Sisteme de locomoție Ackerman
Aceste sisteme de locomoție se regăsesc la toate structurile mobile cu două sau patru
roți. La sistemul Ackerman, roțile din față se pot roti individual, astfel încât să modifice
distanța față de centrul instantaneu de rotație aflat pe o linie perpendicula ră ce trece prin
centrul roților din spate (fig. 2.10).
Fig. 2.1 0 Sistem de locomoție Ackerman
În sistemul de locomoție bazat pe modelul Ackerman, robotul se rotește în jurul unui
punct aflat pe dreapta perpendiculară care trece prin mijlocul roților de pe spate, la o distanță R,
dată de relația:
(2.16)
Pentru ca robotul să fie în mișcare de rotație, cea de -a doua roată motoare trebuie rotită
cu un unghi α2, unde:
(2.17)
Dezvoltarea sistemului de locomoție Ackerman, cât și alte sisteme se găsesc în [16].
(2.15)
24
2.2.5. Sistem e de locomoție omnidirecțional e cu roți universale simple și duble
Roata universal ă are mai multe role pasive, acestea fiind dispuse pe circumferința
butucului roții. Rolele se pot roti liber în jurul axelor proprii, axe care formează în spațiu un
unghi de 90° cu axa de rotație a roții. Deoarece acest tip de roată oferă un contact intermitent
cu solul, datorită golurilor dintre două role succesive, vehiculul va suferi unele vibrații pe
direcție verticală.
Roata universală (fig. 2.11.a) prezintă trei grade de libertate: rotația în jurul axei
verticale care trece prin punctul de contact cu solul, rotația în jurul axei proprii și rotația
liberă a rolelor în jurul axelor proprii. [17]
Fig. 2.1 1 a. Roata universală simplă
b. Roata universal ă dublă
Pentru a minimiza vibrațiile pr ovocate de intermitențele contactului roată -sol, au fost
oferite alte soluții de roți omnidirecționale. Roata universală dublă (fig. 2.11.b) dispune de un
contact continuu cu solul, însă punctele de cont act cu aceasta nu sunt continue. Așadar poate
cauza vibrații orizontale.
2.2.6. Sistem de locomoție omnidirecțional cu roți suedeze
Roata Mecanum (suedeză) este similară roții universale, diferența fiind faptul că,
contactul dintre roată și sol este continuu, iar rolele sunt montate încât axele acestora să fie
înclinate cu un unghi oarecare în raport cu axa centrală a roții . Unghiul de înclinare al rolelor
este în majoritatea cazurilor de 45°, însă poate avea și alte valori . Axa longitudinală a roții
este singura motoare, rolele de pe circumferința roții fiind pasive.
Avantajul acestui tip de roată (fig. 2.1 2) este dat faptul că , deși roata este antrenată în
jurul axei sale principale, aceasta se poate deplasa cu frecare foarte mică pe orice direcție .
25
Fig. 2.1 2 Roată omnidirecțională suedeză
2.2.7. Sistem e de locomoție cu șenile
În general, sistemul de deplasare cu șenile (fig. 2.13) este realizat din urm ătoarele
componente:
– o roata motoare I
– o roata de întindere II
– doua sau mai multe roți purtatoare III
– una sau doua roți de susținere IV a șenilei V
– șenila V, realizată cu lanț articulat plan
Fig. 2.1 3 Sistem de locomoție cu șenilă
Roata motoare I este o roată dințată conducătoare care angrenează cu lanțul articulat
ce formează șenila V.
Roata dințată II asigură ghidarea și întinderea șenilei.
Roțile purtătoare III realizează punctele de sprijin și de rulare ale robotului mobil;
aceste puncte se obțin pe ramura inferioară a lanțului șenilei care formează ramura întinsă
care vine în contact cu suprafața terenului. Numărul roților purtătoare este funcție de
greutatea robotului și de sarcina pe care acesta o ridică sau o transportă.
26
Roțile de susținere IV formează puncte de susținere a ramurii superioare a șenilei,
care este ramura slăbită, liberă a șenilei.
Șenila V este compusă din mai multe e clise de cauciuc, cu armătură metalică, montate
articulat cu bolțuri pentru realizarea lungimii totale necesare. Pentru a obține aderența la sol,
șenila este prevăzută la partea exterioară cu proeminențe în X, iar pe partea interioară sunt
prezenți dinți p entru angrenarea cu roata motoare.
Indiferent de construcție, șenila formează o cale de rulare fără sfârșit, prin care se
obține propulsia robotului, se asigură aderența acestuia cu solul și se obține o presiune
specifică pe sol mult mai mică decât în caz ul altor soluții.
Acționarea roții motoare se face cu un motor electric de curent continuu, alimentat de
la baterii de tip acumulator.
Sistemul de locomoție cu șenile permite deplasarea robotului înainte și -napoi,
efectuarea virajelor la stânga și dreap ta, precum și o rotație în plan orizontal. De asemenea,
șenila permite robotului mobil să urce și să coboare pe scări cu pante până la 45°.
2.3. Sistemul de control
Controlul presupune existența unui model matematic și a unei inteligențe care să
acționeze pe baza acestui model. Modelul matematic al robotului este obținut din legile de
bază ale fizicii ce îi guvernează mișcările. Pe de altă parte, în majoritatea cazurilor,
inteligența este furnizat ă de componentele electromecanice (senzori, motoare ) și circuitele
electronice care furnizează interfața cu lumea fizică. Orice sistem de control are cel puțin un
controler și un actuator.
Controlerul furnizează "inteligența" necesar ă pentru a controla sistemul. Acesta
primește infomațiile senzoriale și evaluează comenzile de control care trebuie trimise
actuatorilor pentru a efectua sarcinile specifice. De obicei, controlerul are în componență o
memorie, o unitate de calcul, hardware -ul adecvat pentru interfața cu lumea externă (senzori
și actuatori) și hardware -ul pentru interfața cu utilizatorul.
Actuatorul convertește semnalul primit de la controler într -o acțiune fizică.
În general, sistemele de control pot fi împărțite în două categorii:
– sisteme cu buclă deschisă
– sisteme cu buclă închisă
La sistemele cu buclă deschisă, controlerul măsoară independent valoarea tensiunii
sau curentului util actuatorului pentru a efectua sarcina propusă, iar apoi o trimite acestuia.
27
Datorită faptului că nu există o reacție inversă, controlerul nu va ști dacă ac tuatorul a efectuat
sarcina propusă. Acest tip de sistem depinde doar de cunoașterea de către controler a
parametrilor și caracteristicilor actuatorului. Schema unui sistem de control simplu în buclă
deschisă ar putea arăta ca cel din figura 2 .14.
Fig. 2.14 Sistemul cu buclă deschisă
Actuatorul este reprezentat de un motor care acționează o platformă robotică,
procesul este reprezentat roata care se rotește, iar variabila controlată este viteza. Sistemele cu
buclă deschisă sunt convenabile în aplicați ile în care actuatorii execută operații sigure și
repetabile. Pentru a avea siguranța că actuatorii folosiți în sisteme cu buclă deschisă execută
corespunzător operațiile, aceștia trebuie calibrați la intervale fixe de timp.
La sistemele cu buclă închisă, mărimea de ieșire este permanent controlată cu ajutorul
unui traductor care convertește acestă mărimea într -un semnal electric pe care îl aduce înapoi
în comparator. Calea directă este reprezentată de trecerea semnalului de la controlor către
actuator, ia r calea de reacție (buclă de reacție inversă) este reprezentată de trecerea
semnalului de la senzor către controler. În figura 2.15 este reprentată schema bloc a unui
sistem cu buclă închisă.
Fig. 2. 15 Sistemul cu bucla închisă
Semnalul de eroare al si stemului reprezintă diferența dintre poziția actuală și poziția
nominală. Controlerul operează continuu pentru a micșora această eroare. Pentru a minimiza
această eroare a sistemului controlerul poate folosi o strategie de control mai simplă sau mai
28
comple xă. Caracteristica de autocorecție a controlului prin buclă închisă decide alegerea
acestuia în multe aplicații, chiar dacă solicită componente electronice adiționale, deoarece
oferă performațe sigure și repetabile, chiar și atunci când componentele sistem ului nu au
caracteristici repetabile sau precise.
Totuși, una dintre probleme schemei de reglare în buclă închisă, prezentată într -o
formă simplificată în figura 2.15, este aceea că în momentul când, spre exemplu, se dorește
deplasarea robotului la o anu mită locație din mediu, începând cu momentul când se introduce
viteza dorită și până când aceasta se modifică apare o anumită latență. Acesta latență se
concretizează prin faptul că robotul nu se va opri în locația dorită, el continuând să se
deplaseze pen tru puțin timp. Datorită acesteia pot să apară oscilații în jurul locației dorite, ce
se manifestă prin deplasarea robotului înainte și înapoi față de punctul de referință dorit.
Rezolvarea acestei probleme se face prin folosirea unui controler de tipul PI D, reprezentat în
figura 2.16.
Fig. 2. 16 Schema de reglare folosind un controler PID
29
Capitolul 3
CONDUCEREA ROBOȚILOR MOBILI
3.1. Odometria și erori de navigare
Odometria este metoda de navigare cea mai des utilizată pentru determinarea poziției
momentane a unui robot mobil. În cele mai multe aplicații practice, odometria oferă ușor
informații cu privire la poziționarea în timp real, cu ajutorul măsurătorilor peri odice ale
poziției absolute. Frecvența la care măsurătorile absolute trebuie efectuate depinde, în mare
măsură, de precizia sistemului de odometrie.
Odometria poate reduce dramatic costurile sistemelor roboților mobili, deoarece
simplifică problema funda mentală de determinare a poziției.
Problema apare când roțile alunecă, iar terenul se modifică, astfel încât distanța
parcursă și orientarea robotului vor fi diferite față de valorile estimate. Dacă luăm în calcul și
faptul că nici un robot nu este perfec t simetric, distanțele parcurse de partea stângă pot să
difere de cele de pe partea dreaptă. Efectul acestor factori va cauza erori de poziționare tot
mai mari, pe măsură ce robotul se deplasează.
În ciuda acestor restrângeri, majoritatea cercetătorilor sunt de acord asupra faptului că
odometria reprezintă o parte importantă a unui sistem de navigație pentru un robot, iar
sarcinile de navigație vor fi simplicate dacă precizia odometrică poate fi îmbunătățită.
Dacă luăm în considerare studiile de cercet are, observăm că se vizeză îmbunătățirea
preciziei odometrice a roboților mobili. Atribuim această observație faptului că o mare parte
din cercetarea în robotica mobilă se face de către comunitatea de inteligență artificială. Acești
cercetători sunt tradiț ional concentrați pe aspectele cele mai superioare ale roboticii. [18]
Pentru că majoritatea roboților mobili folosesc roți sau șenile, odometria a devenit
practic omniprezentă la aproape toți roboții mobili, datorită următoarelor argumente:
– Odometria poate fi folosită între actualizările absolute de poziție cu repere de pe teren.
Având în vedere precizia de poziționare necesară, precizia crescută a odometriei permite
actualizări de poziție absolută mai puțin frecvente. În consecință, sunt n ecesare mai puține repere
din teren pentru o distanță dată de parcurs. [24]
– Datele de odometrie pot fi combinate cu măsurători de poziție absolută pentru a furniza
o estimare a poziției mai bună și mai sigură [13], [21].
30
– Mulți algoritmi de cartografi ere și potrivire a reperelor din teren (de exemplu:. [13]),
admit că robotul își poate menține poziția destul de bine pentru a permite robotului să caute
repere într -o zonă limitată și pentru a adapta caracteristicile respective în zona limitată pentru a
obține un timp de procesare scurt și pentru a îmbunătăți corectitudinea de potrivire [13].
– În unele cazuri, odometria este singura informație de navigație disponibilă; de exemplu:
atunci când nu este disponibilă o referință externă, atunci când situațiil e împiedică introducerea
sau selectarea marcajelor în mediul înconjurător, sau atunci când un alt subsistem senzor nu
furnizează date utilizabile. [24]
În figura 3.1 se prezintă schematic o poziție finală în care se dorește ca să ajungă
robotul.
Fig. 3.1 Poziția dorită
Pentru ca robotul să ajungă din poziția inițială care are coordonatele ( xi, yi, θi) în
poziția finală ( xf, yf, θf) trebuie ca pentru începul să realizeze o rotație cu unghiul θ1, apoi să
parcurgă o traiectorie Δ, iar la final pentru a se orienta să realizeze încă o rotație cu unghiul
θ2. În figura 3.2 este prezentată schematic acest traseu al robotului și cum realizeză fizic
comanda care i -a fost dată. În codul program s -au intr odus valorile ( xf, yf, θf), unde s -a
calculat automat pe baza următoarelor ecuațiilor matematice valoarea unghiurilor θ1 , θ2 și a
traiectoriei Δ:
31
(3.1)
(3.2)
(3.3)
(3.4)
(3.5)
(3.6)
unde: lST = circumferința roții stânga a encoderului
lDR = circumferința roții dreapta a encoderului
Fig. 3.2 Traseul urmat de robot pentru a ajunge în poziția finală
Schema logică a achiziției de date aferente odometriei este prezentată în figura 3.3 ,
iar codul scris pe placa de dezvoltare Arduino este urm ătorul:
void achizitie_encoder()
{
stanga = encoderStanga.read();
dreapta = encoderDreapta.read();
32
deltaStanga = stanga – stanga_precedent;
deltaDreapta = dreapta – dreapta_precedent;
vitezaStanga = (stanga – stanga_precedent) * 100;
vitezaDreapta = (dreapta – dreapta_precedent) * 100;
vitezaMedie = (vitezaStanga + vitezaDreapta) / 2;
deltaViteza = vitezaMedie – vitezaMedieAnterioara;
vitezaMedieAnterioara = vitezaMedie;
stanga_precedent = encoderStanga.read();
dreapta_precedent = encoderDreapta .read();
}
void calcul_xy()
{
float delta_distanta, delta_orientare;
float orientare_medie;
float orientare_medie, delta_orientare;
float K, dx, dy;
distanta = (dreapta + stanga) / 2;
orientare = orientare_initiala + (dreapta – stanga);
delta_distanta = distanta – distanta_precedenta;
delta_orientare = orientare – orientare_precedenta;
orientare_medie = (orientare + orientare_precedenta) / 2;
if (delta_orientare = = 0)
K = 1;
else
{
K = (float) (sin((float)delta_orientare / 2)) / (delta_orientare / 2);
}
dx = (float) K * delta_distanta * cos(orientare_medie);
dy = (float) K * delta_distanta * sin(orientare_medie);
x = (float) x + dx;
y = (float) y + dy;
33
orientare_precedenta = orientare;
distanta_precedenta = distanta;
Serial.print("orientare = "); Serial.print(orientare);
Serial.print(" x = "); Serial.print(x);
Serial.print(" y = "); Serial.println(y);
}
Figura 3.3 Schema logică pentru calculul odometriei
34
3.1.1. Erori si stematice și nesistematice
Odometria este bazată pe ecuații simple, ușor de implementat și folosește date de la
encodere de roți incrementale, care au un preț de cost scăzut. Însă, odometria se bazează și pe
presupunerea că impulsurile de la encodere pot fi transpuse în deplasări liniare în raport cu o
suprafață. O problemă deosebită o reprezintă alunecarea roților: dacă o roată a alunecat,
atunci encoder -ul asociat va înregistra rotația roții, indiferent dacă aceste rotații nu ar
corespunde cu o deplasare liniară a roții. Pe lângă această problemă, există multe altele mult
mai subtile. Toate aceste surse de erori se încadrează în una din cele două categorii de erori:
erori si stematice și erori nesistematice.
3.1.1.1. Erori sistematice
a. Diametrele roților sunt inegale.
b. Media diametre celor două roților reale este diferită de diametrul nominal al roților.
c. Nealinierea roților.
d. Ampatamentul efectiv este diferit de ampatamentul nominal.
e. Rezoluția encoder -ului este limitată.
f. Rata de eșantionare a encoder -ului este limitată.
3.1.1.2. Erori nesistematice
a. Trecerea peste o suprafață cu denivelări.
b. Trecerea peste obiecte neprevăzute pe anumite suprafețe.
c. Derapajul roților datorită:
– suprafețelor alunecoase;
– supra -accelerării;
– rotaților rapide;
– forțe externe (interacțiunea cu elemente externe);
– forțe interne (pe roți de tip caster);
– lipsa contactului între roată și podea.
Erorile sistematice sunt deosebit de grave, deoarece se acumulează în mod constant.
Pe cele mai netede suprafețe interioare, erorile sistematice contribuie mult mai mult la erorile
de odometrie decat cele nesistematice. Însă, pe suprafețe aspre cu neregula rități
semnificative, erorile nesistematice pot fi predominante.
35
Erori suplimentare de odometrie pot fi introduse prin însăși ecuațile de odometrie,
deoarece acestea aproximează mișcarea arbitrară ca o serie de segmente scurte de linie
dreaptă. Precizia acestei aproximări depinde de frecvența de eșantionare în ceea ce privește
viteza robotului.
De obicei, când este instalat, pe un robot mobil, un sistem hibrid de navigare, odometrie
– puncte de reper, frecvența reperelor este stabilită empiric și se ba zează, în cel mai defavorabil
caz, pe erorile sistematice. Astfel de sisteme sunt pasibile de a eșua, atunci când intervin una sau
mai multe erori mari nesistematice.
Este de semnalat faptul că mulți cercetători dezvoltă algoritmi care estimează
incertitu dinea poziției unui robot prin odometrie (de exemplu, [21], [20]). Cu ajutorul acestei
metode, fiecare poziție calculată a robotului este încadrată de o caracteristică "eroare eliptică", ce
indică o regiune de incertitudine pentru poziția actuală a robotul ui (vezi figura 3.4) [24]. De
regulă, aceste elipse cresc cu distanța de parcurgere, până ce o măsurare a poziției absolute
diminuează incertitudinea în creștere, și "resetează" mărimea erorii eliptice. Aceste tehnici de
estimare trebuie să se bazeze pe parametri de estimare a erorii, derivați din observațiile de
performanță odometrică ale robotului. Deoarece magnitudinea erorilor nesistematice este
imprevizibilă, acești parametri pot lua în calcul doar erorile sistematice.
Fig. 3. 4 Ilustrarea conceptul ui de elipsă de incertitudine
3.1.2. Măsurarea erorilor de odometrie
Rareori abordată în robotica mobilă, o problemă importantă o reprezintă măsurarea
cantitativă a erorilor de odometrie. Calibrarea nesatisfăcătoare a platformelor mobile și
rapoartele de necomparat ale preciziei odometrice în comunicările științifice se dat orează
lipsei unor practici de măsurare bine definite în vederea cuantificării erorilor de odometrie.
Pentru a birui, Borenstein și Feng [18], au dezvoltat metode de măsurare cantitativă a erorilor
de odometrie sistematice, și, într -o măsură limitată, a er orilor nesistematice. Aceste metode
36
au la bază un model de eroare simplificat, în care două dintre erorile sistematice sunt
considerate a fi dominante:
Eroarea datorată diametrelor roților inegale, definită ca:
Ed = DDR/DST (3.7)
unde DDR și DST sunt diametrele roților reale dreapta, respectiv stânga.
Eroarea cauzată de incertitudinea privind ampatamentul efectiv, definită ca:
Eb=bactual/bnominal (3.8)
unde b reprezintă ampatamentul vehiculului.
3.1.2.1. Măsurarea erorilor sistematice din odometrie
În acestă parte vom introduce metode pentru izolarea și măsurarea erorilor sistematice
de odometrie. În cele ce urmează vom avea în discuție două secvențe de testare care ne permit
să tragem concluzii despre acuratețea odometrică generală a robo tului, și să comparăm
performanța pe scară largă.
Primul test de referință poartă denumirea de "calibrarea urmărind o traiectorie
pătratică unidirecțională". Acest test sau anumite variante ale acestui test, au fost menționate
în literatura de specialitate (de exemplu, [21], [20]) însă acest test de evalu are nu este potrivit
pentru roboții mobili cu tracțiune diferențială. Pentru a depăși deficiențele testului de
calibrare care urmărește o traiectorie pătratică unidirecțională, vom introduce mai târziu un
test de referință numit "calibrarea urmărind o trai ectorie pătratică în ambele direcții".
Calibrarea urmărind o traiectorie pătratică unidirecțională
Figura 3.5.a prezintă o traiectorie pătrată unidirecțională de 2 x 2 m. Robotul pleacă
de la poziția x0, y0, θ0, care este marcată ca START. Zona de plecare trebuie să se afl e în
apropiere de colțul dintre cei doi pereți perpendiculari. Acești pereți se utilizează ca referință
fixă, înainte și după cursă: determinarea precisă a poziției și orientării absolute a robotului se
realizează măsurând distanța dintre trei puncte specifice de pe robot și pereți.
Pentru a se putea efectua testul este nevoie ca robotul să fie programat astfel încât să
parcurgă întreaga traiectorie pătratică prin toate cele patru colțuri. Vehiculul va reveni la zona de
plecare da torită traiectoriei impuse, însă, din cauza erorilor de odometrie și control, nu chiar
precis în poziția inițială. Datorită faptului că scopul acestui test reprezintă determinarea erorilor
37
de odometrie și nu a erorilor de control, nu este necesar ca vehicu lul să fie programat să revină la
poziția inițială precis, revenirea la aproximativ zona de start fiind suficientă. La finalizarea căii
de rulare pătratice, cel care testează, măsoară, cu ajutorul pereților ficși luați ca referință, poziția
absolută a vehi culului. Aceste măsurători absolute sunt comparate cu poziția și orientarea
vehicului calculate din datele odometrice. Rezultatul este reprezentat de o serie de erori de
poziționare de întoarcere datorate odometriei și notate cu εx, εy, și εθ.
Fig. 3. 5.a Eroarea de odometrie
Fig. 3. 5.b Eroarea de odometrie datorată diametrelor diferite ale roților
38
unde:
– εx = x abs – xcalc;
– εy = y abs – ycalc;
– εθ = θabs – θcalc;
– εx, εy, εθ = erorile de poziție și orientare datorate odometriei;
– xabs, yabs, θabs = poziția și orientarea absolută a robotului;
– xcalc, ycalc, θcalc = poziția și orientarea robotului calculată prin odometrie.
În figura 3.5.a, traiectoria prezentată cuprinde patru segmente de linie dreaptă și patru
rotații pure, la colțurile pătratului, în jurul centrului instantaneu de rotație al robotului. Poziția
finală a robotului reprezentată în acestă figură vizualizează eroarea de odometrie. Analizând
rezulta tele acestui experiment, persoana care experimentează poate trage două concluzii
diferite: prima este aceea ca diametrele roților inegale, E d, precum se arată de către traiectoria
ușor curbată din figura 3.5.b (linia punctată) sunt rezultatul erorii de odo metrie. Sau, eroarea
de odometrie reprezintă consecința incertitudinii cu privire la ampatament, E b. În exemplul
prezentat în figura 3.5.b, E b este motivul pentru care robotul s -a rotit 87 de grade, în loc de 90
de grade dorite (traiectoria punctată din Fi gura 3.5.b).
După cum se poate observa în figura 3.5.b, oricare dintre cele două situații ar putea
genera aproape aceeași eroare de poziție. Deoarece două surse diferite de eroare pot provoca
aceeași eroare generală, trebuie avută grija să nu se facă o gr eșeală gravă, și anume corectare
în software doar a uneia dintre cele două surse de erori. O astfel de greșeală este foarte
periculoasă, deoarece va provoca rezultate aparent "excelente", precum se poate observa în
figura 3.6. În acest exemplu, experiment atorul a început "îmbunătățirea" performanței în
software -ul de control prin ajustarea ampa tamentului b. Conform ecuațiilor odometriei pentru
vehicule cu transmisie diferențială, experimentatorul trebuie doar să crească valoarea lui b
pentru a face robotul să rotească mai mult în fiecare rotație nominală de 90 grade. În acest
sens, experimentatorul va ajusta curând valoarea b la o valoare aparent "idelă", care va
provoca robotului o rotație de 93 de grade, prin urmare compensând efica ce eroarea de
orientare de 3 grade înglobată pe fiecare latură ușor curbată, dar nominal dreaptă, a
traiectoriei pătratice.
De reținut faptul că o altă metodă des întâlnită pentru test, este aceea de a parcurge o
traiectorie sub forma cifrei 8 [15]. Însă această metodă poate avea aceleași dezavantaje ca și
cea a traiectoriei drepte unidirecționale.
39
Calibrarea urmărind o traiectorie pătratică în ambele direcții
Exemplul detaliat din partea precedentă reprezintă faptul că experimentul căii de
rulare pătra tice unidirecțională este neadecvat pentru a testa performanța odometriei în cazul
platformelor cu transmisie diferențială, pentru că poate ascunde cu ușurință două erori de
odometrie cu compensare reciprocă.
Pentru a birui, Borenstein și Feng [18] au int rodus experimentul căii de rulare
pătratice bidirecționale, denumit "University of Michigan Benchmark (UMBmark)".
"UMBmark" admite că experimentul de parcurgere a unei traiectorii pătratice trebuie să fie
efectuat atât în sens orar, cât și în sens trigonom etric (antiorar). În figura 3.7, se prezintă
eroarea dublu ascunsă de la exemplul din figura 3.6, care devine clar vizibilă când traiectoria
pătratică se parcurge în direcția opusă. Acest lucru este realizabil, fiindcă cele două erori
sistematice dominante, când rulează într -o singură direcție se pot compensa una cu cealaltă,
iar atunci când rulează în direcția opusă se adaugă reciproc și duc la creșterea erorii generale.
Rezultatul experimentului bidirecțional poate să arate similar cu cel ilustr at în figura
3.7, unde se prezintă rezultatele experimentale reale, realizate de un robot ce poartă o sarcină
distribuită uniform. În acest experiment, robotul a fost programat să parcurgă o traiectorie
pătratică de 2 x 2 metri, având ca reper de plecare p unctul (0,0).
Fig. 3. 6 Efectul celor două erori sistematice de odometrie Eb, Ed. Efectul erorilor se anulează
reciproc când traiectoria este parcursă într -o singură direcție.
40
Fig. 3. 7 Efectul celor două erori de odometrie Eb, Ed când traiectoria este parcursă în ambele
sensuri. Efectul acestora se însumează.
În figura 3.8 sunt reprezentate pozițiile de oprire din cinci serii, fiecare dintre acestea
în sens orar (CW) și antiorar (CCW).
De reținut faptul că figura 3.8 reprezintă o vedere mărită a zonei țintă. Interpretarea
rezultatelor se face astfel:
Pozițiile de oprire după ce s -a parcurs traseul în sens orar și antiorar sunt
grupate în două zone distincte.
Distribuția rezultatelor după ce s -a parcurs traseul în sens orar și antior ar este
rezultatul unor erori sistematice, precum cele menționate mai sus. Prin urmare,
în figura 3.8 se arată că într -un vehicul necalibrat ce se deplasează pe o
suprafață destul de netedă, contribuția ero rilor sistematice la eroarea totală de
odometrie poate fi cu precădere mai mare decât contribuția erorilor
nesistematice.
41
Fig. 3. 8 Pozițiile obținute în urma parcurgerii unei traiectorii pătratice în sens orar și antiorar
pentru un robot mobil necalibrat
După desfășurarea experimentului UMBmark, s -ar putea vrea stabilirea unei singure
valori numerice care exprimă precizia odometrică a vehiculului testat în raport cu erorile
sistematice. Pentru a limita la minim efectul erorilor sistemat ice, s -a sugerat [24], [20] să se
analizeze centrul de greutate al fiecărui grup de erori de poziționare în calitate de reprezentant
a erorilor sistematice de odometrie pe direcțiile de parcurgere a traseului în sens orar și
antiorar.
Coordonatele celor d ouă centre de greutate se calculează din rezultatele ecuației
următoare:
(3.9)
unde:
n = 5 este numărul de încercări în fiecare direcție.
42
Valoarea absolută de compensare a celor două centre de greutate de la origine sunt
notate cu rc.g.,cw și rc.g., ccw și sunt date de relațiile:
(3.10)
În final, valoarea mai mare dintre rc.g., cw și rc.g., ccw este definită ca "măsură a preciziei
odometrice pentru erorile sistematice ":
Emax, sist = max (r c.g.,cw , rc.g., ccw ) (3.11)
Deoarece aplicațiile practice necesită luarea în calcul a celei mai mari erori posibile de
odometrie, nu se folosește media celor două centre de greutate r c.g., cw și rc.g., ccw . De asemenea,
se impune a fi reținut faptul că eroarea de orientare finală εθ nu este considerată în mod
explicit în expresia Emax, sist . Aceast lucru se datorează faptului că ansamblul erorilor
sistematice de orientare sunt conținute în erorile de poziție finale. Așadar, din moment ce
traiectoriile pătratice au laturi de lungime fixă, erorile sistematice de orientare se transpun
direct în erori de poziție.
3.1.2.2. Măsurarea erorilor nesistematice
Din răspândirea erorilor poziției finale, prezentată în figura 3.8, pot fi derivate
anumite concluzii privind susceptibilitatea unui vehicul de a conduce la erori nesistematice.
Când se rulează procedura UMBmark pe suprafețe netede cum ar fi o suprafață de beton,
lipsită de denivelări vizibile sau fisuri, indicarea ordin ului de mărime a erorilor nesistematice
poate fi obținută prin calculul deviației standard estimate σ. Borenstein și Feng [18] atrag
atenția asupra faptului că există doar o valoare limitată a cunoașterii σ,având în vedere că σ
reflectă doar interacțiune a dintre vehicul și o anumită suprafață. În plus, se poate demonstra
că din compararea σ în cazul a doi roboți diferiți (indiferent dacă se deplasează pe aceeași
suprafață), nu se poate trage concluzia că roboții cu σ mai mare prezintă susceptibilitate mai
mare a erorilor nesistematice.
În aplicațiile reale, este nevoie ca cea mai mare perturbare posibilă să fie stabilită și
utilizată în testare. Spre exemplu, abaterea standard estimată a testului reprezentat în figura
3.8 nu denotă nicicum ce eroare este de prevăzut în cazul în care o roată a robotului trece
43
imprevizibil peste o denivelare sau fisură a unei suprafețe. Datorită acestor motive, este
complicat (poate imposibil) să se realizeze o procedură generală, ce poate fi aplica tă în
testare, cuantifica bilă pentru erorile nesistematice. Cu toate acestea, un test care permite
vehiculelor cu transmisie diferențială compararea susceptibilității la erori nesistematice a fost
propus de Borenstein [18]. Testul, denumit " UMBmark extins ", folosește, precum UMBma rk,
aceeași traiectorie pătratică care a fost parcursă în ambele sensuri, însă, în plus, prezintă
denivelări artificiale. Denivelările acestea sunt introduse printr -un cablu de tip casnic, rotund
și electric, precum cablurile de alimentare. Un asemenea cab lu are un diametru aproximativ
de 9 până la 10 milimetri. Datorită formei sale rotunde și a învelișului din plastic, chiar și
roboților de dimensiuni reduse le este permis să -l traverseze, fără un impact fizic prea mare.
În testul propus cablul este plasat , în timpul mișcării, de 10 ori sub una dintre roțile robotului.
Pentru a se asigura o mai bună repetabilitate acestui test și pentru a se evita compensarea
reciprocă a erorilor, Borenstein și Feng [18], sugerează ca aceste 10 denivelări să fie
introduse c ât mai uniform posibil, în timpul primului segment drept al căii de rulare, și
întotdeauna sub roata care se află în interiorul pătratului. Se poate remarca [18] că cel mai
vizibil efect pentru fiecare denivelare arată o eroare de orientare în direcția ro ții care
întâlnește denivelarea. În exemplul de mai jos, eroarea de orientare rezultată dintr -o
denivelare de înălțime h = 10 mm este de aproximativ Δθ = 0.44° [18].
În urma acestor teste se dorește a se determina parametrul cel mai util pentru
exprimarea susceptibilității vehiculului la erori nesistematice. Se consideră, în figura 3.9,
Calea A și Calea B. Conform testului UMBmark extins, dacă cele 10 denivelări erau
concentrate la începutul primului segment drept (Calea A), atunci eroarea de poziționare
finală ar fi fost foarte mică. Însă, dacă cele 10 denivelări erau concentrate spre sfârșitul
primului segment drept (Calea B), atunci eroarea de poziționare finală ar f i fost mai mare.
Datorită acestei sensibilități de poziționare, nu se recomandă a se lua în considerare locația
exactă a denivelărilor, ca un indicator pentru susceptabilitatea unui robot la erori
nesistematice. În schimb, trebuie utilizată eroarea de orie ntare εθ. Valoarea lui εθ, chiar dacă
este mai dificil de măsurat în cazul unghiurilor mici, reprezintă un indicator cantitativ mai
solid pentru compararea performanțelor diferiților roboți. Așadar, se poate măsura și
exprimarea susceptibilitatea la erori nesistematice a unui vehicul în termeni de eroare de
orientare absoluta medie, definită astfel:
(3.12)
44
unde:
n = 5 este numărul de experimente realizate în sens orar sau sens antiorar, exponenții
"sys" și "nonsys" indică un rezultat obținut din testul UMBmark obișnuit (de erori
sistematice), sau din testul UMBmark extins (pentru erorile nesistematice). Ecuația ( 3.12)
îmbunătățește acuratețea în identificarea erorilor nesistematice prin eliminarea tendinței
sistematice a vehiculului, având în vedere:
(3.13)
De reținut și că argumentele din Σ în ecuația ( 3.12) reprezintă valorile absolute ale
erorilor de orientare, fără semn. Aceasta se datorează faptului că nu se dorește cazul în care
două erori de orientare de semn opus se anulează reciproc. Spre exemplu, dacă într -o cursă
εθ= 1°, iar în următoarea cursă εθ = -1°, nu se poate trage concluzia că eroarea de orientare
este 0 . Dacă folosim media de eroare de retur absolută calculată în ecuația ( 3.12), se poate
calcula corect εθ. În antiteză, în ecuația ( 3.13) media aritmetică reală se calculează pentru
identifica rea unei tendințe fixe.
Fig. 3. 9 Rezultatele testului UMBmark. Pozițile finale ale robotului sunt sensibile la locația
denivelărilor unei suprafețe și căi de rulare
45
3.1.3. Reducerea erorilor de odometrie
În cazul platformelor mobile comerciale, precizia odometriei depinde de design -ul
cinematic și anumite dimensiuni critice. Anumite cosiderații specifice legate de design au o
directă acțiune negativă asupra acurateții odometriei:
Vehiculele cu roți care poartă marea parte din greutat ea totală sunt pasibile de a
induce derapaj când are loc inversarea direcției ("efectul coșului pentru cumpărături"). Însă
dacă roțile poartă doar o mică parte din greutatea totală și se inversează direcția, atunci nu se
va produce derapajul, se arată în [15].
Vehiculele care au un ampatament mic sunt mai predispuse, decât vehiculele cu un
ampatament mai mare, la erori de orientare. Spre exemplu, robotul LabMate de la TRC, cu
transmiție diferențială, are un ampatament de 340 de milimetri (13,4 inch). În ac est caz,
Nehmzow [15], sugerează, ca înainte ca o nouă "calibrare" să fie necesară, odometria cu
LabMate să fie limitată la aproximativ 10 metri (33 ft).
Se cunoște faptul că pentru odometrie, în mod ideal, roțile ar trebui să fie "muchie de
cuțit", subțiri și incompresibile. Roțile ideale sunt realizate din aluminiu și au, pentru o mai
buna tracțiune, pe partea exterioară un strat subțire de cauciuc. În re alitate, acest lucru nu este
realizabil pentru toate vehiculele ușoare, pentru că roțile în conducerea diferențială sunt, în
majoritatea cazurilor roți motoare, și au nevoie de o suprafață mai mare de contact cu
suprafața de rulare.
De obicei, tracțiunea sincronă, oferă o mai bună precizie odometrică decât vehiculele
cu transmisie diferențială. Acest lucru este valabil mai ales atunci când trec peste denivelări
ale suprafeței de rulare: denivelările arbitrare vor afecta doar o roată la un moment dat.
Astfel, din moment ce celelalte două roți de antrenare rămân în contact cu solul, acestea
asigură un plus de tracțiune și forță roții afectate de derapaj. Prin urmare, distanța totală
parcursă se va reflecta în mod corespunzător în traiectoria indicată de odom etrie. [15]
Alte încercări de îmbunătățire a preciziei odometrice se bazează pe modelarea mai
detaliată. Spre exemplu, Nehmzow [15] a utilizat segmente circulare pentru a înlocui
segmentele liniare din fiecare perioada de eșantionare. Însă beneficiile ace stei abordări sunt
relativ mici. Nehmzow [15] a comparat (în simulări) tehnici odometrice convenționale,
bazate doar pe cinematic ă, cu soluții bazate pe dinamica vehiculului. El a prezentat rezultatele
simulării, pentru a arăta că atât în cazul roboților m obili cu transmisie diferențială, cât și în
cazul celor cu transmisie convențională, modelul cinematic a fost precis numai la vi teze mai
mici, de până la 0,3 m/ s, atunci când efectuează un viraj strâns. Acest rezultat coincide cu
observațiile experimentale , care sugerează că erorile datorate derapajului roții pot fi reduse
46
într-o oarecare măsură prin limitarea vitezei vehiculului în timpul întoarcerii, și prin limitarea
accelerațiilor.
3.1.3.1. Reducerea erorilor de odometrie sistematice
În cele ce urmează se vor face cunoscute metode specifice pentru reducere erorilor de
odometrie sistematice. Aceste abordări pot aduce îmbunătățiri preciziei odometrice prin
ordine de magnitudine, când sunt aplicate individual sau în combinație.
a) Roți aux iliare cu encodere
În general, prin adăugarea unei perechi de roți encoder libere, deci care să nu fie de
tracțiune, precum se arată schematic în figura 3.10, se poate îmbunătăți precizia odometrică.
Datoriă faptului că aceste roți nu se folosesc pentru transmisterea energiei, ele pot fi realizate
foarte subțiri și având pe partea exterioară doar un strat subțire de cauciuc.
Un asemenea proiect este fezabil vehiculelor cu transmisie diferențială, transmisie
triciclu, și vehicule Ackerman.
Hongo și col aboratorii [23] au realizat un asemenea set de roți encoder pentru a
îmbunătăți precizia unui robot mobil cu transmisie integrală care cântărește 350 de kilograme
(770 lb). Hongo și colaboratorii [23], au raportat că, după o calibrare atentă, vehiculul lor a
avut o marjă de eroare mai mică de 200 milimetri (8 inch) pentru o distanță de cursă de 50
metri (164 ft). Suprafața solului pe care a fost efectuat acest experiment a fost una "bine
pavată".
Fig. 3. 10 Platformă mobilă cu roți cu encodere purtătoare
47
b) Platformă mobilă trasă, cu encodere
O abordare alternativă este utilizarea unei platforme mobile de urmărire a robotului,
respectiv trasă de acesta, cu două roți encoder [24]. Un asemenea encoder "trailer" a fost
construit și testat l a Universitatea din Michigan (a se vedea figura 3.11).
Acest encoder a fost conceput pentru a se atașa la un robot mobil. Așa cum a fost
explicat mai sus, este practic imposibil de a se folosi odometria la vehiculele pe șenile,
datorită derapajelor numeroase între șenile și podea în timpul rotațiilor. Ideea en coder trailer –
ului este de a efectua odometria ori de câte ori caracteristicile de sol permit să facă acest
lucru. Când robotul trebuie să se deplaseze peste obstacole mici, scări, sau teren accidentat,
encoder trailer -ul se va ridica. Argumentul pentru ac easta funcționare part -time a encoder
trailer -ului este că în multe aplicații robotul va parcurge în mare măsură suprafețe care nu
sunt netede și că, prin urmare, ar beneficia de cele mai multe ori de odometria encoder trailer –
ului. [24]
Fig. 3. 11 Platforma mobilă trasă, cu encodere
c) Calibrarea sistematică
Calibrarea atentă a unui robot mobil reprezintă o altă abordare în vederea
îmbunătățirii preciziei odometrice fără a folosi dispozitive suplimentare sau senzori. Precum
a fost explicat mai sus, erorile sistematice reflectă proprietăți inerente ale fiecărui robot
aparte. Ca urmare a uzurii sau a distribuțiilor de sarcini diferite, acestea se schimbă foarte
încet. Așadar, aceste erori rămân aproape constante pe intervale lungi de timp [18].
Calibrarea specifică a vehiculului reprezintă o altă modalitate de a reduce astfel de erori, însă
48
calibrarea este destul de dificilă întrucât abaterile în geometria vehiculului sau a elementelor
sale pot provoca erori de odometrie substanțiale.
Borenstein și Feng [24] au dezvoltat o procedură sistematică de măsurare și cor ectare
a erorilor de odometrie. Acestă metodă impune ca procedura UMBmark, descrisă mai sus, să
se ruleze de cel puțin cinci serii, fiecare dintre acestea în sens orar și antiorar. În contextul
testului UMBmark, Borenstein și Feng, definesc două noi caract eristici de eroare. Aceste
caracteristici, denumite de tip A, respectiv de tip B, reprezintă erori de odometrie de
orientare. Eroarea tip A este definită ca o eroare de orientare care scade (sau crește) rotația
robotului în timp ce străbate o traiectorie p ătratică în sens orar și antiorar. În schimb, tipul B
este definită ca fiind o eroare care scade (sau crește) rotația robotului când rulează într -o
singură direcție, dar crește (sau scade) rotația, atunci când străbate traiectoria în direcția
opusă. În fig ura 3.12 sunt prezentate exemple de erori de tip A și tip B.
Fig. 3. 12 Erori de Tip A și Tip B în sens orar și antiorar.
a. Tip A erori cauzate de distanța dintre roți
b. Tip B erori cauzate de diametrele diferite ale roților
49
În figura 3.12.a este prezentat cazul în care robotul se deplasează de patru ori pentru o
valoare nominală de 90 de grade per rotație. Deoarece ampatamentul real al vehiculului este
mai mare decât valoarea nominală, acesta a realizat o rotație de doar 85 d e grade în fiecare
colț al traiectoriei pătratice. Defapt, în exemplul din figura 3.12.a, robotul s -a rotit doar θtotal =
4 x 85° = 340°, în loc de valoarea dorită de θnominal = 360°.
Se poate observa că în cazul parcurgerii în ambele sensuri, orar și ant iorar, rotația
robotului este mai mică decât valoarea dorită, adică:
(3.14)
Așadar, eroarea de orientare este de tip A.
Figura 3.12.b prezintă traiectoria robotului cu diametrele roților inegale. Eroarea se
exprimă printr -un traseu curbat, care se adaugă, la sfârșitul cursei în sens antiorar, la
orientarea generală, însă reduce rotația generală în sens orar, spre exemplu,
(3.15)
Așadar, eroarea de orientare este de tip B.
Într-o parcurgere reală a traiectoriei erorile sunt de tip A și tip B. Problema apare însă
la distingerea celor două tipuri de erori, precum și la calcularea factorilor de corecție a
acestora din erorile măsurate în poziția finală a robotului, în testul UM Bmark. În continuare
vom aborda această problemă.
În figura 3.12 se prezintă contribuția erorilor de tip A. Ne amintim faptul că erorile de
tip A influențează rotația la colțurile pătratice și sunt cauzate în mare parte de Eb. Cu α este
notată eroarea de roțatie față de roțatia nominală de 90° și se măsoară în [rad].
Tot în figura 3.12 se arată și contribuția erorilor de tip B. Ne amintim faptul că erorile
de tip B duc spre o traiectorie ușor curbată în schimbul uneia drepte în timpul parcurgerii
acelor patru segmente drepte ale traiectorie pătratice programate și sunt cauzate în mare parte
de raportul diametrelor roților, Ed. Cu β este notată eroarea de orientare incrementală, pe care
o prezintă robotul la sfârșitul fiecărui segment drept datorită mișcă rii curbate.
Formulele de calcul pentru α, respectiv β se pot obține din figura 3.12 din relații
geometrice simple (pentru o derivare detaliată a expresiilor pentru α și β a se vedea [18])
prezentate mai jos:
(3.16)
(3.17)
50
Se obțin α și β în [°].
Raza de curbură R a traiectoriei curbilinii prezentate în figura 3.12.b poate fi aflată
folosind relațiile geometrice simple, ca fiind:
(3.18)
Având raza R calculată, se poate determina foarte ușor raportul dintre cele două
diametre de roți care au cauzat deplasarea robotului pe o curbă, în detrimentul unei trai ectorii
drepte:
(3.19)
Analog se poate calcula eroarea de ampatament Eb. Ținând seama că ampatamentul b
este direct proporțional cu rotația reală, se poate aplica proporția:
(3.20)
Astfel că:
(3.21)
unde, conform definiției din ecuația ( 3.8):
(3.22)
Odată ce Eb și Ed sunt calculate, este ușor să folosim valorile lor ca factori de compensare în
software -ul de control [24]. Rezultatul reprezintă o reducere de 10 – 20 de ori a erorilor
sistematice.
Figura 3.13 reprezintă rezultatul unei sesiuni de calibrare tipice. DDR și DST reprezintă
diametrele efective ale roților, iar b ampatamentul efectiv.
51
Fig. 3. 13 Erorile de poziție înainte și după calibrare
Această procedură de calibrare se poate realiza cu o ruletă obișnuită de măsurare.
Deasemnea necesită, pentru executarea procedurii de calibrare completă și măsurarea erorilor
de poziționare individuale, circa două ore.
3.1.3.2. Reducerea erorilor de odometrie nesistematice
În acestă parte se prezintă metode de reducere a erorilor nesistematice de odometrie.
Metodele discutate mai sus se pot con funda, datorită faptului că acestea au fost puse în
practică pe plat forme experi mentale oarecum complexe. To tuși, metodele prezentare mai jos
pot fi aplicate în multe alte configurații cinematice.
a) Referință reciprocă
Sugiyama [25] a propus să se folosescă doi roboți care pot măsura pozițiile lor
reciproc. Atunci când unul dintre roboți se mută într -un alt loc, celălalt rămâne, observă
mișcarea și determină noua poziție a primului robot. Prin urmare, în orice moment, robotul
se loc alizează în funcție de un obiect fix: robotul fix. Așadar, abordarea "stop and go"
limitează eficiența roboților.
52
b) Corecția erorii de poziție internă
O altă abordare a reducerii erorilor de odometrie o reprezintă procedura de Corecție a
Erorilor Poziției I nterne (IPEC). Prin acestă abordare, doi roboți mobili își corectează
reciproc erorile de odometrie. Așadar, deosebirea față de prezentarea din secțiunea a), metoda
IPEC funcționează atunci când amândoi roboții se află în mișcare continuă, rapidă [18].
Pentru a implementa acestă metodă, este necesar ca amândoi roboții să poată măsura distanța
lor relativă, precum și să o desfășoare continuu și precis. Această implementare poartă
numele de Legătura Conformă Autonomă cu Eroare de Recuperare a Poziției (CLAPPE R).
Ea oferă feedback în timp real în ceea ce privește poziția relativă și orientarea celor două
vehicule. Rotația fiecărui vehicul cu o rezoluție de 0,3 grade se măsoară cu ajutorul unui
encoder absolut plasat la fiecare capăt al unui element rigid care i nterconectează amândoi
roboții, în timp ce, pentru a măsura distanța de separare în intervalul a 5 milimetri, se
folosește un codificator linear. Propria sa poziție prin odometrie și poziția este calculată de
fiecare vehicul într -o manieră convențională, b azată pe deplasare și pe informațiile de viteză
derivate din encoderele roților din stânga și dreapta. Sistemul CLAPPER, prin analiza
soluțiilor de odometrie percepute de către cele două vehicule împreună cu orientarile lor
relative cunoscute, poate detect a și reduce în mod semnificativ, pentru ambele vehicule,
poziția erorilor.
Principiul de funcționare se fundamentează pe conceptul ratei de creștere a erorii
descris de Borenstein [18] ,[24], care face o distincție între erorile de odometrie de "creștere
rapidă" și "creștere lentă". Spre exemplu, atunci când un robot cu tracțiune diferențială trece
peste o denivelare din podea, acesta va experimenta îndată o eroare de orientare apreciabilă
(de exemplu, o eroare de creștere rapidă). Eroarea de deplasare l aterală asociată este inițial
foarte mică (de exemplu, o eroare de creștere lentă), dar crește în mod nelimitat ca urmare a
erorii de orientare. Algoritmul de corecție a erorii efectuează măsurători de poziție relativă cu
o rată de actualizare suficient de rapidă (20 ms) pentru a permite fiecărui vehicul să detecteze
erorile de creștere rapidă a orientării, bazându -se pe faptul că erorile de poziție laterale
acumulate de ambele platforme în intervalul de eșantionare au fost mici. [24]
53
Fig. 3. 14 Modificarea orientării robotului A față de robotul B, după lovirea unui obstacol .
Pentru a înțelege mai bine modul în care metoda IPEC folosește conceptul ratei de
creștere a erorii, considerăm, de exemplu, cazul tipic prezentat în figura 3.14, unde ambele
vehicule sunt aliniate inițial în timp ce călătoresc în față. În această configurație inițială (de
exemplu, înainte ca vehiculul A să întâlnească o denivelare) vehiculul A poate aștepta centrul
vehiculului B direct în spatele său, pe linia Le, iar encoderul rotativ al vehicului A va
confirma acestă așteptare. După ce traversează o denivelare, orientarea vehicului A se va
schimba – un fapt necunoscut pentru calculul odometriei vehiculului A. Vehiculul A este,
prin urmare, încă în așteptarea ve hiculului B de -a lungul extinderii liniei Le. Însă, din cauza
rotației suportate fizic de către vehiculul A, encoderul absolut de pe vehiculul A va raporta că
vehiculul B este de fapt acum văzut de -a lungul liniei Lm. Diferența unghiulară între Lm și Le
reprezintă eroare de orientare de odometrie măsurată în cazul vehiculului A, care poate fi de
54
îndată corectată. Trebuie precizat faptul că, dacă vehiculul B ar întâlni o denivelare în același
moment, atunci rotirea efectuată de către vehiculul B nu ar tre bui să prejudicieze măsurarea
erorii de orientare.
Elementul de leg ătură constituie o referință pseudo -stabilă în coordonate globale,
propria sa orientare fiind exclusiv impusă de pozițiile relative ale punctelor sale finale, care
sunt, la rândul lor, lez ate doar de deplasările laterale ale celor două vehicule. Deoarece
deplasările laterale sunt de creștere lentă, elementul de legătură se rotește foarte puțin. Pe de
altă parte, creșterile rapide a disturbanțelor azimutale a vehiculelor nu sunt cuplate prin
intermediul articulațiilor de rotație la elementul de legătură, permițând astfel encoderelor
rotative să detecteze și să cuantifice erorile de orientare instantanee ale vehiculelor, chiar și
atunci când ambele se află în mișcare. Borenstein [18] oferă o d escriere mai completă a
acestui concept inovator și raportează că rezultatele experimentale indică îmbunătățirea
performanței odometriei până la două ordine de magnitudine peste roboții mobili
convenționali.
Trebuie remarcat, totuși, faptul că nu este nea părat nevoie de o structură cinematică
mai complexă a robotului pentru a pune în aplicare metode de corecție a erorii IPEC. În
figura 3.16 este prezentat principiul de funcționare a unui ansamblu cap tractor și
semiremorcă, ansamblu prezentat în figura 3.15. Rezultatele simulării, care indică
posibilitatea punerii în aplicare a metodei IPEC pe un ansamblu cap tractor și semiremorcă,
au fost prezentate în [18].
Fig. 3. 15 Metoda IPEC utilizând o "semiremorcă" dotată cu encodere
55
Fig. 3. 16 Propunerea de implementare a metodei IPEC
3.1.3.3 Navigația inerțială
O altă metodă pentru îmbunătășirea odometriei o constituie navigația inerțială,
dezvoltată inițial pentru a fi implementată pe aeronave. Acestă tehnologie a fost rapid
adaptată și este utilizată într -o gamă largă de aplicații, inclusiv navigarea rachetelor tactice și
strategice, navelor spațiale, submarinelor și navelor. Principiul de funcționare presupune
utilizarea măsurătorilor furnizate de accelerometre și giroscoape pentru a urmări poziția și
orientarea relativă a unui obiect la un punct de start, o or ientare și o viteză cunoscute.
Unitățile de măsură inerțiale conțin de obicei trei giroscoape ortogonale și trei accelerometre
56
ortogonale, care măsoară viteza unghiulară, respectiv accelerația liniară. Prin prelucrarea
semnalelor oferite de aceste dispozit ive este posibilă urmărirea poziției și orientării unui
dispozitiv.
Deși reprezintă un concept destul de simplu, punerea în aplicare este destul de
solicitantă. Acest lucru se datorează în primul rând surselor de erori ce afectează în mod
negativ stabili tatea giroscoapelor folosite pentru a asigura corecția de atitudine. Din cauza
costurilor ridicate de producție și întreținere s -a exclus efectiv orice aplicare practică a acestei
tehnologii în domeniul vehiculelor ghidate automat [24]. Spre exemplu, un si stem de
navigație inerțial de înaltă calitate (INS), cum ar fi cel folosit la o aeronavă comercială va
avea o deviere de 1850 de metri într -o oră de funcționare, și un cost între 50 -70.000 $ [23].
Pachetele high -end INS utilizate în aplicații la sol au dem onstrat performanță mai bună decât
0,1 la sută din distanța parcursă, dar au și un cost cuprins între 100 -200.000 $, în timp ce
versiunile de performanță mai mică (de exemplu, un procent din distanța parcursă) se aflau
între 20 -50.000 $ [26].
Rezultatele experimentale de la Universitatea din Oxford, în Marea Britanie [22], de
la Universitatea Montpellier din Franța [24] și de la Universitatea din Michigan [18]
semnalează o abordare pur inerțială de navigație care nu prezintă avantaje realiste (de
exemplu, sunt prea scumpe) pentru aplicații în robotică. Prin urmare, utilizarea hardware -ului
INS în aplicațile de robotică de până acum a fost limitat la scenarii ca re sunt greu adresabile
de alternative mai practice. Un exemplu a unei astfel de situații este prezentată de Sammarco
[24], care raportează rezultatele preliminare în cazul unui INS folosit pentru a controla un
vehicul autonom într -o aplicație din domeniul mineritului.
Navigația inerțială este atractivă datorită faptului că este de sine stătătoare și nu
presupune informație externă de mișcare pentru poziționare. Un avantaj important al
navigației inerțiale îl reprezintă capacitatea sa de a da măsurători ra pide de dinamică și de
latență redusă. Cu atât mai mult, senzorii de navigație inerțiali prezintă zgomot și surse de
eroare ce sunt independente de senzorii externi [27]. Spre exemplu, zgomotul și eroarea unui
sistem de navigație inerțial se cade să fie de stul de diferit, față de un sistem fundamentat pe
repere fixe. Senzorii de navigație inerțială nu radiază, nu se bloc hează și sunt de sine stătători .
Fundamental, accelerometrele oferă informații despre modificarea vitezei, iar giroscoapele
furnizează o mo dificare a deplasărilor unghiulare. Informațiile dinamice sunt oferite prin
masurători directe. Totuși, principalul dezavantaj îl reprezintă faptul că modificarea vitezelor
liniare, precum și a vitezelor unghiulare trebuie să fie integrată de două ori, res pectiv o dată,
pentru a furniza poziție liniară, și respectiv orientare. Așadar, până și cele mai mici erori din
57
mediul variațiilor vitezelor ar duce la erori mult mai mari în rândul pozițiilor și deplasărilor.
Cu un cost cuprins între 1.000 de dolari și 5 .000 de dolari, aceste dispozitive au devenit acum
mult mai potrivite multor aplicații din robotică.
a) Accelerometre
Diferite universități au evaluat ajustarea accelerometrelor pentru poziționarea
roboților mobili. În acest studiu informal s -a observat că la accelerații inferiore există un
raport foarte slab semnal -zgomot (de exemplu, la rotațile la viteză mică). Acceler ometrele
sunt sensibile la terenuri neuniforme și suferă în cazul derapajelor extinse, deoarece orice
perturbare dintr -o poziție perfect orizontală va provoca senzorul să detecteze accelerația
gravitațională g. Un sistem inerțial de navigație vizează elimi narea problemei din față prin
includerea unui senzor de înclinație [22]. Pentru a anula componenta gravitațională care se
proiectează pe fiecare axă a accelerometrului, s -au transmit acestuia informațiile legate de
înclinare. Totuși, în funcție de frecvenț a modificărilor de accelerație, rezultatele procurate din
sistemul de compensare la înclinare semnalează o rată de abatere a poziției de la 1 la 8 cm/s
(0.4-3.1 inch/s). Aceasta reprezintă o rata de eroare neadmisibilă pentru majoritatea
aplicațiilor din r obotică.
b) Giroscoapele
Pentru a diminua informațiile eronate ale odometriei pentru roboții mobili au fost
folosite timp de o perioadă îndelungată giroscoape.
Un sistem INS sofisticat, compus din două giroscoape, un senzor de înclinare pe două
axe și un accelerometru solid -state triaxial, a fost dezvoltat de Barshan și Durrant -Whyte
[22]. Prețul acestui sistem a fost de 5.000 £ (aproximativ 8.000 $). În acestă l ucrare au fost
evaluate două giroscoape diferite, primul a fost ENV -O5S Gyrostar de la Murata [28], iar al
doilea a fost giroscopul Solid S tate Angular Rate Transducer ( START ) , realizat de GEC [29].
Performanța celor două giroscoape a fost evaluată de căt re Barshan și Durrant -Whyte [22],
aceștia constatând o deviație relativ mare, de ordinul a 5 până la 15°/min. Apoi, cercetătorii
de la Oxford, au dezoltat un model sofisticat al erorii giroscoapelor, model folosit ulterior
într-un filtru Kalman extins. În figura 3.17 se prezintă rezultatele experimentului pentru cele
două giroscoape, START (în partea stângă) și Gyrostar (în partea dreaptă). Datele de ieșire
brute din giroscoape sunt reprezentate cu linii punctate subțiri, iar datele de ieșire după ce au
fost prelucrate datele brute din EKF sunt reprezentate cu linii punctate groase.
58
Fig. 3. 17 Modificarea orientării și a poziției unghiulare pentru griroscopele START și
Gyrostar
Graficele din figura 3.17 de mai sus prezintă zgomotul măsurat de cele două
giroscoape pe perioada de staționare.
Barshan și Durrant -Whyte [22] au determinat că deviația standart, utilizată aici ca o
măsură a cantității de zgomot, a fost de 0,16°/s pentru giroscopul START , respe ctiv 0,24°/s
pentru Gyrostar . Însă, mai interesantă este abaterea unghiulară, prezentată în cele două
grafice inferioare ale figurii 3.17. În majoritatea aplicaților cu roboți mobili, este interesantă
poziționarea robotului, ci nu rația de schimbare a aces teia. Așadar, pentru a obține poziția ϕ,
rația măsurată a lui ϕ trebuie să fie integrată. După integrare, orice înclinare mică constantă în
măsurarea ratei se transformă într -o pantă constantă, eroare nelimitată, precum se arată în cele
două grafice inferi oare din figura 3.17. La terminarea experimentului care a durat cinci
minute, giroscopul START a acumulat o eroare de poziție egală cu -70.8 grade, pe când a lui
Gyrostar a fost de -59 grade (a se observa liniile subțiri din figura 3.17). Totuși, erorile
59
acumulate au fost mult mai mici: eroarea maximă de poziționare pentru giroscopul START a
fost de 12 grade, pe când a lui Gyrostar a fost de -3.8 grade.
În general, după o perioadă de testare de cinci minute, rezultatele după aplicarea EKF
arată o reducere cu cinci până la șase ori în măsurătoarea unghiulară. Însă, chiar și cu EKF,
ne putem aștepta în continuare la o rată de abatere de 1 până la 3°/min.
Komoriya și Oyama [20] au realizat un studiu pentru a îmbunătăți precizia generală
de estimare a poziț iei, folosind un sistem care folosește un giroscop din fibră optică, în
legătură directă cu informații de odometrie. Fuziunea acesta de infomații provenite de la două
sisteme de senzori diferite, se efectuează cu ajutorul unui filtru Kalman.
În figura 3.18 este reprezentată o simulare computerizată a unui studiu a urmăririi
unei traiectorii, fără figura 3.18.a și cu figura 3.18.b fuziunea de informații din giroscop.
Elipsele indică fiabilitatea estimărilor de poziție (posibilitatea ca robotul să rămână la fiecare
poziție estimată în interiorul elipselor este de 90 % din acestă simulare).
Fig. 3. 18 Simulare computerizată a cursei unui robot mobil
a. Doar odometrie, fără informații giroscopice.
b. Informații de odometrie i giroscopice.
Robotul mobil Melboy a fost folosit în experimente de către Komoriya și Oyama [20]
pentru a testa eficiența metodei lor.
Robotul Melboy a fost programat să urmeze traseul prezentat în figura 3.20.a. Viteza
maximă a lui Melboy a fost de 0,14 m/s (0,5ft/s), însă a ceasta a fost mult redusă la colțurile
traiectoriei. În figura 3.20.b este reprezentată comparare erorilor de poziție finale, fără și cu
informații giroscopice, pentru 20 de curse. Aceeași figură prezintă faptul că abaterea de la
estimarea erorilor de pozi ționare este mai mică în cazul când datele giroscopice au fost
60
folosite (de notat faptul că o abatere medie mare de la valoarea medie arată erori
nesistematice mari, precum se explică mai sus).
Komoriya și Oyama explică în [20] că abaterea notabilă de l a valorile medii în funcție
de origine, în ambele cazuri, poate fi redusă prin calibrarea atentă a erorilor sistematice a
robotului mobil.
De reținut că prin descrierea acestui experiment în [20] nu este evident imediat cum
"eroarea de estimare a poziție i" (adică, elipsele) din figura 3.20.b au fost găsite. Aceste
puncte ar trebui să fie măsurate prin marcarea poziției finale a robotului pe suprafața de rulare
(sau prin orice altă metodă echivalentă ce înregistrează poziția absolută a robotului și o
compa ră cu estimarea poziției calculate). Totuși, rezultatele graficului din figura 3.20.b,
par a fi prea exacte pentru eroarea absolută a poziției robotului. După parcurgerea traiectoriei
din figura 3.20.a, ar fi de așteptat o eroare de ordinul centimetrilor, nu milimetri (vezi, de
exemplu, [24]). Tocmai din această cauză, datele din figura 3.20.b se analizează ca
prezentând o eroare de poziție care a fost calculată de către computerul de pe robot, însă
nemăsurată absolut. [20]
Fig. 3. 20 Rezultatele experimentale ale robotului Melboy utilizând odometria cu și fără
senzor giroscopic.
a. traiectoria actuala a robotului
b. erorile de estimare a poziției cu și fără giroscop
61
3.2. Sisteme de reglare automat ă
Într-un sistem de reglare după eroare, precum cel din figura 3.21, regulatorul
îndeplinește rolul elementului de comanda.
Fig. 3. 21 Sistem de reglare automat
unde:
– RA = regulator automat
– EE = element de execuție
– P = proces controlat
– Tr = traductor
– C = comparator
Regulatorul automat are rolul de a prelua semnalul de abatere a(t) obținut în urma
comparației semnalul de referință i(t), care exprimă procentual valoarea dorită a mărimii
reglate și semnalul de măsură r(t), generat de traduct orul mărimii reglate. În urma procesării
celor două semnale după un algoritm dependent de comportamentul dinamic al procesului
reglat, regulatorul elaborează semnalul de comandă c(t) a elementului de execuție, prin
intermediul căruia se intervine asupra pr ocesului reglat pentru a aduce mărimea reglată la o
valoare cât mai apropiată de valoarea referinței. La trecerea sistemului de reglare din regimul
manual în regimul automat, algoritmul de comandă al regulatorului înlocuiește logica
operatorului uman.
3.2.1. Clasificarea regulatoarelor automate
a) după tipul acțiunii :
– RA cu acțiune continuă – RA liniare: P,I,PI,PD,PID
– RA neliniare: bipoziționale, tripoziționale
– RA discrete – RA cu impulsuri modulate
– RA numerice
62
b) după caracteristicile constructive
– RA unificate
– RA specializate
c) după sursa de energie externă
– RA directe
– RA indirecte
d) după natura semnalelor
– RA electronice
– RA pneumatice
– RA hidraulice
– RA mixte
Având în vedere că pentru noi prezintă interes doar regulatoarele automate cu acțiune
continuă, și anume regulatoarele liniare, în cele ce urmează vom dezvolta acestă discuție doar
asupra lor.
3.2.2. Regulatorul proporțional (P)
Acest regulator este ca racterizat printr -o ecuație de forma:
(3.23)
unde: KR reprezintă factorul de amplificare al regulatorului
Un regulator de tip P este caracterizat de asemenea prin banda de proporționalitate,
notată BP. Când domeniul de variație al erorii ε este egal cu domeniul de variație al mărimii
de comanda u (regulatoare unificate) , domeniul de proporționalitate se determină din relația:
=1
100 [%] (3.24)
Răspunsul indicial ideal al acestui regulator este prezentat în figura 3.22.
Fig. 3. 22 Regulator proporțional
a) variația treaptă la intrarea regulatorului proporțional;
b) răspunsul la intrarea treaptă a regulatorului proporțional.
63
Dacă domeniile de variație intrare -ieșire diferă, domeniul de proporționalitate este dat
de relația:
=100
[%] (3.25)
Factorul de proporționalitate K R, respectiv banda de proporționalitate BP, reprezintă
unicul parametru al regulatoarelor de tip P. Prin construcția regulatorului P acest parametru se
prevede a fi ajustabil în limite largi pentru a satisface o varietate mare de legi de reglare.
Astfel, dacă mărimile de la intrarea și ieșirea regulatorului au același domeniu de variație, K R
poate fi variat între 50 și 0,5, ceea ce corespunde unei benzi de proporționalitate cuprinse
între 2% și 200%.
3.2.3. Regulator proporțional – integrativ (PI)
Acest tip de regulator reprezintă o combinație între un regulator proporțional și unul
integral. Legea de reglare a regulatorului PI conține un termen care reprezintă acțiunea
proporțională P și un termen care asigură efectul integrator:
sau 1
TI (3.26)
unde : TI reprezintă constanta de timp de integrare ( TI = Ti ·KR )
Prima forma reprezintă tipul legii de reglare realizate de majoritatea regulatoarelor PI
industriale.
Fig. 3. 23 Regulator de tip PI
a) variația treaptă a intrării ;
b) raspunsul la treaptă al ieșirii regulatorului de tip PI.
3.2.4. Regulator proporțional – derivativ (PD)
Un astfel de regulator introduce o componentă proporțională, similară cu aceea a
regulatorului PI și o componentă derivativă D, ultima componentă introducând o
proporționalitate între mărimea de ie șire u și derivata în timp a mărimii de intrare, ε .
64
Legea de reglare PD se exprimă prin:
d
sau D
(3.27)
Coeficientul TD = T d / KR se numește constantă de timp de derivare a regulatorului.
Prin utilizarea unui regulator PD se reduce durata regimului tranzitoriu.
Fig. 3.2 4 Regulator de tip PD
a) variația treaptă a intrării ;
b) răspunsul la treaptă al ieșirii regulatorului de tip PD.
3.2.5. Regulator proporțional -integral -derivativ (PID)
Regulatoarele PID sunt unele din cele mai complexe regulatoare industriale,
asigurând performanțe de reglare superioare. Ele înglobează efectele proporțional P, integral I
și derivativ D expuse mai sus, conform legii de reglare:
d
sau (3.28)
1
TI D
Fig. 3. 25 Regulator de tip PID
a) variația treaptă a intrării ;
b) răspunsul la treaptă al ieșirii regulatorului de tip PID.
65
Regulatoarele PID, de construcție mai complexă decât cele de tip P, PI,PD au trei
parametri ce pot fi acordați: KR, TI și TD. Astfel, se regăsesc în acest algoritm și dezavantajele
fiecărei componente. Algoritmul PID se recomandă, în general, pentru procese cu două
constante de timp predominante, alegând astfel parametrii de acord ai regulatorului încât
aceste constante de timp să fie reduse. Elementul de tip D conduce la un impuls la începutul
procesului tranzitoriu, asigurând sistemului de reglare un caracter de an ticipație. Elementul
de tip D reduce suprareglajul sistemului, dar necesită precauții la acordarea regulatorului în
cazul unor procese cu timp mort.
Reglarea cu acțiune proporțională – integrală – diferențială (PID) deține peste 90% din
aplicațiile actual e de control și automatizare, în primul rând pentru că este o soluție eficientă
și ușor de implementat. Fiind inițial conceput pentru sistemele liniare, invariante în timp,
algoritmul PID a evoluat, permițând inginerilor să controleze chiar și sisteme cu o dinamică
complexă. În realitate, toate sistemele dispun de componente neliniare, care prezintă reale
provocări în utilizarea controlului clasic bazat pe feedback, de tip PID.
3.2.6. Corecția unui sistem cu ajutorul regulatoarelor PID
3.2.6.1. Modelul motorului de curent continuu utilizând viteza unghiulară ca
mărime de ieșire din sistem
Unul dintre cele mai utilizate elementele de execuție în lanțurile cinematice destinate
poziționărilor de precizie este motorul de curent continuu care asigură în mod direct
realizarea mișcărilor de rotație, iar în asociere cu mecanisme modificatoare de traiectorie
poate asigura și realizarea mișcărilor de translație.
În figura 3.26 este prezentată schema de principiu a motorului de c.c. comandat pe
indus, precum și diagrama simplificată a rotorului.
Fig. 3.2 6 Schema simplificata a motorului de c.c.
– + R L
e = K M ,
b
66
Vom defini următoarele mărimi ce caracterizează sistemul, împreună cu valorile
acestora:
– momentul de inerție al rotorului J = 0,01 kg m2/s2;
– coeficientul frecării vâscoase b = 0,1 Nms;
– constanta tensiunii electromotoare K v [V/rad/s];
– constanta cuplului electromagnetic K t [Nm/A];
– în sistemul internațional de unit ăți K v = K t =K, iar pentru cazul studiat K = 0,01 Nm/A;
– rezistența induslui R = 1 ;
– inductivitatea indusului L = 0,5 H;
– mărimea de intrare U (tensiunea aplicată indusului);
– mărimea de ieșire (viteza unghiulară a axului motorului);
– rotorul și axul motorului sunt considerate rigide.
Se pot scrie următoare ecuații ce definesc funcționarea sistemului studiat:
KUiRdtdiLiK bdtdJKeiKM
vt
(3.29)
Utilizând transformata Laplace, ecuațiile de mai sus pot fi exprimate în funcție de
variabila complexă s:
)( )() ()( )() (
s KUsIRsLsIKs bsJ
(3.30)
Eliminând termenul I(s) obținem funcția de transfer a circuitului deschis (figura 3.27),
unde mărimea de intrare este tensiunea aplicată indusului motorului, iar mărimea de ieșire
este viteza unghiulară de rotație a axului motorului:
2) )( ()()(
KRLsbJsK
sUs
(3.31)
67
Fig. 3. 27 Sistemul în circuit deschis
3.2.6. 2. Cerințe impuse privind performanțele sistemului
Pentru început, sistemul necompensat reprezentat de motorul de curent continuu poate
realiza o viteză de rotație numai de 0,1 rad/s la aplicarea unei tensiuni de intrare de 1 V
(aceasta se va demonstra în continuare odată cu simul area răspunsului circuitului deschis).
Deoarece cea mai importantă cerință pentru un motor este ca acesta să se rotească cu
viteza impusă, eroarea staționară a vitezei unghiulare trebuie să fie mai mică de 1%. Altă
cerință impusă este ca motorul să accelereze la viteza de regim staționar cât mai repede
posibil, aproape simultan cu punerea lui sub tensiune. În cazul studiat, ne impunem un timp
de stabilire de 2 secunde. O viteză unghiulară cu mult mai mare decât cea nominală poate
cauza defecțiuni mot orului, deci se va impune un suprareglaj mai mic de 5%.
3.2.6. 3. Răspunsul indicial al circuitului deschis
Vom crea un fișier MATLAB (m – file) și vom introduce următoarele linii:
J=0.01;
b=0.1;
K=0.01;
R=1;
L=0.5;
num=K;
den=[(J * L) ((J * R) + (L * b)) ((b * R) + K^2)];
sys=tf(num,den)
Rulând fișierul în spațiul de lucru MATLAB, vom obține:
Transfer function:
0.01
–––––––––
0.005 s^2 + 0.06 s + 0.1001
Adăugând următoarele comenzi fișierului creat și rulându -l în spațiul de lucru
MATLAB vom obține răspunsul indicial al sistemului necompensat (figura 3.28):
68
step (sys)
title ('Raspunsul indicial al circuitului deschis pentru sistemul necompensat')
grid
Fig. 3. 28 Răspunsul sistemului necompensat
3.2.6. 4. Corecția sistemului cu regulator PID
Funcția de transfer a unui regulator PID are următoarea formă:
sKsKsKsKsKKs HI P D
DI
P PID2
)(
(3.32)
Pentru început vom studia comportarea sistemului intoducând în circuitul de reglare
un regulator proporțional cu un factor de proporționalitate K p = 100 (figura 3.29). Pentru
aceasta trebuie să adăugăm următoarele comenzi la fișierul de mai sus:
Fig. 3. 29 Sistemul în circuit închis
0 0.5 1 1.5 2 2.5 300.010.020.030.040.050.060.070.080.090.1Raspunsul indicial al circuitului deschis pentru sistemul necompensat
Time (sec)Amplitude
69
Kp=100;
Pentru a determina funcția de transfer a circuitului închis vom utiliza comanda
feedback, adăugând următoarea linie:
sysc = feedback (Kp*sys, 1);
De remarcat că termenul 1 reprezintă funcția de transfer unitară pe calea de reacție.
Pentru a ridica răspunsul indicial adăugăm următoarele linii:
t = 0:0.01:5;
step (sysc, t)
grid
title ('Raspunsul indicial cu regulator proportional')
În figura 3.30 este prezentat răspunsul indicial obținut prin rularea fișierului de mai
sus într -o sesiune de lucru MATLAB.
Fig. 3. 30 Răspunsul indicial al sistemului închis cu K p = 100
Se observă că atât eroarea staționară cât și suprareglajul sunt prea mari. Din teoria
sistemelor și a reglajului automat cunoaștem că introducerea unei componente integrale a
regulatorului va elimina eroarea staționară, iar o componentă derivativă va elimina
suprareglajul.
Raspunsul indicial cu regulator proportional
Time (sec)Amplitude
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 500.20.40.60.811.21.4 System: sysc
Peak amplitude: 1.14
Overshoot (%): 24.9
At time (sec): 0.23
System: sysc
Settling Time (sec): 0.567System: sysc
Final Value: 0.909
70
Următorul pas se referă la introducerea unui regulator PID cu următoarele valori ale
constantelor: K p = 75; K i = 1; K d = 1. Liniile de program corespunzătoare sunt:
Kp=75;
Ki=1;
Kd=1;
numr=[Kd, Kp, Ki];
denr=[1 0];
sysr=tf(numr,denr);
sysd=series(sys,sysr);
sysc=feedback (sysd, 1);
t=0:1:200;
step (sysc, t)
grid
title ('Raspunsul indicial cu Ki si Kd mici')
Răspunsul indicial al sistemului este prezentat în figura 3.31. Se observă în acest caz
că timpul de stabilire este mult prea lung (de ordinul sutelor de secunde), fapt total
inacceptabil pentru un astfel de sistem. Pentru a reduce timpul de stabilire vom mări
constanta integrativă a regulatorului PID la K i = 200, făcând modificările corespunzătoare în
fișierul MATLAB.
Kp=75;
Ki=200;
Kd=1;
numr=[Kd, Kp, Ki];
denr=[1 0];
sysr=tf(nu mr,denr);
sysd=series(sys,sysr);
sysc=feedback (sysd, 1);
t=0:0.01:4;
step (sysc, t)
grid
title ('Raspunsul indicial cu Ki mare si Kd mic')
71
Fig. 3. 31 Răspunsul indicial al sistemului cu K p = 75, K i = 1, K d = 1
Rezultatul rulării noului fișier este prezentat în figura 3.32. Se observă că deși
răspunsul este mult mai rapid, suprareglajul este prea mare.
Fig. 3. 32 Răspunsul indicial al sistemului cu K p = 75, K i = 200, K d = 1
0 20 40 60 80 100 120 140 160 180 20000.10.20.30.40.50.60.70.80.91Raspunsul indicial cu Ki si Kd mici
Time (sec)Amplitude
Raspunsul indicial cu Ki mare si Kd mic
Time (sec)Amplitude
0 0.5 1 1.5 2 2.5 3 3.5 400.20.40.60.811.21.4System: sysc
Peak amplitude: 1.22
Overshoot (%): 22.3
At time (sec): 0.29
System: sysc
Final Value: 1
System: sysc
Settling Time (sec): 0.658
72
Pentru a reduce suprareglajul vom mări constanta derivativă a regulatorului la K d =
10. Răspunsul indicial în acest caz este prezentat în figura 3.33. De această dată sistemul se
încadrează în parametri de perfomanță impuși.
Kp=75;
Ki=200;
Kd=10;
numr=[Kd, Kp, Ki];
denr=[1 0];
sysr=tf(numr,denr);
sysd=series(sys,sysr);
sysc=feedback (sysd, 1);
t=0:0.01:4;
step (sysc, t)
grid
title ('Raspunsul indicial cu Kp=100, Ki=200 si Kd=10')
Fig. 3. 33 Răspunsul indicial al sistemului cu K p = 75, K i = 200, K d = 10
Raspunsul indicial cu Kp=100, Ki=200 si Kd=10
Time (sec)Amplitude
0 0.5 1 1.5 2 2.5 3 3.5 400.20.40.60.811.21.4
System: sysc
Peak amplitude: 1.03
Overshoot (%): 3.19
At time (sec): 0.66
System: sysc
Settling Time (sec): 0.957System: sysc
Final Value: 1
73
Sintetizând, în tabelul 3.1 de jos sunt prezentate efectele constantelor de reglare ale
unui regulator PID asupra răspunsul indicial al unui sistem în buclă închisă
Tabelul 3.1
Răspunsul sistemului
în buclă închisă Timpul
de creștere Suprareglajul Timpul
de stabilire Eroarea
staționară
KP Reduce Crește Modificări
minore Reduce
KI Reduce Crește Crește Elimină
KD Modificări
minore Reduce Reduce Modificări
minore
74
Capitolul 4
PROIECTAREA ȘI CONTROLUL SISTEMULUI DE
LOCOMOȚIE
Lucrarea de față își propune studiul asupra proiectării, realizării și comandării
sistemului de locomoție al unui nou tip de robot mobil acționat de două roți motoare cu
tracțiune diferențială, realizat în cadrul echipei CyberTech, echipa de robotică a Facultății de
Ingin erie din cadrul Universității "Lucian Blaga" din Sibiu. Acest robot mobil trebuie să
îndeplinească anumite sarcini în cadrul concursului european Eurobot – Robomovies 2015.
Pentru început, s -a pornit de la anumite aspecte specifice pe care trebuie să le
îndeplinească robotul mobil, precum sunt dimensiunile maxime de gabarit: perimetrul maxim
la începutul meciului să fie 1200 [mm], iar înălțimea maximă admisă de 350 [mm]. La baza
acestui robot mob il stau două componente majore : componenta hardware și cea software. În
cadrul acestei lucrări de licență sunt descrise aspectele care stau la baza ansamblului
hardware, precum și anumite aspecte legate de componenta software.
În cele ce urmează se v or prezenta componentele hardware c e stau la baza sistemului
de locomoție al robotului mobil, cât și caracteristicile acestora, urmând apoi să fie descrisă
partea de comandă a robotului mobil.
4.1. Caracteristicile sistemului de locomoție al robotului mobil cu două roți
motoare
În figura 4.1 este prezentat robotul mobil cu două roți motoare realizat în cadrul
echipei, pentru concursul Eurobot, ediția 2015.
Robotul este construit pe mai multe nivele, având la bază un șasiu de formă
ortogonală realizat din aluminiu. Am decis să se aleagă această formă ortogonală datorită
faptului că atunci când robotul ar intra într -o zona formată din două drepte perpendiculare
(spre exemplu, colțul mesei de joc) acesta să nu rămână blocat și să continue să execute
sarcinile rămase. Structura ext erioară este rigidizată cu capace confecționate din tablă, iar la
interior elementele de rigidizare sunt reprezentate de cinci profile din aluminiu. Deasemenea
structura exterioară a robotului protejează roțile cu encodere de eventuale perturbații din
exterior. Masa totală a ansamblului este de 10 [Kg], iar viteza maximă pe care o poate atinge
75
robotul are valoarea de 2 [m/s]. Tracțiunea are la bază două roți motoare, antrenate de două
motoare electrice de curent continuu fără perii (en. Brushless DC electri c motor) alimentate la
o tensiune de 24 [V]. Niște suporți special confecționați din textolit asigura prinderea și
rigidizarea celor două motoare. Transmisia de la motoare la roțile de tracțiune se face prin
intermediul a două reductoare cu roți cilindrice cu dinți drepți având un raport de transmisie
de 51:1. Pentru a reduce gabaritul plăcii de bază și a optimiza spațiul util cât mai bine am
decis să poziționăm motoarele pe un nivel superior acesteia, astfel încât fiecare arbore de
ieșire din reductor este cuplat cu roata de tracțiune aferentă prin intermediul unei curele de
transmisie. Cureaua de transmisie transmite mișcarea de rotație și puterea corespunzătoare de
la arborele reductorului la cel al roții motoare prin intermediul roților de curea (roată
conducătoare, respectiv roată condusă). S -a ales un diametru diferit al roților de curea (un
diametru mai mare pentru roata conducătoare, respectiv un diametru mai mic pentru roata
condusă), având raportul de transmisie 2:1, pentru o amplificare a vitezei robotului. Mișcarea
roții conducătoare este transmisă roții motoare prin intermediul unui arbore care este fixat de
cele două prin intermediul unor știfturi. Cele două roți motoare sunt montate pe un ax comun
având o acțion are independentă, diferențială. Astfel, ca să realizeze o mișcare de translație,
cele două roți de tracțiune ale robotului trebuie să fie acționate în același sens. Pentru a
realiza o mișcare de rotație, cele două roți ale robotului trebuie să fie acționat e în sensuri
diferite de rotație. Pentru măsurarea distanței parcurse s -au folosit două encodere
incrementale de rotație. Pe axul fiecărui encoder se află o roată liberă. Garda la sol este de
minim 10 [mm].
Legat de partea ele ctrică trebuie precizat că î ntreaga alimentare cu tensiune electrică
se face prin intermediul unui acumulator de tip L i-Po de 24 [V] cu o capacitate de 3300
[mAh]. Acesta oferă direct tensiunea de alimentarea părții de tracțiune, pe când pentru partea
logică se obține din această sur să tensiunea de alimentare (+5V) prin intermediul unui
stabilizator de tensiune de 24 -5[V]. Detecția adversarului și a elementelor de joc s -a efectuat
cu ajutorul unor "beacon" -uri bazate pe senzori ultrasonici, respectiv cu ajutorul un ui senzor
laser Sick. Pentru a comanda motoarele s -au folosit drivere de motor speciale pentru
motoarele de curent continuu fără perii, dezvoltate de către firma maxon motor.
Robotul mobil nu ar fi nici pe departe la fel de eficient, dacă nu ar fi susținut de o
platformă software adecvată. Se propune folosirea platformei software Arduino ca și coloană
vertebrală a sistemului software a robotului mobil. Astfel, controlul este realizat folosind
placa de dezvoltare Arduino Mega 2560. Aceasta este dotată cu un simplu mediu de
dezvoltare integrat, care rulează pe computerele personale obișnuite și permite utilizatorului
76
să scrie programe pentru Arduino, folosind limbajul C. Efortul imens realizat de comunitatea
open -source a dus la o dezvoltare explozivă a platformelor software mai sus menționate.
Figura 4.1 Robotul mobil cu două roți motoare dezvoltat pentru concursul Eurobot –
Robomovies 2015 în cadrul echipei CyberTech a Facultății de Inginerie din Sibiu
4.1.1. Placa de dezvoltare Arduino Mega 2560
Arduino Mega este o componentă electronică care are la bază un microprocesor din
familia AVR, respectiv un microcontroler ATmega2560. Această placă conține un număr de
54 de intrări sau ieșiri digitale din care 15 pot fi utilizate ca și ieșiri PWM, 16 intrări
analogice, 4 por turi UART (porturi serial e hardware), un cristal de qua rtz (oscilator) de 16
MHz, o conexiune USB și un buton de Reset. Placa poate opera pe o sursă de alimentare
externă de 6 până la 20 [V], recomandându -se totuși a se folosi în intervalul 7 – 12 [V]. S -a
ales această placă de dezvoltare datorită limbajului de programare relativ ușor, a multitudinii
de intrări/ieșiri digitale și a celor care pot fi folosite ca ieșiri PWM.
77
Fiecare dintre cele 54 de intrări digitale pot fi utilizate ca ieșire sau intrare, folosind
funcțiile: pinMode() , digitalWrite() , și digitalRead() . Pinii 2 până la 13 și 44 până la 46
furnizează ieșiri PWM, folosind funcția analogWrite() .
Arduino Mega 2560 prezintă o serie de facilități pentru comunicare cu un calculator, o
altă placă Arduino sau alte microcontrolere. O bibliotecă "SoftwareSerial" permite
comunicarea în serie pe oricare dintre pinii digitali ai lui Mega 2560.
În figura 4.2 este prezentată placa de dezvoltare utilizată la comanda și controlul
robotului mobil, iar în figura 4.3 este reprezentată schema electrică a acesteia.
Caracteristicile principale ale acestei plăci sunt următoarele:
– microcontroller: ATmega2560;
– tensiune de alimentare: 5 [V];
– interval al tensiunii de alimentare recomandat: 7 – 12 [V];
– intrări/ieșiri digitale: 54;
– intrări analogice: 16;
– curentul maxim pe intrările/ieșirile digitale: 40 [mA];
– memoria flash: 256 [KB];
– frecvența de ceas: 16 [MHz ];
Fig. 4. 2 Placa de dezvoltare Arduino Mega 2560 (vedere din față)
78
Fig. 4. 3 Schema electrică a plăcii de dezvoltare
4.1.2. Driver -ul pentru motoare ESCON Module 50/5
Acest driver de motoare de curent continuu este o componentă electronică de mare
putere și foarte robustă. Îl folosim pentru controlul motoarelor de curent continuu fără perii
folosind placa de dezvoltare Arduino Mega 2560. Arduino este capabil să scoată p e porturile
lui o putere foarte mică, care este insuficientă pentru a învârti un motor. Dacă vom conecta un
motor electric direct la un port Arduino, cel mai probabil asta va duce la arderea procesorului
din placa Arduino. Ca să nu se întâmple acest lucru, avem nevoie de un amplificator de
putere, care să ia putere din sursa de alimentare (acumulator), și să o transmită motoarelor
precum îi comanda Arduino. Acest amplificator poarta numele generic de "driver de
motoare". Acest driver poate opera motoarele care se încadrează între tensiunea de alimentare
79
minimă de 10 [V] și maximă de 50 de [V]. Puterea maximă a motoarelor pe care le poate
comanda este de 250 [W]. De asemenea, curentul maxim admisibil este de 15 [A]. Aceste
drivere pot oferi utilizatorului un feedback al curentului consumat și acceptă frecven țe
ridicate de comandă PWM a motoarelor. Modurile de operare recomandate – controlul vitezei
în buclă închisă, controlul vitezei în buclă deschisă și controlul curentului – îndeplinesc cele
mai înalte ceri nțe. Driverele ESCON sunt concepute pentru a fi comandate de un set de valori
analogice și oferă funcționalitate extinsă analogică și digitală . Acestea sunt configurate prin
interfața USB folosind interfața grafică cu utilizatorul "ESCON Studio" pentru ca lculatoarele
care rulează Windows. În figura 4.4 este reprezentat driver -ul "ESCON Module 50/5, 4 -Q
Servocontroller for DC/EC motors, 5/15 A, 10 – 50 VDC ".
Fig. 4. 4 Driver -ul pentru motoare ESCON Module 50/5
4.1.3. Acumulatorul Kypom LiPo 3300 mAh 6S 35C
Acumulatorul utilizat pentru alimentarea întregului robot mobil este produs de Kypom
și are o tensiune nominala de 24 [V] și dezvoltă un cur ent de 3.3 [Ah]. Acest accumulator
este conceput din 6 celule ce au la bază tehnologia LiPo. Greutatea acumulatorului este de
601 [g]. Acesta are avantajul principal de a oferi utilizatorului menținerea unui voltaj constant
până la 80 % din capacitatea sa. În figura de mai jos este prezentat acumulatorul Ky pom
utilizat la alimentare. De asemenea acesta mai are avantajul de a avea dimensiuni reduse de
gabarit în concordanță cu cele ale robotului. Din probleme de siguranță și conform
regulamentului concursului, acumulatorul a fost introdus într -un sac special de protecție.
80
Fig. 4. 5 Acumulatorul Kypom KT 4200/35 -6S
Acest acumulator reprezintă punctul de plecare în realizarea părții electrice a
robotului. În urmatoarele figuri (fig. 4. 6, 4.7) sunt prezentate schemele de a limentare a driver –
ului de moto r la +24 [V] și a plăcii Arduino la +5 [V].
Fig. 4 .6 Schema electrică a driver -ului
81
Fig. 4. 7 Schema electrică de alimentare la +5V
4.1.4. Encoderul incremental rotativ Yumo E6B2 -CWZ3E
Pentru determinarea poziției momentane a robotului metoda de navigare folosită este
odometria. Aceasta folosește datele (impulsurile) de la două encodere incrementale de rotație
pe care le transpune în deplasări liniare în raport cu suprafața pe care rulează. La fiecare
arbore de ieșire din encoder se găsește o roat ă subțire realizată din aluminiu care are pe partea
exterioară un strat subțire de cauciuc. Acest ansamblu este unul liber pentru o cât mai bună
precizie odometrică. Spre exemplu, encoderele vor înregistra distanța reală parcursă dacă
robotul întâmpină sit uații care pot duce la pierderea poziției și orientării sale ( motoarele
antrenează roțile care vor merge în gol datorită faptului că robotul s -a lovit de marginea
mesei de joc sau de robotul advers ). Acestă libertate a roților encoder se manifestă prin
prinderea acestora pe un suport, realizat din plexiglas, fixat pe un ghidaj liniar cu bile,
precum se poate observa în figura 4.8.
82
Fig. 4. 8 Sistemul de roată auxiliară cu encoder
După cum se poate observa din figura de mai sus, roțile encoder erelor se află pe
aceeași axă cu roțile motoare.
În cazul acestor encodere incrementale o diodă fotoelectrică recepționează fasciculul
luminos emis de sursa de lumină infraroșie printr -un disc incremental (un disc cu zone
transparente și opace uniform distribui te pe suprafața discului). Diodele fotorezistive crează
un impuls cu ajutorul blocului electronic (de exemplu, zona transparentă = 5 [V] și zona
opacă = 0 [V]). Analiza semnalului este realizată de un circuit de evaluare prin numărarea în
sus sau în jos a pulsurilor. Numărătoarea curentă este înregistrată și disponibilă la ieșirea
encoderului.
Encoderul în cuadratură folosește două canale de ieșire, A și B, dispuse la 90 de grade
unul față de celălalt, care oferă patru posibile stări de ieșire ale encod erului (tabelul 4.1). În
figura 4.9 se poate observa ca ordinea în care se schimbă semnalul de la "0" la "1" logic în
fiecare canal, indică dacă encoderul se rotește în sens orar sau antiorar. Așadar, prin ordinea
de schimbare se poate spune dacă roțile en coderului se rotesc înainte sau înapoi.
83
Tabelul 4.1
Rotație în sens antiorar Rotație în sens orar
Faza Canal A Canal B Faza Canal A Canal B
1 0 0 1 1 0
2 0 1 2 1 1
3 1 1 3 0 1
4 1 0 4 0 0
Fig. 4. 9 Diagramele pentru cele două modele de impulsuri în sens orar și antiorar
Caracteristicile de bază ale encoderului sunt prezentate în cele ce urmează:
– Rezoluție: 1024 [Pulsuri / Rotație ] (în cuadratură: 4096 [Pulsuri/R otație ])
– Tensiune de intrare: 5 – 12 [V]
– Viteza maximă de rotație: 6000 [r ot/min]
– Încărcare radială admisibilă: 5 [N]
– Încărcare axială admisibilă: 3 [N]
– Lungime cablu: 500 [mm]
– Diametru ax: 6 [mm]
În figura 4.10 de mai jos este prezentat encoderul incremental rotativ Yumo E6B2 –
CWZ3E.
84
Fig. 4. 10 Encoderul incremental rotativ Yumo E6B2 -CWZ3E
4.2. Alegerea motoarelor de curent continuu
Atunci când se dorește construcția unui robot mobil, alegerea motoarelor electrice
pentru tracțiune reprezintă o decizie foarte importantă. În acest moment, teoria se îmbină cu
practica. În continuare sunt prezentate câteva aspecte cu priv ire la alegerea motoarelor de
curent continuu necesare părții de tracțiune a robotului mobil. Până să ajungem să alegem
motoarele de curent continuu trebuie luate în calcul următoarele caracteristici ale rob otului
mobil: dimensiunile acestuia, greutatea pe care o posedă, cu ce viteză și accelerație se va
deplasa și tipul suprafeței pe care va rula. De asemenea trebuie avută în vedere tensiunea de
alimentare disponibilă pentru motoare.
Determinarea forțelor ce acționează asupra robotului în timp ce acesta se deplasează
pe o anumită suprafață duce la predimensionarea părții de tracțiune și a alegerii tipului de
motor electric necesar. Este știut faptul că masa mai mare a robotului duce la alegerea unor
motoare electrice mai puternice, fiindcă forțele rezistente sunt mai mari. Atunci când robotul
se află în mișcare pe o suprafață, el trebuie să depășească forțele de frecare dintre roți și
suprafața de rulare, forțele de inerție, cât și forțele de frecare din int eriorul motorului. Dacă
robotul rulează pe un plan înclinat se impune să fie luată în considerare și forța de greutate.
85
În cele ce urmează sunt prezentați pașii parcurși pentru a determina turația și cuplul
necesar motoarelor electrice. Pentru a păstra o viteză constantă, se impune ca motorul electric
să dezvolte un cuplu motor care să depășească momentul rezistiv de la axul motorului. În
cazul în care momentul motor este mai mic decât momentul rezistent, robotul se află în
repaos, iar dacă el este aliment at în continuare acest lucru poate duce la arderea înf ășurării
motorului electric.
În figura 4.11 sunt reprezentate schematic forțele ce acționează asupra robotului în cel
mai general caz:
Fig. 4. 11 Forțele ce acționează asupra robotului mobil
Pentru a determina momentul motor pentru acționarea robotului se impune să fie
calculate forțele rezistente ce se opun mișcării robotului. Astfel se vor determina următoarele
forțe rezistive:
Forța de frecare are următoarea expresie:
Ff = μr·N (4.1)
unde: – μr – reprezintă coeficientul de frecare și este aproximat egal cu 1;
– N – reprezintă forța normală la suprafață și în cazul de față are expresia:
N = G= m· g (4.2)
86
unde: – m – este masa robotului și este egală cu 10 [Kg];
– g – este accelerația gravitațională și are valoarea 9.81 [m/s2];
Rezultă forța de frecare, după înlocuirea valorilor:
Ff = μr·m· g = 1·10·9.81= 98.1[N] (4.3)
Forța de inerție:
Fi = m· a = 10 ·2 = 20 [N] (4.4)
unde:
– a – reprezintă accelerația maxim ă a robotului 2 [m/s2];
În urma determinării forțelor rezistente ce acționează asupra robotului, se poate
determina forța de tracțiune necesară acționării robotului mobil:
Forța de tracțiune are expresia:
Ft > F i+F f > 20+ 98.1 > 118.1 [N] (4.5)
De asemenea, forța de tracțiune are expresia:
Ft= M m / r = 118.1 [N] (4.6)
unde:
– Mm- momentul motor;
– r – raza roții 40 [mm] = 0.04 [m] ;
Rezultă momentul motor necesar la axul unei roți are expresia:
Mmr = (F t·r)/2 = 118.1 ·0.04/2 = 0.84/2 = 2.362 [Nm] (4.7)
Viteza unghiular ă a motorului electric se determin ă cu expresia de mai jos,
având în vedere c ă viteza liniar ă de deplasare a robotului s ă fie aproximativ 1
[m/s]:
ω = v/r = 1/0.04 = 25 [rad/s] (4.8)
Rezult ă turația motorului electric n = ω 30/π = 25·30/ π = 238.73 [rot/min].
Puterea motorului electric necesar ă pentru ac ționarea robotului este:
P = M mr · ω =2.362 ·25 = 59.05 [W] (4.9)
În urma acestui calcul de dimensionare a motoarelor electrice de current continuu
pentru ac ționarea robotului, s -au ales dou ă motoare de curent continuu fără perii EC 32,
realizate de către maxon motor, ce au ata șat la axul motor dou ă reductoare cu ro ți cilindrice
cu din ți drep ți, având un raport de transmisie de 51:1. Am decis alegerea acestui tip de motor
datorită avantajelor pe care prezintă față de motorul cu colector:
87
Principalul avantaj este o comutare "fără scântei de perii", care reprezintă la
motorul cu perii un factor de distor siune a sistemului de alimentare de curent
continuu, prin reinjectarea de impulsuri parazite în sens invers. Impulsurile de
tensiune parazite deranjează pe alți consumatori conectați la aceeași rețea. [19]
Durata de viață este sensibil mai mare în raport c u motorul cu colector, unde
uzura periilor grafitoase o limitează și generează periodic probleme de service
(întreținere). [19]
Lipsa dispozitivului electromecanic, colector și perii, înlătură limitarea vitezei
maxime dictată de încălzira periilor colectoa re existentă la motorul de c.c.
clasic. [19]
Pentru perceperea poziției reale a rotorului ce se află în mișcare și a turației motorul
este echipat cu senzori Hall.
În figura 4.12 este prezentat un astfel de motor de curent continuu fără perii EC 32:
Fig. 4.1 2 Motorul EC 32
88
Caracteristicile motorului EC 32 sunt prezentate mai jos:
– dimensiuni de gabarit: diametru D = 32 [mm], lungime max. l = 60 [mm];
– masa motorului m = 0.27 [kg];
– diametrul arborelui de ie șire din reductor d = 5 [mm];
– tensiunea de alimentare U = 24 [V];
– turația la mers în gol n 0 = 11000 [rot/min];
– curentul consumat la mers în gol I 0 = 199 [mA];
– curentul consumat cu axul blocat I max = 3.33 [A];
– turația nominală n n= 9450 [rot/min];
– turația maximă n max= 25000 [rot/min];
– cuplul maxim Mmax= 47.2 [mNm];
Puterea maxim ă consumat ă a motorului este determinat ă utiliz ând expresia:
P = U· I max =24 · 3.33 = 80 [W] (4.10)
Gama de funcționare a robotului in parametrii de funcționare continuă, cât și pe
termen scurt este reprezentată în figura 4.13:
Fig. 4.1 3 Gama de funcționare a motorului brushless EC 32
În figura 4.14 este prezentat reductorul GP 32 cu roți cilindrice cu dinți drepți, realizat
tot de către maxon motor .
89
Fig. 4.1 4 Reductorul GP 32
Caracteristicile principale ale reductorului GP 32 sunt prezentate mai jos:
– dimensiuni de gabarit: diametru D = 32 [mm], lungime max. l = 43.1 [mm];
– masa motorului m = 0.19 [kg];
– diametrul arborelui de iesire din reductor d = 6 [mm];
– raportul de transmisie 51:1
– cuplul maxim M max= 4.5 [Nm];
– turația maximă de intrare 10000 [rot/min].
Datorită faptului că ansamblul motor -reductor este poziționat pe un etaj superior
șasiului, s -a optat ca transmisia mecanică între acesta și roata motoare aferentă să se realizeze
printr -o curea de transmisie. Cureaua de transmisie transmite mișcarea de ro tație și puterea
corespunzătoare de la arborele reductorului la cel al roții motoare prin intermediul roților de
curea (roată conducătoare, respectiv roată condusă). S -a ales un diametru diferit al roților de
curea (un diametru mai mare pentru roata conduc ătoare, respectiv un diametru mai mic
90
pentru roata condusă), având raportul de transmisie 2:1, pentru o amplificare a vitezei
robotului.
Specificațiile curelei și a roților conducătoare sunt prezentate mai jos:
– Curea dințată T5 închisă având lungimea de 1 20 [mm], lățimea 10 [mm], pasul 5
[mm], din poliuretan cu inserție de fire de oțel.
– Roată de curea T5 cu 30 de dinți, cu diametrul exterior 46.95 [mm] și lățimea 23.5
[mm].
– Roată de curea T5 cu 15 dinți, cu diametrul exterior 23.05 [mm] și lățimea 16 [mm].
În figura 4.15 de mai jos se poate observa transmiterea mecanică realizată prin curea:
Fig. 4.1 5 Transmisia mecanică realizată prin curea dințată
4.3. Proiectarea asista tă de calculator a sistemului de locomoție a l robotului
mobil
Etapa premergătoare construcției și realizării robotului mobil autonom a fost
reprezentată de proiectarea și modelarea sistemului de locomoție a robotului. Această etapă a
fost indispensabilă datorită principalului motiv, acela de a respecta dimensiunile d e gabarit
impuse de regulamentul concursului Eurobot – Robomovies 2015. Astfel, s -a încercat
optimizarea la maxim a spațiului din interiorul carcasei robotului pentru ca să poată fi incluse
componentele prezentate mai sus.
91
În figura 4.16 este prezentat sistemul de locomoție a robotului mobil realizat în
programul CATIA V5:
Fig. 4.1 6 Sistemul de locomoție al robotului mobil realizată în CATIA
Componentele principale ale sistemului de locomoție a robotului mobil sunt
următoarele:
1. Placa electronică de dezvoltare Arduino 2560 și driver -ul de motoare ESCON
Module 50/5 , utilizat ă pentru comanda și controlul robotului mobil , respectiv
pentru controlul motoarelor de curent continuu fără perii ;
2. Placă suport din plexiglas pentru placa de dezvoltare;
3. Ansamblul format din motorul de curent continuu fără perii EC 32 și
reductorul GP 32 cu raport de transmisie de 51:1;
4. Profil Bosch Rexroth din aluminiu 20×20 [mm], de lungime 95 [mm] și cu
canal interior cu diametrul D = 5.5 [mm];
5. Profil Bosch Rexroth din aluminiu 2 0x20 [mm], de lungime 80 [mm] și cu
canal interior având diametrul de 5.5 [mm] care oferă suportul fix pentru
suportul mobil al encoderului;
6. Roată de tracțiune cu diametrul D = 80 [mm], confecționată din material
plastic și care prezintă pe calea de rulare cauciuc pentru a oferi o mai bună
tracțiune; de asemenea este concepută cu rulmenți ABEC 5 a căror diametru
interior este de 8 [mm];
92
7. Suport mobil pentru encoder realizat din plexiglas și prins, pentru obținerea
unui bun contact între encoder și suprafața de rulare, de un ghidaj liniar cu bile
prin intermediul unui profil "L" din aluminiu. Acest ghidaj îngăduie prin
simpla forță de greutate a encoderului contactul în permanență între roata
encoderului și suprafața de rulare. Prin folosirea acestui tip de gh idaj se reduce
frecare între două componente care se deplasează relativ una față de cealaltă.
Acest suport mobil realizează o mișcare de translație față de suportul fix, cursa
maximă fiind de 20 [mm];
8. Encoder incremental rotativ Yumo E6B2 -CWZ3E cu o rezolu ție de 1024
impulsuri/rotație (cuadratură : 4096 impulsuri/rotație );
9. Placa de bază a robotului (șasiul) confecționată din aluminiu și debitată cu jet
de apă, pentru a asigura o conturare de precizie;
10. Tija filetată M6;
11. Suportul ansamblului format din motoare le de curent continuu fără perii și
reductoare, realizat din material textolit pentru o rezistență mecanică mai
bună, dar și pentru greutatea redusă pe care o are;
12. Roată dințată conducătoare T5 cu 30 de dinți, cu diametrul exterior 46.95
[mm] și lățimea 23 .5 [mm].
13. Curea dințată T5 închisă având lungimea de 120 [mm], lățimea 10 [mm], pasul
5 [mm], din poliuretan cu inserție de fire de oțel.
14. Rulment radial FAG 608 ZZ cu diametrul interior de 8 [mm];
15. Suport pentru axul de transmitere al mișcării de la roata conducătoare la roata
de tracțiune, realizat din material textolit;
16. Ax de transmitere al mișcării de la roata dințată conducătoare la roata de
tracțiune;
17. Roată dințată condusă T5 cu 15 dinți, cu diametrul exterior 23.05 [mm] și
lățimea 16 [mm];
18. Roată enco der subțire confecționată din aluminiu și care are pe partea
exterioară un strat subțire de cauciuc.
4.4. Controlul sistemului de locomo ție folosind un controler PID
Datorită faptului că atunci când s -a dorit deplasarea robotului la un anumit punct pe
suprafața de joc, începând cu momentul când s -a introdus poziția dorită și până când aceasta
93
s-a modificat prin reglarea în buclă închisă, a apărut o anumită latență. Ace stă latență s -a
concretizat prin faptul că robotul nu s -a oprit în locația dorită, el continuâdu -și deplasarea
pentru puțin timp. Din cauza acesteia au apărut oscilații în jurul locației dorite, manifestate
prin deplasarea robotului înainte și înapoi față de punctul de referință dorit. Așadar, pentru
eliminarea acestei latențe, precum și pentru o reglare fină a mărimilor de ieșire (turație,
cuplu) din motorul de curent continuu fără perii s -a utilizat controlerul PID (proporțional –
integrator -derivator).
Algoritmul PID are în componență trei elemente (proporțional P, integrator I și
derivator D) care pot fi interpretate, în raport cu timpul, în următorul mod:
– P: este folosit la calculul eroii actuale;
– I: ne furnizează informații despre suma erorilor pr ecedente;
– D: furnizează o predicție a erorilor viitoare, bazându -se pe rata actuală de fluctuație
a mărimii.
Schema de reglare a sistemului de locomoție folosind controlerul PID este prezentată
în figura 4.17 de mai jos:
Fig. 4.1 7 Schema de reglare a sistemului de locomoție folosind controlerul PID
Implementarea regulatorului PID, de tip numeric, permite execuția unei reglări a
vitezei motoarelor de curent continuu fără perii și se face cu ajutorul procesorului digital de
semnal al plăcii Arduino. Re acția sistemului este asigurată prin cele două encodere, care
oferă la ieșire un număr de 4096 impulsuri pe rotație. Având în vedere că robotul a fost
comandat să ajungă la un anumit punct de pe suprafața de joc prin introducere poziției, a fost
nevoie de folosirea a două seturi de constante PID, un set pentru deplasare (translație) și unul
pentru orientare (rotație).
Deoarece cea mai importantă cerință pentru motoare a fost ca acestea să se rotească la
viteza necesară pentru a ajunge în poziția comandată într -un timp relativ scăzut, eroarea
staționară a vitezei unghiulare trebuie să fie mai mică de 1%. Desigur ca acest a nu este de
ajuns, deoarece motoarele trebuie să accelereze la viteza de regim staționar cât mai repede
94
posibil, aproape simultan cu punerea lor sub tensiune . Cu toate acestea, o viteză unghiulară
cu mult mai mare decât cea nominală poate cauza defecțiuni motorului, astfel încât am impus
un suprareglaj mai mic de 5%.
Reglarea controlerului PID s -a realizat pornind de la metoda Zigler -Nichols, care
presupune egalarea inițială a coeficienților K I și K D cu 0, iar apoi creșterea valorii
coeficientului K P până când răspunsul controlerului începe să oscileze. Prin urmare, când s -a
încercat reglarea robotului, s -a mărit valoarea K P până când robotul a început să meargă
înainte și înapoi față de punctul de referință dorit. În acest moment s -a ajuns în punctul în
care robotul nu se comportă corect, așadar am micșorat valoarea K P până când robotul tinde
să oscileze, însă nu foarte mult. Odată stabilită valoarea K P, am mărit valoarea coeficientului
KI a regulatorului pentru elimina eroarea staționară . În final, am mă rit foarte puțin
coeficientul K D ca să îmbunătățim timpul de răspuns al robotului și pentru a diminua
suprareglajul . În final am obținut un timp de creștere corespunzător, o supracreștere minimă,
fără eroare staționară, valorile coeficienților K P, KI și KD fiind următoarele:
– deplasare: KP = 0.35 KI = 50 KD = 0.02
– orientare: KPR = 0.35 KIR = 50 KDR = 0.03
Răspunsul controlerului PID pentru deplasare, respectiv orientare, este obținut prin
însumarea celor trei elemente, având următoarea expresie:
comandaDeplasare = eroareDeplasare · K P + (delta_eroare_d/0.01) · KD +
delta _eroare_d · 0.01· K I
comandaOrientare = eroare Orientare · KPR + (delta_eroare_r/0.01) · KDR +
delta_eroare_d · 0.01 · KIR
unde: KP , KPR – constanta de proporționalitate;
KI , KIR – constanta de integrare;
KD , KDR – constanta de derivare;
eroareDeplasare = impulsuriDistanta – distantaM;
distantaM = ((dreapta – dreaptaIntrare) + (stanga – stangaIntrare)) / 2;
delta_eroare_d = eroareDeplasare – eroare_anterioară_d;
eroareOrientare = orientareReferinta – orientare;
delta_eroare_r = eroareOrientare – eroare_anterioara_r;
În codul sursă comanda reprezintă o ieșire PWM pentru a controla valoarea tensiuni
de alimentare a motoarelor. Valoarea acest ei ieșiri trebuie să fie de tip întreg și cuprinsă între
95
0 (=valoarea minimă) și 255 (=valoarea maximă). Datorită faptului că robotul are o greutate
de 10 [kg], valoarea minimă a PWM -ului este 27 pentru ca robotul să depășească forța de
frânare (fig. 4.1 8). Această valoare a fost determinată experimental. Funcția PWM are
următoarea expresie:
pwm = map (eroare, 0, maxeroare, 27, 255)
Fig. 4.1 8 Diagrama PWM
Schema logică a controlul PID este prezentată în figura 4. 19, iar programul aferent
cotrolului PID scris pe placa de dezvoltare Arduino este urmatorul:
int deplasare_orientare_pid (long impulsuriDistanta, long orientareReferinta, int pwmMax)
{
int bufferIesire [4] = {99, 99, 99, 99, 99};
int ctBuff;
ctBuff = 5;
int i;
long dreaptaIntrare;
long stangaIntrare;
dreaptaIntrare = dreapta;
96
stangaIntrare = stanga;
float delta_eroare_d = 0;
float delta_eroare_r = 0;
float eroare_anterioara_d = 0;
float eroare_anterioara_r = 0;
long eroareDeplasare;
long eroareOrientare;
long distantaM;
float comandaDeplasare;
float comandaOrientare;
double comandaDreapta;
double comandaStanga;
long comanda_distanta;
int pwmStanga;
int pwmDreapta;
KiR= 50;
KpR = 0.35;
KdR = 0.03;
Kp = 0.35;
Kd = 0.02;
Ki= 50;
eroareDeplasare = 99999;
int mapPwmStanga;
int mapPwmDreapta;
bool flagIesire;
long map_max;
map_max = 0;
if(impulsuriDistanta < 0)
digitalWrite(PIN_DIRECTIE,1);
else
97
digitalWrite(PIN_DIRECTIE,0);
while (1)
{
distantaM = ((dreapta – dreaptaIntrare) + (stanga – stangaIntrare)) / 2;
eroareDeplasare = impulsuriDistanta – distantaM;
delta_eroare_d = eroareDeplasare – eroare_anterioara_d;
comandaDeplasare = (float)eroareDeplasare * Kp + (float)Kd * (del ta_eroare_d /0.01 )+
(float)Ki* delta_eroare_d *0.01;
//Detectie adeversar (…)
eroareOrientare = orientareReferinta – orientare;
delta_eroare_r = eroareOrientare – eroare_anterioara_r;
comandaOrientare =(float)eroareOrientare * KpR + KdR * (delta_eroa re_r/0.01)+
KiR*delta_eroare_r*0.01;
comandaDreapta = comandaDeplasare + comandaOrientare;
comandaStanga = comandaDeplasare – comandaOrientare;
digitalWrite(motoare.enablePin, HIGH);
if (comandaDreapta >= 0)
{
mapPwmDreapta = map(comandaDreapta, 0, map_max, 27, pwmMax);
}
else
{
mapPwmDreapta = map(comandaDreapta, -map_max, -1, -pwmMax, -27);
}
if (comandaStanga >= 0)
{
mapPwmStanga = map(comandaStanga, 0, map_max, 27, pwmMax);
}
else
{
mapPwmStanga = map(comandaStanga, -map_max, -1, -pwmMax, -27);
}
if((abs(mapPwmStanga) < 27 || abs(mapPwmDreapta) < 27)) {
break;
98
}
bufferIesire[ct] = abs(mapPwmStanga);
ct = (ct + 1) % ctBuff;
flagIesire = true;
for (i = 0; i < ctBuff; i+ +)
{
if ((bufferIesire [8] == 27))
{
flagIesire = true;
}
else
{
flagIesire = false;
break;
}
}
if (flagIesire == true)
{
break;
}
motoare.setMotorDreaptaSpeed(mapPwmDreapta);
motoare.setMotorStangaSpeed(mapPwmStanga);
eroare_anterioara_r = eroareOrientare;
eroare_anterioara_d = eroareDeplasare;
delay(10); }
digitalWrite(motoare.enablePin, LOW);
return 1;
Serial.print("orientare = "); Serial.print(orientare);
Serial.print(" x = "); Serial.print(x);
Serial.print(" y = "); Serial.println(y);
Serial.println(" ––––––––––––– ");
}
99
Fig. 4. 19 Schema logică a controlului PID
100
Capitolul 5
CONCLUZII
În această lucrare am tratat problema studiului și proiectării sistemului de locomoție
pentru un robot mobil. Pentru început, am realizat un studiu asupra literaturii de specialitate,
în urma căruia am reușit o clasificare a roboților mobili în funcție de tipul de locomoție
utilizat, de dimen siuni, de comunicare și de mediul în care acționează.
În urma acestui studiu am ales sistemul de locomoție diferențial, care se bazează pe
faptul că cele două roți motoare sunt acționate independent. Așadar, pentru realizarea mișcării
de translație a robo tului roțile sunt acționate în același sens, iar pentru realizarea unei mișcări
de rotație roțile sunt acționate în sensuri diferite.
Acest sistem de locomoție diferențial este acționat de două motoare de curent
continuu fără perii, care sunt alimentate la o tensiune de 24 V și dezvoltă o putere maximă de
80 W. Deoarece am poziționat motoarele pe un nivel superior șasiului robotului, am ales ca
transmisia de la motoare la roțile de tracțiune să se facă prin intermed iul unei transmisii prin
curea datorită numeroaselor avantaje pe care le prezintă.
Avantajul sistemului de locomoție diferențial este că oferă o posibilitate ridicată de
schimbare a direcției în spații restrânse, precum și o reducere a dimensiunilor de gabarit ale
robotului. Însă, dezavantajul principal este că sistemul de locomoție diferențial introduce
erori de poziționare și orientare ale robotului, datorită diametrelor diferite ale roților de
tracțiune, dar și datorită asamblării imprecise a robotului.
Am propus pentru eliminarea acestui dezavantaj folosirea odometriei ca metodă de
navigare. Odometriei oferă ușor informații cu privire la poziționarea în timp real, cu ajutorul
măsurătorilor periodice ale poziției absolute, pe baza unor expresii matematice bine definite.
În urma studiului, am decis ca pentru diminuarea erorilor sistematice de odometrie
reprezentate de eroarea datorată diametrele roților inegale , E d, și eroarea cauzată de
incertitudinea privind ampatamentul efectiv , Eb, să folosim o pereche de roți encoder libere și
realizarea unei calibrări sistematice. Calibrarea sistematică a fost reprezentată de utilizarea
procedurii UMBmark, în urma căreia am calculat valorile Ed și Eb și i-am folosit ca factori de
compensare în software -ul de comanda. A cest lucru a dus la o reducere de 10 până la 20 de ori a
erorilor sistematice.
În ceea ce privește îmbunătățirea controlulului sistemului de locomoție în buclă
închisă am decis să implementăm un regulator PID cu ajutorul căruia am reușit o reglare fină
101
a mărimilor de ieșire din motorul de curent continuu fără perii. Totodată, am decis ca pentru
partea de comandă și control să se folosească o placă de dezvoltare Arduino Mega 2560
deoarece prezintă o putere de calcul ridicată, dar și o mare flexibilitate dat orită numărului
mare de intrări/ieșiri analogice și digitale.
După realizarea sistemului de locomoție s -au asamblat celelalte sisteme componente
ale robotului și au fost dezvoltate diferite strategii de conducere a acestuia pe masa de joc,
astfel încât acesta să îndeplinească cu succes sarcinile concursului Eurobot.
În urma participării la etapa națională a concursului Eurobot am obținut locul 1, loc
care ne -a oferit posibilitatea de a participa la etapa internațională ce a avut loc în Yverdon –
les-Bains, Elveția. Participarea la etapa internațională a avut ca rezult at obținerea locului 10
din 60 de echipe participante. Trebuie menționat faptul că acesta este cel mai bun rezultat de
până acum a unei echipe din România la aceast ă competiție.
Pe viitor se dorește îmbunătățirea controlului sistemului de locomoție al rob otului
pentru a obține viteze mult mai mari și o precizie cât mai bună.
102
BIBLIOGRAFIE
[1] Davidoviciu A., Drăganoiu Gh., Hoanga A., "Modelarea, simularea și comanda
manipulatoarelor și roboților industriali" Editura Tehnică, București 1986;
[2] Davidoviciu A., Magda R., " oboți industriali" , Editura Tehnică, București 1983;
[3] Kovács F. și Radulescu C., " oboți in dustriali vol. 1 și 2" , Centrul de multiplicare a
Institutului Politehnic “ Traian Vuia” Timișoara;
[4] http://www.scribd.com/doc/27916502/Fundamente -de-Meca nic%C4%83 -%C5%9Fi –
Robotic%C4%83
[5]http://www.robotics.ucv.ro/flexform/craiova_cursuri/C4/1.%20Notiuni%20fundamental e
%20privind%20mecatronica.pdf
[6] R. Țârulescu, "Contribuții privind optimizarea configurației senzorilor utilizați la roboții
mobili" , teză de doctorat, Universitatea Transilvania din Brașov, Decembrie 2014;
[7] http://en.wikipedia.org/wiki/TerraMax_%28veh icle%29
[8] http://mars.jpl.nasa.gov/msl/
[9] http://viac.vislab.it/
[10] http://www.bostondynamics.com/robot_bigdog.html
[11] http://www.o -fsi.kanazawa -u.ac.jp/about/vbl/information/seryou's -support/post -58/
[12] http://www.speciminder.com/products/speciminder.html
[13] Dudek. G., Jenkin. M., "Computațional rinciples of Mobile obotics", Cambridge
University Press, 2000;
[14] Miles. P., Carroll. T., " uild your own combat robot”, McGraw -Hill, 2002;
[15] Nehmzow, U., " Mobile obotics: A practical introduction.” second edition. Springer –
Verlag London. 2003;
[16] Koenig. N., "Stage and Gazebo – he Instant Expert's Guide”, USC Robotics Research
Lab, 15 Sept 2004;
[17] http://ro.scribd.com/doc/217913155/Curs2 -Rob-Mob -13-14#
[18] J. Borenstein and L. Feng , "UMBmark – A Method for Measuring, Comparing, and
Correcting Dead -reckoning Errors in Mobile Robots" , University of Michigan, December
1994;
[19]https://ro.wikipedia.org/wiki/Motor_electric_de_curent_continuu_f%C4%83r%C4%83_p
erii
103
[20] K. Komoriya, E. Oyama, "Position estimation of a mobile robot using optical fiber
gyroscope (OFG). Intelligent Robots and Systems, Advanced Robotic Systems and the
Real World" , IROS ‘94. Proceedings of the IEEE/RSJ/GI International Conference on
1216 Sept. 1994;
[21] Jones, J. , „ Robot Programming: A practical guide to Behavior – ased obotics”,
McGraw -Hill. 2004;
[22] B Barshan, HF Durrant -Whyte, "Robotics and Automation" , IEEE Transactions on,
1995;
[23] T. Hongo, H. Arakawa, G. Sugimoto, K. Tange, and Y. Yamamoto, “ An Automated
Guidance System of a Self -Controlled Vehicle.”, IEEE Transactions on Industrial
Electronics, Vol. IE -34, No. 1, 1987, pp. 5 -10;
[24] Feng, L., Borenstein, J., and Everett, B., 1994, "Where am I? Sensors and Methods for
Autonomous Mobile Robot Localization." Technical Report, The University of Michigan
UM-MEAM -94-21, December 1994;
[25] H. Sugiyama, “A Method for an Autonomous Mobile obo t to Recognize its Position in
the Global Coordinate System when uilding a Map.” Proceedings of the 1993 IEEE/RSJ
International Conference on Intelligent Robotics and Systems , Yokohama, Japan, July 26 -30,
1993, pp. 2186 -2191;
[26] T. Dahlin and D. Krantz., "Low -cost, medium -accuracy land navigation
system . Sensors ", February 1988;
[27] D. Titterton and J. Weston, "Strapdown Inertial Navigation Technology. The American
Institute of Aeronautics and Astronautics" , second edition, 2004;
[28] http://www.murata.com/
[29] https://en.wikipedia.org/wiki/General_Electric_Company_plc
104
Anexă
Exemplu de program pentru plecarea robotului de pe culoarea verde.
// Robot mare //
#include "DriverMotoare.h"
#include "TimerOne.h"
#include "Encoder.h"
#include "digitalWriteFast.h"
#include "BigNumber.h"
#define PIN_OBSTACOL_STANGA 35
#define PIN_OBSTACOL_DREAPTA 37
#define PIN_DIRECTIE 39
#define PIN_STOP_SERVO 40
#define PIN_CULOARE 31
#define PIN_START 51 //firul de start
#define PIN_LASER 30
#define PIN_CLAPBOARD 36
#define PWM_CLAPBOARD_DESCHIS
105//115
#define PWM_CLAPBOARD_INCHIS
179
#define PIN_PAHAR 33
#define PWM_PAHAR_DESCHIS
120//105//93
#define PWM_PAHAR_INCHIS 45//40
#define PIN_GRIPER 41
#define PWM_GRIPER_DESCHIS 140
#define PWM_GRIPER_INCHIS 37 #define PIN_VERTICAL 45
#define PWM_VERTICAL_JOS 3
#define PWM_VERTICAL_SUS
115//110//120//105
#define PIN_USA 43
#define PWM_USA_DESCHIS 160//170
#define PWM_USA_INCHIS 80//75//75
#define
DISTANTA_INTRE_ENCODERE
281.2//281.2//279 //288
#define X_INITIAL 1000
#define Y_INITIAL 1000
#define
DIAMETRU_ROATA_DREAPTA
49.2//51.05//48.1
#define DIAMETRU_ROATA_STANGA
49.2 //51.05//48.15
#define
NUMAR_IMPULSURI_ENCODER 1024
#define UNGHI_INITIAL 0
#define PWM_DREAPTA_PIN 10
#define DIRECTIE_DREAPTA_PIN 22
#define PWM_STANGA_PIN 9
105
#define DIRECTIE_STANGA_PIN 23
#define ENABLE_PIN 24
#define COEF_D 2158L//2179L//2160
OK//2173 //pentru 1cm impulsuri
#define COEF_ROT
1096L//111 0//1087L//2625L//1087L//532//
1075//532
#define CONV_RD PI/(180*COEF_ROT)
long stanga_precedent, dreapta_precedent;
long stanga, dreapta, distanta,
distanta_precedenta;
float orientare, orientare_precedenta,
orientare_initiala;
float x, y;
float x_cm, y_cm;
long vitezaStanga;
long vitezaDreapta;
long deltaStanga;
long deltaDreapta;
float KpR;
float KdR;
float Kp;
float Kd;
char algo;
long vitezaMedie;
long deltaViteza;
long vitezaMedieAnterioara;
unsigned long timp_expirat = 99999999;
double timp_asteptare = 0; char flag_asteptare = 1;
int flag_timeout = 1;
char flag_while = 0;
char nr_standuri = 0;
char flag_abandon = 0;
// Driver Motoare
DriverMotoare
motoare(PWM_DREAPTA_PIN,
DIRECTIE_DREAPTA_PIN,
PWM_STANGA_PIN,
DIRECTIE_STANGA_PIN,
ENABLE_PIN);
Encoder encoderStanga(19, 17);
Encoder encoderDreapta(18, 16);
//Rotatie in grade
//unghi in grade
void rotatie(float unghi, int pwmMax)
{
int unghiDeAjuns;
long unghiImpulsuri;
int orientare_grade;
int catul_semn;
long unghiDeFac ut; //in impulsuri
unghiDeFacut = 0;
catul_semn = orientare / (360 *
COEF_ROT);
orientare_grade = orientare /
COEF_ROT;
106
orientare_grade = orientare_grade % 360;
if (catul_semn < 0)
{
orientare_grade = orientare_grade +
360; //transform am orientare grade in
pozitiv
}
else if (catul_semn > 0)
{
;
}
else if((catul_semn == 0) &&
(orientare_grade < 0))
{
orientare_grade = orientare_grade +
360; //transformam orientare grade in
pozitiv
}
unghiDeAjuns = unghi;
if ((orientare_grade – unghiDeAjuns) >=
0) //pozitiv
{
if ((orientare_grade – unghiDeAjuns) <=
180)
{
unghiDeFacut = (unghiDeAjuns –
orientare_grade) * COEF_ROT;
}
else
{ unghiDeFacut = (360 + (unghiDeAjuns
– orientare_g rade)) * COEF_ROT;
}
}
else //negativ
{
if ((orientare_grade – unghiDeAjuns) >=
-180)
{
unghiDeFacut = (unghiDeAjuns –
orientare_grade) * COEF_ROT;
}
else
{
unghiDeFacut = ( -360 +
(unghiDeAjuns – orientare_grade)) *
COEF_ROT;
}
}
unghiImpulsuri = (long)orientare +
unghiDeFacut;
Serial.print("KpR = "); Serial.print(KpR);
Serial.print(" unghiDeFacut = ");
Serial.print(unghiDeFacut);
Serial. print(" orientareCurenta = ");
Serial.print(orientare);
Serial.print(" orientareFinala = ");
Serial.println(unghiImpulsuri);
if(abs(unghiDeFacut) >= COEF_ROT)
deplasare_orientare_pid(0 * COEF_D,
unghiImpulsuri,pwmMax);
}
107
// ====================== //
void functie_initializare(long x0, long y0,
long teta0)
{
orientare = teta0;
orientare_initiala = teta0;
x = x0;
y = y0;
y_cm = y / COEF_D;
x_cm = x / COEF_D;
distanta = 0;
distanta_precedenta = 0;
stanga_precedent = 0;
dreapta_precedent = 0;
vitezaMedieAnterioara = 0;
}
// Deplasare – orientare PID //
int deplasare_orientare_pid (long
impulsuriDistanta, long orientareReferinta,
int pwmMax)
{
int bufferIesire [4] = {99, 99, 99, 99, 99};
int ctBuff;
ctBuff = 5;
int i;
long dreaptaIntrare;
long stangaIntrare;
dreaptaIntrare = dreapta;
stangaIntrare = stanga;
float delta_eroare_d = 0; float delta_eroare_r = 0;
float eroare_anterioara_d = 0;
float eroare_anterioara_r = 0;
long eroareDeplasare;
long eroareOrientare;
long distantaM;
float comandaDeplasare;
float comandaOrientare;
double comandaDreapta;
double comandaStanga;
long comanda_distanta;
int pwmStanga;
int pwmDreapta;
KiR= 50;
KpR = 0.35;
KdR = 0.03;
Kp = 0.35;
Kd = 0.02;
Ki= 50;
eroareDeplasare = 99999;
int mapPwmStanga;
int mapPwmDreapta;
bool flagIesire;
long map_max;
map_max = 0;
if(impulsuriDistanta < 0)
digitalWrite(PIN_DIRECTIE,1);
else
digitalWrite(PIN_DIRECTIE,0);
while (1)
108
{
distantaM = ((dreapta – dreaptaIntrare) +
(stanga – stangaIntrare)) / 2;
eroareDeplasare = impulsuriDistanta –
distantaM;
delta_eroare_d = eroareDeplasare –
eroare_anterioara_d;
comandaDeplasare =
(float)eroareDeplasare * Kp + (float)Kd *
(delta_eroare_d/0.01)+ (float)Ki*
delta_eroare_d *0.01;
//Detectie adeversar (…)
eroareOrientare = orientareReferinta –
orientare;
delta_eroare_r = eroareOrientare –
eroare_anterioara_r;
comandaOrientare =(float)eroareOrientare
* Kp R + KdR * (delta_eroare_r/0.01)+
KiR*delta_eroare_r*0.01;
comandaDreapta = comandaDeplasare +
comandaOrientare;
comandaStanga = comandaDeplasare –
comandaOrientare;
digitalWrite(motoare.enablePin, HIGH);
if (comandaDreapta >= 0)
{
mapPwmDreapta = map(comandaDreapta,
0, map_max, 27, pwmMax);
}
else
{
mapPwmDreapta = map(comandaDreapta,
-map_max, -1, -pwmMax, -27); }
if (comandaStanga >= 0)
{
mapPwmStanga = map(comandaStanga, 0,
map_max, 27, pwmMax);
}
else
{
mapPwmStanga = map(comandaStanga, –
map_max, -1, -pwmMax, -27);
}
if((abs(mapPwmStanga) < 27 ||
abs(mapPwmDreapta) < 27)) {
break;
}
bufferIesire[ct] = abs(mapPwmStanga);
ct = (ct + 1) % ctBuff;
flagIesire = true;
for (i = 0; i < ctBuff; i++)
{
if ((bufferIesire [8] == 27))
{
flagIesire = true;
}
else
{
flagIesire = false;
break;
}
}
if (flagIesire == true)
{
109
break;
}
motoare.setMotorDreaptaSpeed(mapPwm
Dreapta);
motoare.setMotorStangaSpeed(mapPwmSt
anga);
eroare_anterioara_r = eroareOrientare;
eroare_anterioara_d = eroareDeplasare;
delay(10);
}
digitalWrite(motoare.enablePin, LOW);
return 1;
Serial.print("orientare = ");
Serial.print(orientare);
Serial.print(" x = "); Serial.print(x);
Serial.print(" y = "); Serial.println(y);
Serial.println(" –––––––––– ");
}
// Go to //
int goTo(int x0, int y0, int unghiOcolire,int
pwmMaxRotatie, int pwmMaxDeplasare)
{
long impulsuriX0, impulsuriY0,
impulsuriUnghiFinal;
long dis tantaImpulsuri;
long unghiImpulsuri;
float unghiAtan2;
long unghi_diferenta;
unghiAtan2 = atan2((y0 – y_cm), (x0 –
x_cm));
/*
Serial.print("2 – atan2 = ");
Serial.print(unghiAtan2 * 180 / PI);
Serial.print("Y0 = "); Serial.print(y0);
Serial.print(" X0 = "); Serial.print(x0);
Serial.print(" yCm = ");
Serial.print(y_cm);
Serial.print(" xCm = ");
Serial.println(x_cm);
*/
if (unghiAtan2 < 0)
unghiAtan2 = unghiAtan2 + 2 * PI;
rotatie(unghiAtan2 * 180 /
PI,pwmMaxRotatie);
delay(100);
unghiAtan2 = atan2((y0 – y_cm), (x0 –
x_cm));
if (unghiAtan2 < 0)
unghiAtan2 = unghiAtan2 + 2 * PI;
unghi_diferenta =
diferentaUnghi(unghiAtan2 * 180 / PI);
distantaImpulsuri =
((float)sqrt((float)pow(x0 – x_cm, 2) +
(float)pow(y0 – y_cm, 2))) * COEF_D;
110
// deplasare_pid(distantaImpulsuri,
orientare);
if(abs(distantaImpulsuri) >= COEF_D)
{
//deplasare_orientare_pid(distantaImpulsur
i, orient are +
unghi_diferenta,pwmMaxDeplasare);
//deplasare_orientare_pid(distantaImpulsur
i, orientare,pwmMaxDeplasare);
if
(deplasare_orientare_pid(distantaImpulsuri
, orientare,pwmMaxDeplasare) == -1)
{
timp_asteptare = millis() + 7000;
while (timp_asteptare > millis())
{
if
(digitalRead(PIN_OBSTACOL_DREAPT
A) == 0)
{
if(goTo(x0,y0,unghiOcolire,pwmMaxRota
tie,pwmMaxDeplasare) == 1)
return 1;
}
}
if(unghiOcolire != 0)
{
deplasare_orientare_pid(0, orientare
+ unghiOcolire *
COEF_ROT,pwmMaxRotatie); delay(100);
deplasare_orientare_pid(50 *
COEF _D, orientare,pwmMaxDeplasare);
if(goTo(x0,y0,u nghiOcolire,pwmMaxRota
tie,pwmMaxDeplasare) == 1)
return 1;
}
return -1;
}
else
return 1;
}
delay(100);
return 1;
}
// Setup loop //
// =========================== //
void setup()
{
//––– CULOARE –––––– //
pinMode(PIN_CULOARE, INPUT);
// –––– PINI ––––– //
pinMode(PIN_START,INPUT);
pinMode(PIN_OBSTACOL_STANGA,IN
PUT);
pinMode(PIN_OBSTACOL_DREAPTA,I
NPUT);
111
pinMode(PIN_DIRECTIE,OUTPUT);
digitalWrite(PIN_OBSTACOL_STANGA
, HIGH);
digitalWrite(PIN_OBSTACOL_DREAPT
A, HIGH);
Serial.begin(115200);
/* KpR = 0;//4 -90 2-180 8 -1
KdR = 0;//0.19 -180-0.21-90;//0.15;// 0.5
Kp = 0;
Kd = 0;*/
BigNumber::begin (); // initialize library
Timer1.initialize(10000);
Timer1.attachInterrupt(fTimer); //
attaches callback() as a timer overflow
interrupt
flag = false;
//functie_initializare(0, 0, 0);
//functie_initializare(100 * COEF_D, -22
* COEF_D, -90 * COEF_ROT); //verde
if (dig italRead(PIN_CULOARE))
{
functie_initializare(100 * COEF_D, -22
* COEF_D, -90 * COEF_ROT); //verde
}
else
{ functie_initializare(100 * COEF_D,22
* COEF_D, 90 * COEF_ROT); //galben
}
pinMode(25, OUTPUT);
digitalWrite(25, LOW);
}
void loop()
{
//Serial.println(digitalRead(PIN_START));
//Asteapta sa traga funia
while(digitalRead(PIN_START));
if (flag_timeout == 1)
{
timp_expirat = millis() + 90000;
flag_timeout = 0;
digitalWrite(PIN_STOP_SERVO,
LOW);
}
else
{
Timer1.detachInterrupt();
while(1)
{
digitalWrite(PIN_STOP_SERVO,
HIGH);
motoare.motorBrake();
}
delay (900000);
}
112
//Serial.println("=============== ");
delay(10);
//VERDE
if (digitalRead(PIN_CULOARE))
{
strategie_verde_1();
// Omologare
}
//GALBEN
else
{
strategie_galben_1();
}
}
// Strategie verde //
void strategie_verde_1()
{
delay(2000);
nr_standuri = 0;
//deplasare initiala
deplasare_orientare_pid(50 *
COEF_D,orientare,220);
//primul stand
goToStand(135.5, -87,220,220,7);
ridica_primul();
//al doilea stand
if(goToStand(177, -110,220,220,7) == 1)
ridica();
//al treilea stand
if(goToStand(140, -130,220,220,9) ==
1)
ridica();
//pahar
goTo(165, -40, 0,220,220);
pahar.write(PWM_PAHAR_INCHIS);
//al patrulea stand
goToStand(173, -9,180,180,3);
prindeFinal();
delay(100);
goTo(176, -25, 0,160,180);
//deschide clapboard
clapboard.write(PWM_CLAPBOARD_D
ESCHIS);
goTo(176, -40, 0,220,220);
clapboard.write(PWM_CLAPBOARD_IN
CHIS);
goTo(176, -70, 0,220,220);
clapboard.write(PWM_CLAPBOARD_D
ESCHIS);
goTo(176, -95, 0,220,220);
clapboard.write(PWM_CLAPBOARD_IN
CHIS);
113
goTo(100, -60, 60,220,220);
//a luat 4 standuri?
if(nr_standuri == 4) //DA
{
goTo(100, -34, 0,220 ,220);
delay(300);
pahar.write(PWM_PAHAR_DESCHIS);
lasaStanduri();
delay(300);
deplasare_orientare_pid( -47 *
COEF_D, orientare,220);
initServo();
goToStand(20, -85,220,220,5);
ridica_primul();
delay(500);
deplasare_orientare_pid(10 *
COEF_D, orientare,140);
ridica();
deplasare_orientare_pid( -47 *
COEF_D, orientare,220);
goToStand(28, -9,150,150,2);
prindeFinal();
deplasare_orientare_pid( -50 *
COEF_D, orientare,220);
goTo(80, -60, 0,220,220);
lasaStanduri();
delay(300);
deplasare_orientare_pid( -20 *
COEF_D, orientare,140); }
else // NU
{
goTo(90, -82,0,180,180);
servo_griper.write(PWM_GRIPER_DESC
HIS);
delay(270);
servo_vertical.write(PWM_VERTICAL_J
OS);
delay(400);
ridica_primul();
goToStand(20, -85,150,150,0);
ridica();
delay(1000);
deplasare_orientare_ pid(10 *
COEF_D, orientare,140);
prindeFinal();
deplasare_orientare_pid( -85 *
COEF_D, orientare,140);
goTo(100, -50, 60,160,160);
delay(300);
pahar.write(PWM_PAHAR_DESCHIS);
lasaStanduri();
delay(100);
deplasare_orientare_pid( -50 *
COEF_D, orientare,140);
delay(300);
goTo(25, -60,0,220,220);
114
//deplasare_orientare_pid( -30 *
COEF_D, orientare,140);
initServo();
goToStand(27, -9,150,150,2);
prindeFinal();
deplasare_orientare_pid( -47 *
COEF_D, orientare,140);
goTo(100, -60, 0,150,150);
lasaStanduri();
delay(300);
deplasare_orientare_pid( -20 *
COEF_D, orientare,140);
}
}
// Timer achizitii – odometrie //
void achizitie_encoder()
{
stanga = encoderStanga.read();
dreapta = encoderDreapta.read();
deltaStanga=stanga -stanga_precedent;
deltaDreapta=dreapta – dreapta_precedent;
vitezaStanga = (stanga –
stanga_precedent) * 100;
vitezaDreapta=(dreapta –
dreapta_precedent) * 100;
vitezaMedie=(vitezaStanga +
vitezaDreapta) / 2;
deltaViteza = vitezaMedie –
vitezaMedieAnterioara; vitezaMedieAnterioara =
vitezaMedie;
stanga_precedent =
encoderStanga.read();
dreapta_precedent =
encoderDreapta.re ad();
}
void calcul_xy()
{
float delta_distanta,
delta_orientare;
float orientare_medie;
float orientare_medie,
delta_orientare;
float K, dx, dy;
distanta = (dreapta + stanga) / 2;
orientare = orientare_initiala +
(dreapta – stanga);
delta_distanta = distanta –
distanta_precedenta;
delta_orientare = orientare –
orientare_precedenta;
orientare_medie = (orientare +
orientare_precedenta) / 2;
if (delta_orientare = = 0)
K = 1;
else
{
K = (float)
(sin((float)delta_orientare / 2)) /
(delta_orientare / 2);
}
115
dx = (float) K * delta_distanta *
cos(orientare_medie);
dy = (float) K * delta_distanta *
sin(orientare_medie);
x = (float) x + dx;
y = (float) y + dy;
orientare_precedenta = orientare;
distanta_precedenta = distanta;
Serial.print("orientare = ");
Serial.print(orientare);
Serial.print(" x = "); Serial.print(x);
Serial.print(" y = ");
Serial.println(y);
}
116
OPIS :
Prezenta lucrare de licență conține:
Partea scrisă:
– 114 pagini format A4,
– 71 de figuri în text,
– 59 de relații matematice ,
– 2 tabele.
Partea grafică:
– echivalentul a 1 format A1 – desen de ansamblu ,
– echivalentul a 1 format A4 – desen de execuție .
Absolvent:
Bârsan Alexandru
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: SSttuuddiiuull șșii pprrooiieeccttaarreeaa ssiisstteemmuulluuii ddee [602733] (ID: 602733)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
