Cercetări asupra posibilităților de localizare în spațiu a unui robot mobil [309304]
UNIVERSITATEA “POLITEHNICA” din BUCUREȘTI
Facultatea de Inginerie Mecanică și Mecatronică
Departamentul de Mecatronică și Mecanică de Precizie
Cercetări asupra posibilităților de localizare în spațiu a unui robot mobil
Conducător științific:
As. dr. ing. Viorel Gheorghe
Masterand: [anonimizat]. Ghiulsen Marin
Cuprins
INTRODUCERE. [anonimizat], fără ajutorul unui operator uman și să execute anumite sarcini date de acesta. Deci, principala lui caracteristică este mobilitatea.
Pentru a [anonimizat] o mișcare precisă (altfel deplasarea s-ar face haotic).
[anonimizat], se desprind următoarele :
roboții mobili cu sistem de locomoție cu șenile sunt realizați într-o [anonimizat], [anonimizat].
[anonimizat].
[anonimizat], îndeplinind mai puține operații decât roboții din primele două categorii.
[anonimizat] 9 ore.
lungimea cablurilor de alimentare cu curent electric este de maxim 250 m, iar raza de acțiune prin radio este în majoritatea cazurilor de 300 m.
Robotul mobil este un sistem complex care poate efectua diferite activități într-o varietate de situații specifice lumii reale. El este o combinație de dispozitive echipate cu servomotoare și senzori (aflate sub controlul unui sistem ierarhic de calcul) [anonimizat], marcat de o serie de proprietăți fizice (de exemplu gravitația care influențează mișcarea tuturor roboților care funcționează pe pământ) și care trebuie să planifice mișcările astfel încât robotul să poată realiza o sarcină în funcție de starea inițială a [anonimizat].
Succesul în îndeplinirea acestor sarcini depinde atât de cunoștințele pe care robotul le are asupra configurației inițiale a [anonimizat].
Problemele specifice ce apar la roboții mobili ar fi următoarele: [anonimizat], planificarea unei traiectorii optime de mișcare.
Planificarea mișcărilor nu constă dintr-o [anonimizat]-un ansamblu de probleme dintre care unele sunt mai mult sau mai puțin variante ale celorlalte.
Vitezele mari de lucru fac ca efectele dinamice ale unui contact fizic cu obstacole sauobiecte manipulate să fie riscante (pot duce la deteriorarea obiectelor sau a robotului).
Navigarea robotului este posibilă și fără o determinare a [anonimizat] a mișcării. Dintre metodele de navigație mai des utilizate se pot menționa: măsurarea numărului de rotații făcute de roțile motoare, folosirea de acceleratoare și giroscoape, geamanduri electromagnetice instalate în teren, semnalizatoare pasive sau semipasive de tip optic sau magnetic.
Structura roboților mobili (RM) corespunde arhitecturii generale a roboților,având două părți:
Structura mecanică, respectiv manipulatorul, care determină performanțele tehnice;
Structura electronică, respectiv de comandă-control, care condiționează calitatea performanțelor.
Indiferent de generația robotului, probleme complexe apar la realizarea structurii mecanice de volum, greutate și cost reduse, la transmiterea mișcării și adaptarea la structura mecanică a motoarelor electrice și hidraulice, la proiectarea mâinilor mecanice pentru a apuca obiecte de diferite forme. Referitor la structura electronică, posibilitățile actuale permit folosirea a câte unui microprocesor pentru comanda fiecărui grad de mobilitate, precum și a altor microprocesoare specializate pentru tratarea semnalului senzorial. Robotul mobil interacționează cu mediul înconjurător prin structura sa mecanică, asigurând astfel deplasarea, poziționarea și orientarea organului de execuție.
Prezenta lucrare a fost redactată de către mine, sub îndrumarea știițifică a domnului profesor Viorel Gheorghe. Tema propusă de domnul profesor a fost îndelung dezbătută de către ambele părți și a trecut prin multe faze preliminare până a ajunge la această variantă finală considerată optimă atât din punct de vedere teoretic, cât și experimental.
Documentarea a reprezentat o etapă grea a proiectului deoarece sursele de care am dispus (cărți, articole, publicații, internet etc.) trebuiau verificate și mai ales procesul trebuia sa fie bine înteles.
Apoi, a urmat organizarea informației, efectuarea experimentelor, modelările matematice și simulările și programarea.
Proiectarea a reprezentat partea ușoară a proiectului deoarece dispuneam de obiectul practic de lucru, adică echipamentele robotului. Apoi, îmbinările echipamentelor s-au realizat progresiv, iar versiunea finală, cea pe care am efectuat testele, a avut un rezultat pozitiv.
Din cauza slabei mele experiențe în domeniul modelării matematice, această etapă de simulare a subansamblurilor a necesitat un timp mai îndelungat de pregătire.
Efectuarea experimentelor a reprezentat o etapă interesantă, iar rezultatele au fost conform așteptărilor.
Etapa cea mai anevoioasă a fost cea de programare. Aici am întâmpinat mari dificultăți, iar rezultatele au fost posibile datorită domnilor profesori Silviu Petrache și Viorel Gheorghe care mi-au acordat un suport semnificativ.
Prezenta lucrare tratează proiectarea, calculul, comanda, simularea și testarea unui robot mobil cu șenile. Scopul principal îl reprezintă cunoașterea pozitiei și orientarea actuală prin observarea senzorială și localizarea exactă. Există numeroase metode de localizare, cum ar fi „dead reckoning (DR)” cu codificatoare (encoders) care numără rotațiile arborilor roților. Cu toate că odometria este prima și cea mai fundamentală abordare pentru determinarea poziției, din cauza unor erori inerente, aceasta nu este o metodă suficient de exactă. O posibilă soluție o reprezintă folosirea unui sistem de monitorizare și echipamentelor optoelectronice VICON M coroborat cu metode odometrice impreuna cu cele de tip DR.
STADIUL ACTUAL AL REALIZĂRILOR ÎN DOMENIUL ROBOTICII
Sistemul senzorial al roboților mobili
Senzorii sunt dispozitive care pot măsura diferite proprietăți ale mediului precum: temperatura, distanța, rezistența fizică, greutatea, mărimea etc. În funcție de informațiile primite de la senzori robotul mobil se orientează în mediul de lucru.
În cel mai general caz, senzorii pot fi împărți în două categorii, și anume:
Senzori de stare internă – senzori care oferă informații despre starea internă a robotului mobil, spre exemplu nivelul bateriei sau poziția roților;
Senzori de stare externă – senzori care oferă informații despre mediul ambiant în care robotul funcționează. Senzorii de stare externă se mai pot împărți la rândul lor în două categorii: senzori cu contact, mai precis acei senzori care culeg informația din mediu prin atingere (senzor tactil), respectiv senzori fără contact, care preiau informația din mediu de la distanță (cameră video, senzor ultrasonic, senzor infraroșu).
Un senzor poate fi activ sau pasiv. Senzorii activi sunt acei senzori care emit energie în mediu pentru a putea observa anumite caracteristici ale acestuia, spre deosebire de senzorii pasivi care primesc energie din mediu pentru a putea prelua informația.
De asemenea, toate tipurile de senzori sunt caracterizate printr-o serie de proprietăți, cele mai importante fiind:
Sensibilitatea: raportul dintre semnalul de ieșire și semnalul de intrare;
Liniaritatea: exprimă dacă raportul dintre intrare și ieșire este constant;
Intervalul de măsurare: diferența între distanța minimă și maximă măsurabilă;
Timpul de răspuns: timpul necesar pentru ca informația de la intrare să fie observabilă la ieșire;
Acuratețea: diferența între semnalul măsurat si semnalul real;
Repetabilitatea: diferențele între măsurători succesive ale aceleiași entități;
Rezoluția: exprimă cea mai mică unitate de incrementare a semnalului măsurat;
Prețul senzorului;
Puterea de calcul necesară pentru a interpreta rezultatele;
Tipul de semnal la ieșire;
Greutatea, mărimea și cantitatea de energie consumată pentru a face o măsurătoare
Orice model al unui senzor ar trebui să includă și un model intern al zgomotului care poate afecta senzorul în momentul citirii informației. Problema de a recupera informația din mediu din datele primite de la senzor poate fi destul de complexă.
Orice tip de senzor poate fi afectat de mai multe tipuri de erori. Dintre acestea, cele mai importante sunt erorile incidentale, erorile sistematice și erorile stohastice. Erorile incidentale apar ocazional și pot avea un efect neprevăzut asupra informației, ele provenind în cea mai mare parte de la măsurători efectuate greșit. Erorile sistematice au o influență predictibilă asupra acurateții informației, acestea provenind de la o interpretare greșită a parametrilor în algoritmii de estimare, sau din cauza unor neconcordanțe în modelare. În fine, erorile stohastice, au un caracter aleator, ele diferind de fiecare data când robotul execută aceeași operație.
În lumea roboților mobili se întâlnesc o mare varietate de tipuri de senzori. O clasificare de bază a acestora ar putea fi:
Senzori de distanță – senzori care oferă informații despre distanța între senzor și obiectul de măsurat din mediu;
Senzori de poziție – senzori care oferă informații despre poziția robotului în termeni absoluți;
Senzori de mediu – senzori care oferă informații despre diverse proprietăți și caracteristici ale mediului (exemplu: temperatură, culoare);
senzori inerțiali – senzori care măsoară proprietăți de mișcare ale robotului.
Senzori de stare externă
Senzori de contact
Cel mai des întâlnit tip de senzori de contact în lumea roboților mobili este reprezentat de senzorii tactili. Termenul de senzor tactil se referă la un traductor care este sensibil la atingere, forță sau presiune. Acești senzori pot fi piezorezistivi, piezoelectrici, capacitivi sau electrorezistivi.
Senzori în infraroșu (IR)
Senzorii în infraroșu (IR) constituie categoria cea mai simplă de senzori de distantă folosită la un robot mobil. Metoda lor de funcționare este foarte simplă, fiecare senzor fiind echipat cu un emițător și un detector. Emițătorul transmite un fascicol de lumină în spectrul infraroșu (de regulă sunt folosite lungimi de undă în intervalul 880-990nm), fascicol care se propagă în mediu, iar apoi se reflectă de obiectele aflate în acesta. Fascicolul reflectat este captat de componenta detector, urmând apoi ca printr-un calcul matematic simplu, să se estimeze o distanță între senzorul în infraroșu și obiectul detectat din mediu.
Senzori ultrasonici
Categoria de senzori cea mai des întâlnită la un robot mobil o constituie categoria senzorilor ultrasonici. Întâlniți în literatura de specialitate și sub denumirea de sonar, senzorii ultrasonici folosesc un principiu oarecum asemănător cu senzorii IR., dar în loc de a transmite fascicole luminoase, ei folosesc semnale acustice. Un emițător transmite un semnal acustic în mediu, urmând apoi ca reflecția acestuia să fie recepționată de componenta detector a senzorului. Timpul în care semnalul este receptat înapoi de senzor precum și atenuarea semnalului reprezintă aspecte exploatate de diferitele tipuri de senzori sonar.
Sunetele transmise de senzori sunt de regulă în spectrul de sunete ultrasonice, având o frecvență foarte înaltă pentru a nu putea fi detectate de urechea umană.
Sensibilitatea unui senzor ultrasonic nu este uniformă, ci consistă dintr-un lob principal și câteva loburi laterale mai mici. De asemenea, această sensibilitate diferă de la un senzor la altul.
Senzori GPS
Sistemul de poziționare globală prin satelit (Global Positioning System) a fost inițial dezvoltat de către Departamentul de Apărare al SUA începând cu anul 1973. Sistemul este alcătuit din aproximativ 21 de sateliți, si permite oricărui receptor autorizat să-și calculeze poziția și viteza cu care se deplasează. Sistemul GPS nu poate fi folosit în interiorul clădirilor, deoarece el necesită ca între receptor și satelit să existe vizibilitate directă. Momentan există mat multe implementări ale serviciului, printre care SPS (Standard Positioning System) disponibil pentru civili, respectiv PPS (Precise Positioning System), disponibil pentru armată. SPS are o acuratețe de aproximativ 100m pe orizontală, fapt pentru care nu este folosit prea mult în lumea roboților mobili.
Senzori video
Senzorii vizuali sunt reprezentați de regulă în lumea roboților mobili de camere video. În momentul de față senzorii de imagine folosesc două tehnologii: CCD și CMOS.
Camerele video obțin o cantitate mare de informații din câmpul lor vizual. Procesarea acestor date poate necesita o putere de calcul ridicată, mai ales dacă se dorește obținerea unor performanțe optime din informațiile culese.
Aplicațiile senzorilor vizuali sunt extrem de variate:
Control și inspecție: stări de suprafețe, culori, aspect, forme, contur și dimensiuni;
Verificare: prezența sau absența unui obiect;
Identificări și localizări de obiecte: în plan (2D) sau în spațiu (3D);
Urmărirea unui contur.
Senzori de stare internă
Senzorii de stare internă sunt acei senzori care oferă informații despre starea internă a robotului mobil. Senzorii din această categorie oferă fie informații legate de poziția robotului (odometrie), fie informații referitoare la vitezele sau accelerațiile liniare, respectiv unghiulare ale robotului (accelerometru, giroscop).
Senzorii care oferă informații despre poziție, se regăsesc de regulă sub forma encoderelor la motoarele robotului. Encoder-ul este un dispozitiv (circuit, traductor, software) care transformă semnalul primit (numărul de rotații) într-un semnal electric. Prin măsurarea rotației roților robotului, și apoi interpretarea acestei informații se poate estima poziția robotului. Semnalul provenit de la encodere poate oferi informații despre direcția în care se deplasează robotul, viteza cu care se deplasează robotul precum și distanța aproximativă care a parcurs-o robotul de la ultima evaluare.
Teoretic, poziția exactă a robotului ar putea fi dedusă doar din informațiile de odometrie provenite de la encodere, în sensul că distanța parcursă ar trebui să fie egală cu 2πr, unde r reprezintă raza roții respective. În practică însă, în cel mai bun caz, se poate ști doar că informația de la encodere conține o anumită eroare, și că această eroare de regulă nu scade niciodată. În cea mai rea situație, când roțile robotului alunecă, nu mai există nici o relație între mișcarea roților si mișcarea robotului.
Senzorul care permite determinarea vitezelor sau accelerațiile unghiulare ale robotului este giroscopul. Elementul component fundamental al tuturor dispozitivelor giroscopice – indiferent de destinația acestora – îl constituie giroscopul în formă de volant având rolul de purtător de moment cinetic. Pentru menținerea lui în mișcare de rotație se utilizează diferite mijloace de acționare. Ansamblul format din motorul de acționare (pneumatic sau electric) și giroscop (volant) se numește giromotor.
Fuziunea datelor furnizate de senzori
Pentru majoritatea sarcinilor atribuite unui robot mobil, folosirea unui singur tip de senzor nu poate da rezultate satisfăcătoare. Spre exemplu, pentru navigare, anumite obiecte din mediu pot fi detectate doar de senzori IR, iar altele doar de senzori ultrasonici, și doar unele de ambele tipuri de senzori. Se pune deci problema găsirii unei metode care să combine într-un mod eficient informațiile de la o multitudine de senzori de categorii și caracteristici diferite.
Termenul cel mai des întâlnit în literatura de specialitate este „fuziune de senzori”. În contextul roboților mobili, fuziunea trebuie să fie efectuată pe următoarele trei nivele:
Trebuie să combine măsurători de senzori de categorii diferite;
Trebuie să combine măsurători din poziții diferite;
Trebuie să combine măsurători efectuate la diferite intervale de timp.
Termenul de ’’robot’’ este utilizat cu mai multe înțelesuri, în diferite contexte. Este deosebit de dificilă formularea unei definiții care să cuprindă toate caracteristicile unui robot în câteva rânduri. Din acest motiv, există mai multe definiții ale aceluiași termen, date de unele dintre companiile constructoare sau asociațiile naționale din domeniu. Fiecare dintre acestea încearcă să definească în moduri diferite același produs al inteligenței umane.
RIA (Robot Institute of America) (figura 2-1): „Robotul este un manipulator multifuncțional, reprogramabil, destinat deplasării materialelor, pieselor, sculelor sau altor dispozitive specializate prin mișcări variabile, programate pentru a îndeplini anumite sarcini”.
Figura 2-1 Robotul conceput de Institutul american în domeniul roboticii
JIRA (Japan Industrial Robot Association) (figura 2-2): „Robotul este un dispozitiv versatil și flexibil care oferă funcții de deplasare similare celor ale membrelor umane sau ale cărui funcții de deplasare sunt comandate de senzori și de mijloace proprii de recunoaștere”.
Figura 2-2 Roboții japonezi
BRA (British Robot Association) (figura 2-3): „Robotul este un dispozitiv reprogramabil realizat pentru manipularea și transportul pieselor, sculelor sau altor mijloace de producție prin mișcări variabile programate pentru a îndeplini sarcini specifice de fabricație”.
Figura 2-3 Robotul britanic
General Motors (figura 2-4): „Robotul este un echipament fizic cu funcționare programabilă capabil să efectueze anumite operații și secvențe de operații orientate spre manipularea de piese, scule, subansamble”.
Figura 2-4 Robotul General Motors
Institutul Francez de Standardizare (figura 2-5): Robotul este un manipulator automat repregramabil și polivalent, capabil să realizeze poziționarea și reorientarea pieselor printr-o mișcare variabilă și programabilă a brațelor terminale, prin intermediul unor dispozitive.
Figura 2-5 Roboți concepuți de compania franceză Aldebaran
Literatura românească de specialitate (figura 2-6): Robotul este definit ca fiind un echipament automat, adaptabil prin reprogramare la condițiile de mediu în care acționează.
Figura 2-6 Robotul de agricultură conceput de români
Roboții sunt unul dintre lucrurile indispensabile funcționării societății umane a secolului XXI. Întâlniți atât în procesele de producție, cât și în alte arii de interes precum divertisment, transporturi, comunicații, medicină sau agricultură, roboții îmbunătățesc performanțele umane din punct de vedere cantitativ și calitativ.
Robotul este un sistem complex format din mai multe elemente: mecanică (mecanism de direcționare), actuatori și senzori. Mecanica stabilește înfățișarea robotului și mișcările posibile în timpul funcționării și are grijă ca robotul să-și îndeplinească obiectivul cu succes.
Sistemul de comandă și control evaluează informațiile primite de la senzori, reglează motoarele și planifică mișcările care trebuiesc efectuate.
Roboții pot fi clasificati dupa mai multe criterii, conform tabelului 2-1.
Roboții industriali sunt cel mai folosit tip, aceștia fiind și primii care au apărut, ca răspuns la nevoia efectuării mai rapide și mai exacte a unor operații repetitive, deseori întâlnite în procesele de producție.
Interacțiunea om-robot studiază relația care apare între operatorii umani și roboți în timpul colaborării directe dintre aceștia. În cazul în care avem de a face cu un operator uman instruit care dorește să lucreze cu un robot mobil industrial, realizarea unei interacțiuni cât mai naturale și mai satisfăcătoare pentru operator nu este neapărat un desiderat, dar îmbunătățirea acesteia se reflectă în îmbunătățirea productivității muncii, mai ales în cazul unor operații de manipulare directă om-robot precum figura 2-7 reprezentată mai jos.
Figura 2-7 Om-Robot
În sfera roboților industriali clasificarea acestora ar fi conform tabelului 2-1 :
Tabel 2-1 Clasificarea roboților industriali
În sfera roboților mobili situația nu este atât de precisă (tabelul 2-2):
Tabel 2-2 Clasificarea roboților industriali
Avantajele roboților mobili
Principalele avantaje ale roboților mobili cu șenile sunt:
Soluție potrivită pentru o platformă versatilă care operează pe diferite tipuri de teren și în condiții meteo nefavorabile (noroi, zăpadă, etc). Sistemul cu șenile prezentat în figura 2-8 reprezintă un ajutor în operațiunile de căutare și salvare;
Figura 2-8 Auriga-β (Universitatea din Malaga, Spania) – Robot ce ajută la stingerea incendiilor
Șenilele genereză o presiune scăzută pe sol, chiar și la o sarcină mare, ceea ce duce la o mai bună păstrare mai bună a terenului și mediul în care operează vehiculul. Aceasta motivează cererea mare în agricultură și minerit (figurile 2-9÷12)
Figura 2-9 Bulldozer Komatsu D50 folosit în construcții și minerit
Figura 2-10 Excavator D6M
Figura 2-11 Fitorobot (Universiatea din Almeria, Spania) folosit în agricultură
Figura 2-12 Remotec ANDROS Wolverine(Remotec Inc., EEUU) folosit în domeniul minier și militar
Se previne posibilitatea ca vehiculul să rămână blocat în nisip sau zăpadă. De aceea, vehiculele pe șenile sunt utilizate pe scară largă în solurile nisipoase și în operațiuni militare (figurile 2-13, 2-14).
Figura 2-13 Tractor Holt – a transportat artileria în timpul Primului Război Mondial
Figura 2-14 Vehiıcul Hagglunds Bv 206 – a transportat personalul militar (1974)
Centrul de greutate al vehiculului se menține scăzut, apoi se obține o bună stabilitate și mobilitate (figurile 2-15, 2-16).
Figura 2-15 Platforma de investigații (Universitatea din Minnesota)
Figura 2-16 iRobot 110 FirstLook folosit în activități militare
În general, sistemul de deplasare cu șenile (figura 2-17) are în componență:
roată motoare I;
roată de întindere II;
două sau mai multe roți purtătoare III;
una sau două roți de susținere IV a șenilei V;
șenila V, realizată ca un lanț articulat plan.
Figura 2-17 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 ce 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ă. 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 eclise 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 pentru 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 cazul altor soluții. Acționarea roții motoare se face cu un motor electric de curent continuu, alimentat de la baterii de acumulatoare sau de la un grup electrogen cu putere corespunzătoare. Reductorul folosit este de tip armonic (cu deformator și roată dințată elastică) și este prevăzut cu cuplaj ireversibil, prin care se asigură frânarea vehiculului robot la opririle în pantă. Sistemul de locomoție cu șenile permite deplasarea robotului înainte și-napoi, efectuarea virajelor la stânga și dreapta, 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°.
Figura 2-18 Robot mobil pe șenile
Figura 2-18 prezintă un robot mobil pe șenile, asistat de un manipulator plan tip RRT, cu acționare electro–hidraulică; acesta este utilizat pentru manipularea și neutralizarea munițiilor neexplodate. Manipulatorul-robot este montat pe șasiul cu șenile și realizează față de acesta mișcări plan-paralele în plan vertical. Rotația de pivotare în plan orizontal se obține cu ajutorul sistemului de virare al șasiului pe șenile Fiecare șenilă este acționată de un motor electric de curent continuu cu rotor disc, prin intermediul unui reductor armonic. Rotirea vehiculului-robot în ambele sensuri, fără nici o deplasare liniară, se obține prin rotația inversă a motoarelor electrice de acționare a celor două șenile din stânga și dreapta.
Schema cinematică a acestui robot mobil (RM) pe șenile evidențiază lanțul cinematic plan trimobil tip RRT (figura 2-19) format din brațele articulate 1 și 2 și tija 3 care translează față de brațul 2.
Figura 2-19 Schema cinematică a RM cu șenile
Bascularea brațelor 1 și 2 în plan vertical se face cu ajutorul actuatorilor (cilindri hidraulici) a1 respectiv a2, iar mișcarea de translație (telescopare) a tijei 3, împreună cu dispozitivul special 4, se execută cu ajutorul unui motor electric și a unei transmisii cu șurub cu bile. Mecanismul de orientare 4 permite o singură mișcare de rotație în plan vertical, prin care se asigură orientarea disruptorului (cartușele de tragere) spre mecanismul de percuție al muniției în vederea neutralizării.
Considerații privind navigația roboților mobili
Sistemul de navigație reprezintă componenta cea mai complexă a roboților mobili autonomi. Instrumentele de navigație pot fi aplicate roboților autonomi sub diferite forme cinematice și geometrice. Pentru navigație au fost folosite numeroase principii: odometrie (măsurarea relativă a poziției prin analiza numărului de rotații și orientarea roților) , navigație inerțială (pe baza măsurătorilor relative realizate prin intermediul giroscopului), ghidare activă (calculul poziției absolute prin măsurarea distantei până la cel puțin trei repere), recunoașterea punctelor de reper artificiale și recunoașterea puncte de reper naturale (se folosesc puncte de reper existente din mediul înconjurător).
Metodele de navigație a roboților autonomi sunt din cele mai diverse, dată fiind gama largă de utilizare a roboților și aplicațiile acestora. Mediul înconjurător robotului are o importanță crucială pentru funcționarea și orientarea acestuia, și de aceea toate abordările acestei probleme pornesc de la mediu. După acest considerent, se pot evidenția trei principii de navigație:
Navigația globală – raportare directă prin coordonate absolute la harta mediului înconjurător;
Acest tip de navigație se aplică la roboții ce au de parcurs distanțe mari, în spații deschise, fără repere imediate și la distanțe foarte mari față de puncte de referință. Acest tip de roboți este utilizat cu precădere de industria militară, cum ar fi avioanele de recunoaștere fără pilot uman de tip UAV, dar și alte echipamente de pilot automat întâlnite în aeronautică, pe vapoare sau chiar în dotarea automobilelor de ultimă generație. În majoritatea cazurilor, navigația automată a acestora se face cu ajutorul tehnologiei GPS.
Navigația locală – prin determinarea poziției relativă față de obiecte imediat apropiate de robot, staționare sau în mișcare;
În cazul navigației locale, se folosesc metode de detecție vizuală a mediului cu ajutorul a diferiți senzori, cum ar fi senzorii vizuali, infraroșu, laser, sau ultrasonici. În cadrul navigării locale este vizată o modelare și o interpretare a mediului de către robot, fără ca informațiile despre mediu sa îi fie furnizate în prealabil. Această interpretare duce la diferite tipuri de reprezentări ale mediului înconjurător, făcute după modele în funcție de aplicație. Astfel mediul poate fi interpretat mai ușor prin stabilirea unor puncte de reper (în literatura de specialitate sunt denumite landmarks) de către robot prin recunoașterea unor anumite obiecte sau caracteristici ale mediului. Aceste repere pot fi stabilite artificial, în puncte cheie, acestea fiind realizate astfel încât să poată fi detectate cât mai ușor. Pe baza interpretării mediului, robotul poate realiza hărți bidimensionale sau tridimensionale pentru o orientare mai bună și prin recunoașterea anumitor părți din mediu, procesul de navigație poate fi optimizat. Cei mai utilizați senzori în acest caz sunt senzorii vizuali CCD sau CMOS.
Navigația individuală – aflarea poziției robotului cu ajutorul unor dispozitive dedicate monitorizării deplasărilor făcute de acesta.
Navigația individuală, este utilizată în combinație cu metodele de navigație globală și locală, prin calcularea poziției robotului relativ la mediu prin măsurări directe asupra vitezei și traiectoriei parcurse de către robot. Această metodă, numită și odometrie, oferă o corecție mai bună a erorilor de deplasare și totodată este relativ simplu de implementat, soluția regăsindu-se la roboții ieftini sau cu aplicații simple. Pentru că majoritatea roboților mobili utilizează roți sau șenile, această soluție a devenit practic omniprezentă la aproape toți roboții mobili. Dintre soluțiile de implementare se pot aminti: odometre cu perii, magnetice, inductive, capacitive, optice. Alte metode utilizează senzori Doppler sau unde active de tip laser, sonice, radio pentru orientare sau măsurarea vitezei. Senzorii Doppler funcționează pe baza efectului cu același nume, ce privește modificarea frecvenței undei radiate funcție de viteza și direcția emițătorului. Pentru roboții mobili, cele mai utilizate sunt laserele și ultrasunetele, dar dezavantajul lor constă în faptul că aplicabilitatea robotului rămâne restrânsă la incinta ce găzduiește aceste repere.
Odometrie
Există un consens în rândul cercetătorilor că odometria este tehnica vitală pentru determinarea poziției robotului mobil. Ecuațiile de conducere ale odometriei se bazează pe transformarea mișcării de rotație a roților robotului la o mișcare de translație.
Cu toate că odometria este o metodă relativ simplă de determinare a poziției, are mai multe probleme inerente. O problemă este că erorile se acumulează în timp și, în consecință, face odometria nesigură în timp. Erorile odometriei sunt clasificate ca fiind sistematice și nesistematice.
Erorile de bază non-sistematice sunt cele care nu sunt cauzate în mod direct de proprietățile cinematice ale vehiculului. Pe de altă parte, erorile sistematice sunt deosebit de grave deoarece acestea se acumulează în mod constant. Pe cele mai multe suprafețe interioare netede erorile sistematice contribuie mult mai mult în odometrie decât erorile non-sistematice. Majoritatea erorilor sistematice poate fi redusă printr-o proiectare mecanică atentă a vehiculului și prin calibrare specifică unui anumit autovehicul.
Sursa de erori sistematice, de obicei, cauzată de:
media ambelor diametre ale roților diferă de diametrul nominal;
nealinierea roților;
incertitudinea cu privire la ampatamentul efectiv (din cauza contactului dintre punctul liber al roților cu podeaua);
limitarea rezoluției encoderului;
limitarea ratei de eșantionare a encoderului.
Erorile nesistematice sunt cauzate de următoarele condiții:
mișcări pe podea neuniformă;
mișcări peste obstacole neprevăzute;
patinarea roților.
Din moment ce aceste erori afectează în mod drastic precizia odometriei pe distanțe scurte și lungi, erorile pot fi corectate empiric. Tehnicile folosite pentru rezolvarea problemelor odometriei pot fi clasificate ca tehnici de referință și care utilizează mai mulți senzori.
În plus, pot apărea erori de calcul deoarece se aproximează mișcarea arbitrară ca o serie de segmente în linie dreaptă. Precizia acestei aproximări depinde de frecvența de eșantionare cu respectarea vitezei robotului. Experiența practică arată că această eroare este neglijabilă atunci când se lucrează cu perioadele de prelevare tipice ale Ts <10 ms și vitezele tipice de V <1 m/s.
Importanța odometriei
Îmbunătățirea odometriei poate reduce dramatic costurile pentru instalarea sistemelor unui robot mobil deoarece simplifică problema fundamentală de determinare a poziției. Cu toate acestea, puține cercetări vizează în mod direct îmbunătățirea preciziei odometrice de roboți mobili. Această observație este atribuită faptului că o mare parte a cercetării în robotica mobilă se face de către comunitatea Inteligenta Artificiala (AI). Cercetătorii AI sunt implicați în aspecte de cel mai înalt nivel al roboticii. Din acest motiv, cercetătorii AI par să se concentreze asupra metodelor de extragere caracteristică și cu ajutorul hărților.
Aceste probleme de cercetare sunt de o mare importanță pentru dezvoltarea viitoare a roboților mobili, dar în acest moment ele sunt prea lente pentru a înlocui complet odometria. Chiar și Cox, un partizan al metodei cu ajutorul hărții, spune despre acuratețea odometriei:
"Pare a fi o proprietate de auto-susținere a acestei configurații (hartă combinată cu odometriei): Cunoașterea precisă a poziției permite potrivirea robustă rapidă, ceea ce duce la cunoașterea exactă a poziției".
Bine-cunoscutul dezavantaj al odometriei este că aceasta este inexactă cu o acumulare de erori nemarginite. Erorile tipice de odometrie vor deveni atât de mari încât estimarea poziției internă a robotului este total greșită, după mai puțin de 10 m de mers.
Erorile nesistematice ale odometriei
Aceste erori sunt cauzate de interacțiunea dintre robot cu caracteristicile imprevizibile ale mediului. De exemplu, neregularități ale suprafeței podelei, cum ar fi umflături, fisuri, vor provoca o roată să se rotească mai mult decât cealalta, pentru ca roata afectat se deplasează în susul sau în josul neregularității, în plus față de poziția așteptată C se deplasează pe orizontală precum reprezentarea din figura 1. Erorile de bază nesistematice sunt o problemă mare pentru aplicații reale, deoarece este imposibil să se prevadă o limită superioară pentru eroarea odometriei. Lucrările recente de la Universitatea din Michigan au arătat că, prin utilizarea de date redundante ale codificatoarelor, erorile non-sistematice pot fi reduse prin ordine de mărime.
Figura 2-20 Robot mobil cu acționare diferențială (vedere de sus)
Erorile sistematice ale odometriei
Erori sistematice sunt specifice unui anumit autovehicul și, de obicei, nu se schimbă în timpul unei deplasări (deși diferite distribuții de sarcină pot schimba unele erori sistematice cantitativ). Astfel încât odometria poate fi îmbunătățită, în general prin măsurarea contribuției individuală a surselor de erori dominante, iar apoi se contra-acționează efectul lor cu ajutorul software-ului.
Erorile sistematice sunt de obicei cauzate de imperfecțiuni în proiectarea și punerea în aplicare mecanică a unui robot mobil. Pe parcursul experimentelor cu roboții mobili s-a observat că cele două surse notorii de erori sistematice sunt diametrele roților inegale și incertitudinea cu privire la ampatamentul propriu-zis. Cercetările se reflectă în literatura de specialitate, în cazul în care aceste două surse de eroare sunt întâlnite adesea.,
Diametrul inegal al roților
Cei mai mulți roboți mobili folosesc anvelope de cauciuc pentru a îmbunătăți tracțiunea. Este dificil de fabricat exact același diametru al anvelopelor. Mai mult decât atât, anvelopele din cauciuc comprimă diferit în condiții de distribuție a sarcinii asimetrică. Oricare dintre aceste efecte poate provoca erori substanțiale de odometrie. Această eroare a fost notată ca și este definită ca:
(2-1)
Unde și reprezintă diametrele actuale. Raportul nominal al diametrelor este 1.
Incertitudinea cu privire la ampatament
Ampatamentul este definit ca distanța dintre punctele de contact ale celor două roți motoare ale unui robot cu acționare diferențială și podea. Ampatamentul trebuie să fie cunoscut pentru a calcula numărul de impulsuri de codoare diferențiale care corespund unui anumit număr de rotații al vehiculului. Incertitudinea în ampatamentul efectiv este cauzat de faptul că anvelopele de cauciuc ating podeaua, nu într-un singur punct, ci mai degrabă într-o zonă de contact. Incertitudinea care rezultă poate fi pe ordinea de 1% în unii roboți disponibili în comerț. Această eroare a fost notată ca și este definită ca:
(2-2)
Unde reprezintă ampatamentul vehicului.
Este important de remarcat faptul că are un efect doar în cazul rotirii robotului, în timp ce afectează doar linia de mișcare dreaptă. și sunt valori adimensionale, exprimate în fracțiuni de valoare nominală.
Deocamdată este definită numai eroarea ampatamentului , și raportul dintre diametrele reale ale roților, , ca factori relevanți. Cu toate acestea, în cazul în care media celor două diametre reale ale roților, notată , diferă de diametrul nominal al roții, notat , atunci vehiculul va experimenta o eroare în odometrie suplimentară, pe care o numim eroare de scalare . afectează în linie dreaptă mișcare. Cu toate acestea, chiar dacă poate fi o eroare semnificativă, ea este extrem de ușor de măsurat, cu doar o măsură de bandă obișnuită.
Din acest motiv, vom presupune că a fost măsurată și corectată cu ajutorul software-ului înainte de oricare dintre procedurile descrise în această lucrare este realizată.
Cauzele diametrelor inegale ale roților în timpul rotirii
Rezultatele acestei secțiuni sunt de o importanță fundamentală pentru metodele de măsurare și de corectare a erorilor odometriei. Calculele au fos efectuate de Johann Borenstein și Liqiang Feng, Univestitatea din Michigan, în lucrarea intitulată “Măsurarea și corectarea erorilor sistematice în odometria roboților mobili”.
Figura 2 prezintă cele două roți motoare ale robotului, înainte și după un viraj nominal. Deoarece întoarcerea necesită ca ambele roți să se rotească cu aceeași viteză, putem presupune că viteza unghiulară a roților este egală. Cu toate acestea, datorită diametrului inegal ale roților, vitezele liniare reale ale roților sunt proporționale cu diametrul roților reale și .
Astfel, centrul instantaneu de rotație (CIR) "O" poate fi găsit cu ușurință așa cum se arată în Fig. 2. De reținut că "O" nu coincide cu C punctul central al vehiculului. După rotire punctul C va fi mutat la punctul C'. Rotirea este, prin urmare, însoțită de o deplasare laterală. Aceste deplasări laterale pot fi ingnorate.
Se obține o relație între diametrele roților efective și și unghiul real de rotație φ. Din figura 2-21 se obține:
(2-3)
Figura 2-21 Rotirea printr-un unghi nominal n nu reprezintă o eroare din cauza “diametrului inegal al roții”, ci o eroare din cauza “diametrului mediu actual al roții”, care afectează capacitatea de rotire
Astfel, centrul instantaneu de rotație (CIR) "O" poate fi găsit cu ușurință așa cum se arată în Fig. 2. De reținut că "O" nu coincide cu C punctul central al vehiculului. După rotire punctul C va fi mutat la punctul C'. Rotirea este, prin urmare, însoțită de o deplasare laterală. Aceste deplasări laterale pot fi ingnorate.
Se obține o relație între diametrele roților efective și și unghiul real de rotație φ. Din figura 2-21 se obține:
(2-4)
Unde reprezintă distanța din centrul O spre roata din stânga sau dreapta.
Se rescrie ecuația (2-3):
(2-5)
În condiții normale de conducere CIR este întotdeauna pe axa de antrenare (sau de-a lungul extensiei sale imaginare dincolo de roți), astfel încât:
(2-6)
Înlocuind ecuația (2-4) în ecuația (2-5), rezultă:
(2-7)
Deplasarea curbilinie nominală a roții din stânga va fi notată . Diametrul nominal al roții stânga ca și numărul de rotații ale roții din stânga ca .
Rezultă
(2-8)
În condițiile nominale, roata din stânga ar trebui să se roatească în jurul punctului C cu un unghi mai mare de valoarea nominală.
(2-9)
În continuare, se presupune ca roata din dreapta este mai mică decât cea din stânga. Rotația se face în punctul C’ (precum fig. 2-21), iar unghiul corespunzător deplasării curbilinie este:
(2-10)
Rezolvând ecuația (2-8) pentru și înlocuind ecuația (2-10), reiese:
(2-11)
Înlocuind ecuația (2-6) în ecuația (2-10), rezultă:
(2-12)
Pentru a interpreta acest rezultat mai ușor, se definește diametrul mediu al roții efectiv:
(2-13)
Rescrisă, ecuația (2-13) devine:
(2-14)
Ecuația (2-14) poate fi exprimată ca: “Diametrul mediu real al roții corespunzător unghiului real în timpul rotirii est egal cu diametrul nominal al roții corespunzător unghiului nominal în timpul rotirii."
Din ecuația (2-14) rezultă câteva concluzii importante:
Diametrele inegale ale roților nu cauzează o eroare de orientare în timpul rotației.
Eroarea de orientare depinde de diametrul mediu al roții reale. Dacă , atunci vehiculul se va roti mai mult decât valoarea nominală. Dar dacă , atunci vehiculul se va roti mai puțin.
are un efect minor asupra pozițiilor x și y față de punctul central C deoarece centrul actual de rotație, C’ nu coincide cu C, așa cum se arată în figura 2-21.
În cele mai multe aplicații ale roboților mobili sunt utilizate două metode de bază: poziționare absolută și relativă. Poziționarea relativă se bazează, de obicei, pe odometrie (adică, monitorizarea de rotație a roților pentru a calcula abaterea de la o poziție de pornire cunoscută). Odometria reprezită o metodă simplă, ieftină și ușor de realizat în timp real. Dezavantajul îl reprezintă acumularea erorilor.
Metode de poziționare absolută
Metode de poziționare absolută se bazează de obicei pe:
semnale luminoase de navigație;
repere active sau pasive;
potrivirea hartă;
semnale de navigație prin satelit.
Fiecare dintre aceste abordări de poziționare absolută poate fi implementată printr-o varietate de metode și senzori. Cu toate acestea, nici unul dintre sistemele existente în prezent nu este foarte atractiv. Balizele de navigație și reperele necesită o instalare și întreținere costisitoare, în timp ce metodele corelate cu harta sunt, de obicei mai lente decât odometria, iar tehnicile actuale nu sunt suficient de robuste pentru o aplicație comercială generală. Cu oricare dintre aceste măsurători, este necesar ca mediul de lucru să fie pregătit sau cunoscut și cartografiat cu mare precizie. GPS poate fi utilizat numai în exterior și are o precizie slabă, de ordinul 10-30 m. Sistemele bazate pe frecvențe radio sunt foarte scumpe și sunt susceptibile la reflecțiile de obiecte metalice.
Metode de poziționare inerțiale și magnetice
O altă abordare pe navigația inerțială cu giroscoape și / sau accelerometre. Studiile indică faptul că această abordare nu este avantajoasă. Datele accelerometrului trebuie să fie integrate de două ori pentru a se obține poziția, făcând astfel acești senzori extrem de sensibili la imperfecțiuni ale solului.
O altă problemă este faptul că accelerațiile în condiții de funcționare tipice pot fi foarte mici, de ordinul 0.01g. Cu toate acestea, fluctuația de această magnitudine apare în cazul în care senzorul se înclină în raport cu o poziție perfect orizontală, de exemplu, atunci când vehiculul parcure pardoseli inegale.
Giroscoapele pot fi mai precise (și costisitoare), dar ele oferă informații numai cu privire la rata de rotație a unui vehicul, astfel încât datele lor trebuie să fie integrate o dată. Această problemă nu este întâlnită la busolele electronice, care măsoară orientarea robotului în raport cu câmpul magnetic al Pământului. Cu toate acestea, busole electronice nu sunt recomandate pentru aplicații de interior, din cauza marilor distorsiuni ale câmpului magnetic terestru în apropierea liniilor electrice sau a structurilor din oțel.
Corectarea odometriei cu ajutorul mai multor senzori
O metodă de estimare a erorilor odometriei este de a integra odometria cu informații de la un alt senzor. Informațiile de la un alt senzor sunt utilizate pentru a reseta erorile odometriei, mai ales în timpul distanțelor lungi. În multe studii sistemul de poziționare globală (GPS), sistemul de navigație inerțial (INS), busola, sonarele au fost folosite împreună cu odometria pentru determinarea poziției. În cele mai multe cazuri, filtrul Kalman sau o derivație a filtrului Kalman, cum ar fi filtrul indirect Kalman (IKF), extinderea filtrului Kalman (EKF) a fost utilizat pentru a integra informațiile.
Park și colaboratorii au antrenat un sistem de navigație DR folosing codificatoare diferențiale instalate pe roțile robotului și un giroscop care este atașat robotului . Abordarea se bazează pe estimarea și compensarea erorilor din traductoarele diferențiale și unghiul de ieșire al giroscopului. Un filtru Kalman indirect (IKF) este utilizat pentru a integra poziția informațiilor de la giroscop și odometrie.
Datele de ieșire ale IKF sunt folosite pentru a compensa erorile asociate cu informațiile despre poziție, precum și eroarea la citirea giroscopului. Această poziție îmbunătățită a fost folosită pentru a da o poziție mai precisă a robotului mobil.
Avantajul acestei metode constă în faptul că prin includerea atât codificatorului cât și erorile giroscopului ca date de intrare a filtrului Kalman, ambele erori de odometrie și ale giroscopului pot fi estimate.
Eliminarea erorilor acumulate în odometrie la înaintarea robotului
Busolă magnetică
Această metoda este eficientă, dar are și două dezavantaje:
Busola este supusă unor anomalii magnetice locale care pot produce o înclinare de 90 oC la înaintare dacă robotul trece pe lângă obiecte ferometalice de dimensiuni mari.
Din cauza fluxului liniilor magnetice ale pământului, busola trebuie să permită o citire corectă. Unele busole electronice folosesc cadran de 2 axe pentru a menține nivelul busolei, dar aceste sunt problematice în mediile off-road brute în care robotul este proiectat pentru a funcționa.
Giroscopului
O metodă alternativă pentru menținerea unei traiectorii precise pentru calculele de odometrie este utilizarea unui giroscop pentru a ține cursa robotului. Acest lucru funcționează foarte bine pe spațiul pe care ruleaza robotul.
Giroscop ajutat de o busolă magnetică
Combinând o busolă magnetică și un giroscop, rezultă punctele forte ale fiecărui senzor pentru a compensa slăbiciunea celuilalt. În acest caz, giroscoapele oferă frecvența foarte bună, măsoară în fiecare moment poziția robotului în timp ce ignoră anomalii magnetice locale, iar busola oferă un termen lung de referință spre nord pentru a corecta deriva giroscopului integrat.
O abordare mai robustă pentru combinarea celor doi senzori este utilizarea unui filtru Kalman sau filtru Wiener pentru a caracteriza și compensa erorile de fiecare.
Borenstein a dezvoltat, de asemenea, o metodă de corecție bazată pe tehnici de sisteme expert, mai degrabă decât filtre Kalman, pe care o numește "Flexnav", care combină măsurători de odometrie cu un giroscop optic de mare precizie.
Dead reckoning
„Dead reckoning” reprezintă procesul de calcul al poziției bazându-se pe o poziție determinată anterior. Pentru a pune în aplicare astfel de algoritmi pe un robot trebuie să înțeleagă teoria din spatele ei. Relațiile matematice folosite pentru DR diferă de la un robot la altul, datorită diferențelor mecanismului de direcție. De exemplu, volanul robotului, se transformă într-o curbură de rază constantă și cunoscută, în timp ce roboții cu acționare diferențială pot face viraje foarte înguste, se pot roti chiar în aceeași poziție. Procesul de urmărire al poziției cu trei variabile: X și Y coordonatele carteziene și unghiul (A) al vârfului robotului (măsurat de la axa X). Matematica din spatele acestui proces este explicat pe o cale simplă prezentată în figura 2-22, unde condițiile inițiale la punctul intermediar 1 sunt:
Cele trei variabile sunt actualizate după atingerea unui punct de referință. De reținut că distanța "d" de la un punct de referință la altul, în acest exemplu este considerată relativ mare pentru simplificarea relațiilor matematice, dar, de obicei, este mult mai mică, în scopul de a crește precizia.
Atunci când robotul se mișcă pe o distanță "d", atinge următorul punct intermediar 2, noua poziție a coordonatelor carteziene (X, Y) este actualizată în concordanță cu punctul anterior 1, rezultând următoarele relații:
( 2-15)
( 2-16)
Figura 2-22 Calea unui robot cu volan
Iar pentru o mișcare linie dreaptă, unghiul rămâne constant astfel încât unghiul la punctele intermediare 1, 2 și 3 sunt egale cu 90°.
După atingerea punctului 3, robotul începe să se orienteze corect. Reamintind că raza de direcție a volanului robotului este constantă, unghiul de vârf al robotului la noul punct 4 poate fi calculat în raport cu punctul de referință anterior, în conformitate cu următoarea relație:
(2-17)
Unde este distanța de la un punct de referință la altul, iar este raza de direcție care este diferită pentru fiecare mașina, făcându-se teste și măsurând-o.
Apoi noile coordonate carteziene ale punctului 4 pot fi calculate prin aceeași regulă care a fost utilizată pentru punctul 2:
(2-18)
(2-19)
În timp ce calculul coordonatelor este logic și poate fi ușor de obținut, partea de calculul al unghiului este mai greu de obținut. Figura 2-23 arată cum este obținut calculul unghiului.
După cum se poate vedea în figură, este unghiul robotului în primul punct de referință, este unghiul la cel de-al doilea punct și este diferența dintre celelalte două unghiuri. Cu o anumită geometrie simplă, se poate deduce că . În final, este aproximativ calculată ca fiind este egală cu arcul punctat între cele două puncte intermediare care reprezintă calea reală a robotului. Erorile datorate acestei apropieri devin extrem de mici, atunci când distanța dintre punctele intermediare "" este redusă la o valoare foarte mică. Apoi unghiul la al doilea punct de referință se calculează în raport cu unghiul la primul punct de referință.
De reținut că formula matematică pentru virarea la stânga și la dreapta diferă printr-un singur semn:
Direcția la stânga:
(2-20)
Direcția la dreapta:
(2-21)
Figura 2-23 Determinarea unghiurilor
Tabelul 2-3 rezumă regulile pentru a calcula unghiul și coordonatele carteziene ale robotului în poziția dorită 2, bazându-se pe poziția anterioară cunoscută 1:
Tabel 2-3 Regulile de calcul ale unghiului și coordonatele carteziene
Partea mecanică
După cum se poate observa în figura 2-24, șasiul și toate componentele mecanice au fost inițial o mașină de jucărie RC cu două motoare, un motor folosit pentru tracțiunea pe spate, iar celălalt folosit pentru a pilota roțile din față. Cu modificări foarte mici, a reieșit un șasiu cu toate motoarele și cutiile de viteze montate pe acesta, împreună cu mecanismul de direcție.
Această idee bună la început nu a confirmat. De fapt, a fost unul dintre principalii factori care a cauzat erori în măsurarea poziției. Motivul este că pe aceste jucării ieftine, nu se poate face nici o modificare mecanicii si nu se pot adăuga întotdeauna senzori care să ofere un răspuns bun, în special în mecanismul de direcție. Un alt inconvenient major în cele mai multe dintre aceste mașini de jucărie, este calitatea scăzută a motoarelor furnizate și cutiile de viteze, deoarece acestea sunt proiectate să funcționeze la putere maximă, dar nu sunt concepute pentru a fi cu viteză controlată pentru a oferi o mai mare precizie. Cu toate acestea, a fost suficient pentru a începe testarea unor diferite coduri și algoritmi de navigație ale roboților.
Figura 2-24 Șasiul și toate componentele mecanice pe o mașină de jucărie RC cu două motoare
Adăugarea unui encoder pe arbore
O modificare importantă a fost făcută la cutia de viteze, unde s-a vrut un feedback la microcontroler, pentru a măsura numărul de rotații ale motorului, ceea ce reprezintă o indicație a distanței parcurse de robot. Pentru a face acest lucru, encoder-ul arborelui a fost pus în aplicare la prima roată a reductorului cutiei de viteze, înainte ca viteza să fie redusă.
Adăugarea discului codificator în acest stadiu incipient al cutiei de viteze crește precizia sistemului, deoarece fiecărei rotații a roții va corespunde zeci de rotații ale discului codificator, sau cu alte cuvinte, fiecărei rotații a discului codificator, va corespunde o foarte mică deplasare a robotului. Codificatorul arborelui este construit folosind două componente principale: a discului codificator (figura 2-25 în comparație cu dimensiunea unui telefon mobil), precum și foto-cuplu (figura 2-26).
Figura 2-25 Discul codificator
Figura 2-26 Foto-cuplu
Foto-cuplul emite o rază de lumină infraroșu (IR) pe discul de codificare și detectează orice reflectat IR. Discul codificator este o bucată de hârtie groasă, cu o porțiune de culoare neagră, care reflectă lumina infra-roșie. Discul este lipit pe arborele de ieșire al motorului astfel încât rezultă rotația liberă a motorului. Foto-cuplul este poziționat așa cum se arată în figura 2-27 astfel încât fascicul este direcționat pe disc codificator.
Atunci când motorul se întoarce, discul codificator se întoarce cu el și în timp ce foto-cuplul directioneaza lumina IR pe codificator, acesta va genera o serie de impulsuri înalte și joase (1 și 0), în funcție de care parte a discului se confruntă foto-cuplul.
Figura 2-27 Poziția foto-cuplului
De reținut că această configurație de codificator pe arbore este una dintre multe altele. Există o mulțime de moduri de a construi și de a asambla codificatoare pe arbore. Deși această configurație (figura 2-28) nu este cea mai eficientă, ea pare a fi cea mai potrivită pentru acest sistem, din cauza lipsei de spațiu și incapacitatea de a face modificări importante.
Figura 2-28 Configurația sistemului
Unități de măsură inerțială
Vehiculele autonome și roboții mobili sunt dotați cu mai multe tipuri de senzori pentru a fi posibilă determinarea poziției, orientării și distanței până la obstacole, aceste informații fiind vitale pentru funcționarea autonomă. Cele mai importante tipuri de senzori sunt: encoderele, senzorii inerțiali (IMU – Inertial Measurement Unit – Unități de măsură inerțială), sonarele și laserele.
Unitățile de măsură inerțială (IMU) sunt compuse din accelerometre 3D și giroscoape 3D și uneori senzori magnetici 3D. Acești senzori pot detecta mișcarea chiar și în cazurile în care encoderele nu pot furniza corect datele. IMU-urile sunt folosite pentru a calcula viteza, poziția și atitudinea vehiculelor, navelor și avioanelor. Pentru a se obține viteza semnalul de la accelerometru este integrat, iar pentru a afla poziția accelerația este dublu integrată. Prin integrarea datelor de la giroscop se obține unghiul de ruliu, unghiul de tangaj și orientarea. Semnalele primite de la IMU conțin erori care sunt integrate pentru a se obține datele dorite. Din acest motiv IMU reprezintă un senzor bun pentru perioade de timp scurte, dar acumulează erori din ce în ce mai mari dacă timpul de funcționare este mai lung. Aceste erori trebuie identificate și corectate pentru a obține date corecte. Corectarea datelor de la IMU se realizează utilizând filtrul Kalman.
Erorile înregistrate în funcționarea IMU
Un IMU oferă date precise despre atitudine și poziție pentru vehicule doar în cazul perioadelor scurte de timp, în cazul intervalelor de timp lungi integrarea micilor erori ale IMU conduc la erori mari. Soluția pentru o funcționare corectă este identificarea și eliminarea erorilor care afectează senzorul.
Filtrul Kalman
Filtrul Kalman a fost dezvoltat în 1960. Este o tehnică de estimare recursivă bazată pe spațiul stărilor, în domeniul timp. Estimatorul optimal este un algoritm care procesează măsurătorile pentru a obține eroare minimă estimată a stării sistemului, folosind cunoștințe despre sistem și dinamica măsurătorilor, presupuse statistice și zgomotul sistemului, erorile de măsurare și condițiile inițiale . Filtrul Kalman a devenit tehnica principală de combinare în sistemele multisenzor.
Implementarea practică a filtrului Kalman
Atitudinea vehiculului este estimată folosind accelerometre 3D, giroscoape 3D și compasuri magnetice 3D conținute în pachetul Xsens Mti. Datele de la senzori sunt filtrate folosind filtrul Kalman.
Folosim filtrul Kalman indirect pentru a minimiza starea eroare. Primul pas este prezicerea stării nominale a quaternionului integrând valorile primite de la giroscoape.
Roboții mobili și vehiculele autonome au nevoie de senzori, cum ar fi sonarele, laserele, encoderele sau IMU, prentru a opera în regim autonom. Sonarele și laserele sunt folosite pentru a determina distanța dintre vehicul și obstacole, iar encoderele și IMU sunt folosite pentru calculul odometriei platformei. Există situații în care encoderele oferă informații eronate despre odometria vehiculului și se pot obține informații corecte utilizând IMU. Integrarea semnalelor de la IMU oferă informații despre odometrie corecte doar în cazul intervalelor scurte de timp. În cazul intervalelor mari, micile erori ale semnalelor se acumulează datorită integrărilor și rezultă erori semnificative. Aceste erori sunt caracterizate utilizând variația Allan.
Pentru corectarea erorilor este necesară fuziunea datelor de la mai mulți senzori. Filtrul Kalman elimina erorile care afectează atitudinea platformei. Filtrul este aplicat stării eroare pentru a minimiza eroarea, apoi eroarea estimată este aplicată stării nominale a sistemului pentru a obține valorile reale ale atitudinii.
Integrarea sistemelor inerțiale pentru navigarea si localizarea sistemelor roboților autonomi
Localizare și poziționare
Localizarea sistemului unui robot autonom se referă la stabilirea exactă a coordonatelor unde sistemul este prezentă la un moment de timp. Problema localizării pentru sistemele acestor roboți pot fi împărțite în două sub-sarcini: localizare la nivel mondial și local. În multe aplicații, orientarea și o estimare inițială a poziției robotului sunt cunoscute, fiind furnizate direct sau indirect de către utilizator sau supraveghetor. În timpul executării sarcinilor, robotul trebuie să actualizeze această estimare folosind măsurările trimise de senzori. Acest lucru este cunoscut sub numele de localizare locală . Folosind doar senzori care măsoară mișcările relative, eroarea în estimarea inițiala crește în timp, se acumulează erori. Prin urmare, sunt necesari senzori externi pentru a furniza informații cu privire la dispoziția absolută a robotului.
Clasificarea sistemelor inerțiale
Sisteme inerțiale pot fi clasificate în trei tipuri diferite. Această clasificare ar putea cauza anumite confuzii. Cel mai puțin complex tip de sistem, cel care furnizează date brute, cum ar fi accelerația și viteza unghiulară de la senzori inerțiali, este ansamblul senzorului inerțial (ISA – Inertial Sensor Assembly – Ansamblul Senzorilor Inerțiali). ISA este format din accelerometre si giroscoape care oferă informații necompensate. De obicei, ISA ar putea conține un senzor de temperatură, folosit la un nivel superior de IMU pentru compensarea erorilor.
Unitatea de măsură inerțială primește datele brute de la ISA și gestionează post-procesarea datelor erorilor.
Pentru a putea determina poziția, viteza și atitudinea, accelerarea și rotația unghiulară sunt procesate folosind diferiți algoritmi de navigare. Întregul proces este numit sisteme inerțiale de navigație (INS – Inertial Navigation Sysem – Sistem de Navigație Inerțial).
Interdependența dintre INS, IMU și ISA pot fi observate în schema prezentată în figura 2-29.
Figura 2-29 Diferența între ISA, IMU și INS
Integrarea datelor pentru localizarea robotului
Pentru a crește acuratețea poziționării robotului, un filtru Kalman este utilizat la integrarea datelor primite de la sistemul DGPS (Differential Global Positioning System) cu datele din sistemul de navigație inerțială (INS) și din traductoarele robotului. Această integrare va permite menținerea și poziționarea robotului, chiar dacă sateliții nu sunt vizibili sau datele primite de la sateliți este corupte.
Filtrul Kalman este o procedură extrem de eficientă și versatilă pentru combinarea rezultatelor senzorilor zgomotoși, și pentru a estima starea unui sistem cu incertă dinamica. În cazul GPS, INS, și integrarea roților traductoare, rezultatul senzorilor zgomotoși include receptoarele GPS, componente INS și Wheel Encoder.
Starea sistemului include poziția, viteza, accelerația, atitudinea, și rata de atitudine a unui vehiculului. Dinamica incertă include diferite tulburări imprevizibile generate fie de robotul autonom gazdă, sau de modificările imprevizibile care pot să apară pe plan intern, în parametrii senzorilor sau structură (de exemplu, dependența temperaturii senzorilor). Poziția, viteza, și erorile atitudinii, precum și erorile în măsurările inerțiale și GPS sunt optim estimate de filtre Kalman.
Datele rezultate de la receptoarele GPS (de obicei la 1 Hz) sunt relativ scăzute și s-ar putea să nu îndeplinească cerințele necesare pentru poziționarea roboților autonomi, în cazul în care, se solicită exactitatea cu mai puțin de 5 centimetri de precizie. Problema este mult mai gravă și diferite alte opțiuni ar trebui să fie luate în considerare în situații cum ar fi: un potențial de pierdere temporară a semnalului GPS, apariție unei alunecări din cauza terenului nesigur, sau un bruiaj electromagnetic controlat care ar putea afecta functionalitatea senzorilor interni de robot.
Folosind informațiile de ieșire INS, robotul autonom poate calcula dinamica mișcării între diferite perioade GPS, la o rezolutie temporară mare și să completeze, de asemenea, natura discretă a GPS și roților codificatoare atunci când un ciclu alunecă sau se produce o pierdere de semnal. În plus, poziționarea cu INS implică integrarea în raport cu timpul a accelerațiilor și ratele unghiulare, zgomotul măsurat se acumulează și ca rezultat erori lungi de lungimi de undă. Vizavi de INS, erorile GPS nu se acumulează, dar pe termen scurt măsurările înregistrate sunt caracterizate printr-o rezoluție mai slabă.
Echipamentul optoelectronic VICON MX
Măsurarea și analiza 3D a mișcării umane se realizează prin detectarea traiectoriei unor puncte de referință reprezentate prin markeri retroreflexivi prin care se realizează identificarea poziției spațiale a segmentelor corporale de interes.
Echipamentul optoelectronic VICON MX este un sistem alcătuit din mai multe camere specializate, cu stroboscop înglobat. Stroboscopul camerelor emite o radiație în zona infraroșului apropiat, iar senzorul foto al camerelor recepționează semnalele reflectate de markeri, informațiile 2D, primite de la camere, fiind apoi transmise unui calculator central care digitizează în timp real datele primite și realizează reconstrucția tridimensională a poziției acestora.
Elementele componente ale sistemului prezentate în figura 2-30 sunt:
7 camere MX3+ prezentate în figura 2-31 care înregistrează cu o rezoluție de 659x493pixeli, în tonuri de gri, cu maxim 240cadre pe secundă. Camerele sunt dotate cu mai multe procesoare de mare viteză, care efectuează o prelucrare a imaginii capturate în timp real. Dacă se micșorează rezoluția capturii, camerele pot capta maxim 1000 de cadre pe secundă;
Figura 2-30 Sistemul optoelectronic VICON MX
Camera video MX3 + poate oferi număr mai mare de pixeli într-un buget fix, oferind o acoperire sporită.
unitate Ultranet MX de comunicare în rețea, prin cablu ethernet Gigabit, între camere și stația de lucru.
Figura 2-31 Camera video MX3+
Etapele parcurse pentru realizarea măsurătorilor:
inițializarea sistemelor de achiziție video și stabilirea axelor sistemului de coordonate a VICON MX cu ajutorul baghetei T din figura 2-32 de mai jos. Pe robot s-au montat trei markere, în eventualitatea insuficienței unuia singur, pentru a obține date atât despre poziția robotului, cât și despre orientarea sa;
Figura 2-32 Baghetă în formă de T cu markere
crearea unei noi sesiuni de achiziții cu aplicația Nexus. Poziția baghetei T folosită pentru calibrare așa cum se poate observa și în figura 2-33;
Figura 2-33 Vedere parțială a spațiului de vizionare al VICON MX (culorile au fost negativate pentru imprimare)
captura mișcărilor robotului, etichetarea markerelor folosite pentru a detecta poziția și orientarea robotului în spațiu, conform figurii 2-34;
Figura 2-34 Vedere parțială a spațiului de vizionare al VICON MX (culorile au fost negativate pentru imprimare)
examinarea capturii pentru observarea părților de traiectorie lipsă sau filtrarea markerelor fantomă, ce apar datorită reflexiei nedorite a imaginilor markerelor;
exportarea în format *.CSV al coordonatelor markerelor atașați robotului;
prelucrarea datelor și realizarea graficelor în Microsoft Excel.
MPU-9150
MPU-9150 este primul dispozitiv din lume cu 9 axe MotionTracking (de urmărire a mișcării) proiectat pentru putere redusă, costuri reduse, precum și cerințele de înaltă performanță ale echipamentelor electronice de larg consum, inclusiv smartphone-uri, tablete și senzori ușor de purtat.
Senzorul InvenSense MPU-9150 conține un accelerometru MEMS (MicroElectroMechanical Systems), un giroscop MEMS și un magnetometru MEMS (busolă) într-un singur cip.
MPU-9150 este format din două cipuri combinate într-un singur cip. Este un MPU-6050 pentru accelerometru și giroscop, combinat cu un magnetometru.
MPU-9150 reprezintă o unitate de măsurare inerțială cu nouă grade de libertate (9DOF) într-un singur pachet. Acesta este format din accelerometru 3 axe, giroscop 3 axe, magnetometru 3 axe și un motor de accelerare hardware Digital Motion Procesor (DMP). Gama fiecărui senzor este configurabilă: scala accelerometrului poate fi setată la ± 2 g, ± 4g, ± 6g, ± 8g sau ± 16g, giroscopul suportă ± 250, ± 500, și ± 2000 °/s, iar magnetometrul are gama la scară largă de ± 1200μT (± 12 gauss).
MPU-9150 acceptă I2C (Protocolul circuitului inter-integrat care permite mai multor circuite integrate digitale de tip “sclav” ("cipuri") pentru a comunica cu unul sau mai multe cipuri de tip „master”.
Placa Arduino Leonardo
Arduino Leonardo prezentată în figura 2-35 este cea mai nouă platformă de procesare de la Arduino. Este bazată pe microcontroller-ul ATMega32U4. Are 20 pini digitali de input/output (dintre care 7 suportă PWM, iar 12 dintre ei pot fi utilizați și ca pini de intrare analogică), funcționează la 16 MHz, și dispune de o conexiune cu calculatorul printr-o mufă micro USB. Produsul conține tot necesarul pentru a putea fi utilizat în orice condiții. El trebuie conectat la PC sau la o sursă de alimentare externă (7 V – 12 V).
Schimbarea majoră față de Arduino Uno este faptul că microcontroller-ul ATMega32U4 permite comunicare USB directă, fără a fi necesar altceva. Printre altele, acest lucru permite plăcii să se comporte ca tastatură sau ca mouse.
Figura 2-35 Placa Arduino Leonardo R3
DEFINIREA PROBLEMEI – OBIECTIV AL CERCETĂRII SAU PREZENTAREA REALIZĂRII (SOLUȚIEI) PROPRII
Localizarea exactă a roboților mobili în medii nesigure este o problemă fundamentală și esențială în robotică. O problemă fundamentală pentru un robot mobil autonom o reprezintă cunoașterea poziției și orientarea actuală prin observarea senzorială și localizarea exactă anterioară, aceasta fiind un subiect de cercetare foarte întâlnit în domeniul roboților mobili. .
Pentru localizarea robotului în aer liber se poate folosi sistemul de localizare globală (GPS – acronim pentru Global Positioning System), dar utilizarea într-un mediu închis devine dificilă. Mai mult decât atât, pentru că o mare parte dintre roboți sunt proiectați pentru a fi utilizați în interior, aceasta reprezintă o limitare severă privind aplicarea de roboți mobili.
Unul dintre cele mai importante motive pentru popularitatea roboților mobili în producerea industrială este capacitatea lor de a muta și opera liber. Pentru ca roboții să îndeplinească obiectivele din fabricație, poziția și orientarea acestora trebuie să fie determinată cu precizie. În plus, există o tendință puternică de a acorda o mai mare autonomie roboților atunci când operează în medii periculoase sau necunoscute, care necesită, de asemenea, determinarea poziției corecte.
Există numeroase metode de localizare, cum ar fi „dead reckoning (DR)” cu codificatoare (encoders) care numără rotațiile axelor roților. Un codificator este un simplu senzor montat pe majoritatea roboților mobili cu roți. Din raza roții se poate evalua distanța parcursă, folosind același principiu precum kilometrajul automobilelor. În orice caz, din cauza inerentelor alunecări și derapaje, podea neuniformă și incertitudinea cu privire la structura robotului, rezultatele unui asemenea senzor sunt doar orientative. Din moment ce incertitudinea metodei „dead reckoning” trebuie compensată prin localizare precisă, combinând această tehnică cu senzori externi și odometrie reiese o opțiune atractivă cu rezultate promițătoare.
Pentru asistarea metodei „dead reckoning” sunt utilizate în mod obișnuit repere pentru o localizare precisă. Reperele sunt deja cunoscute și pot fi folosite de roboții mobili pentru a șterge erorile acumulate de odometrie.
În navigația roboților, odometria folosește datele primite de la mișcarea actuatorilor pentru a estima schimbarea poziției în timpul mersului prin intermediul dispozitivelor, cum ar fi encoderele. Această metodă se aplică doar în cazul roboților pe roți sau șenile, nu și în cazul roboților cu picioare.
Cu toate că odometria este prima și cea mai fundamentală abordare pentru determinarea poziției, din cauza unor erori inerente, aceasta nu este o metodă corectă. Ca o soluție la această problemă, de obicei erorile sunt modelate folosind două metode diferite de referință și mai mulți senzori.
Posibilități localizare robot
Metoda odometriei
Reprezintă metoda cea mai simplă în cazul de față pentru robotul din figura 3-12.
Se dorește obținerea unei traiectorii rectangulară (figura 3-2).
Experiment laturi
Robotul mobil DD-1 este dotat cu senzori pentru a determina poziția, orientarea și distanța până la obstacole, informații vitale pentru funcționarea autonomă.
IMU-urile robotului sunt compuse din: 3 accelerometre și 3 giroscoape folosite împreună pentru a calcula viteza, poziția și atitudinea robotului.
Prin integrarea semnalului primit de la accelerometre obținem viteza, iar prin integrarea de două ori a accelerației obținem viteza.
Prin integrarea datelor de la giroscop obținem unghiul de ruliu, unghiul de tangaj și orientarea.
IMU dă rezultate bune dacă timpul de funționare este scurt, dar din cauza integrărilor succesive, apar reziduuri pentru perioade mai lungi de timp. Aceste erori trebuie identificate și corectate pentru a obține date corecte, iar acest lucru poate fi realizat cu ajutorul filtrului Kalman.
IMU este localizat în partea centrală a robotului pentru a crește acuratețea de detecție și prelucrare a semnalului, adică să ne ofere date facil de implementat.
În figura 3-1 de mai jos este prezentat cipul pe care sunt implementate 3 acceleromentre, 3 giroscoape și datele magnetometrice.
Figura 3-1 Cipul MPU-9150 pentru Arduino
De menționat faptul că cipul este prins în șuruburi din plastic deoarece alte materiale ferometalice ar influența funcționarea senzorilor.
Robotul este supus parcurgerii unui traseu conform figurii 3-2. Considerăm o suprafață dreptunghiulară de lungime 1m și lățime 0,5m. Unghiul făcut de laturile perpendiculare este bineînțeles egal cu 90o.
Robotul trebuie să parcurgă traseul A-B-C-D. Îl programăm să plece din punctul A spre punctul B în linie dreaptă. Acest lucru este ușor de implementat după ce stabilim numărul de rotații și impulusurile pe care trebuie să le îndeplinească.
Puțin mai dificil devine în momentul rotirii cu 90o. În acest caz pot exista 2 soluții:
ambele șenile să se rotească în aceeași direcție, dar una dintre ele trebuie să aibă o viteză mai mare decât cealaltă;
o șenilă să se rotească în sens invers celeilalte.
După numeroase încercări, am preferat cea de-a doua variantă, calculele fiind mai precise deoarece păstrăm un punct central fix. Adică, oblig robotul să se rotească în jurul aceluiași punct, lucru reprezentat în figura 3-3.
Considerăm:
(3-1)
(3-2)
Figura 3-2 Traseul planificat pentru parcurgerea robotului
În cazul schimbării directiei, robotul parcurge o distanță care trebuie calculată.
Figura 3-3 Reprezentarea direcției celor 2 șenile ale robotului
Vom începe calculul cu lungimea arcului de cerc, luând în considerare unghiul de 90o:
(3-3)
Unde reprezintă distanța dintre șenile exprimată în milimetri.
(3-4)
Înlocuim în ecuația 3-24 valoarea cunoscută din ecuația 3-25:
(3-5)
Pentru o rotire cu 90o, numărul de rotații la arborele de ieșire vor fi:
(3-6)
Cunoaștem și notăm raportul de transmisie total al motorului:
(3-7)
Calculăm numărul de rotații al arborelui motorului cu ajutorul ecuațiilor 3-27 și 3-28:
(3-8)
Calculul traiectoriei liniare de 1000mm
Cunoscând numărul de rotații ale motorului și numărul de pulsuri pe rotație ca fiind , rezultă numărul de pulsuri la 198,5 rotații.
(3-9)
În continuare, vom efectua calculul pe distanta de 1000mm.
Din ecuația 3-2, putem calcula numărul de rotații la ieșire:
(3-10)
Calculăm numărul de rotații al arborelui motorului cu ajutorul ecuațiilor 3-27 și 3-28:
(3-11)
Cunoscând numărul de rotații ale motorului și numărul de pulsuri pe rotație ca fiind , rezultă numărul de pulsuri la 198,5 rotații.
(3-12)
De asemenea, vom efectua calculul pe distanta de 500mm
Conform calculelor precedente, va fi:
(3-13)
Cunoaștem din ecuația 3-12. De aici înlocuim în ecuația 3-13 și rezultă.:
(3-14)
Metoda Dead Reckoning
Se utilizează metoda odometriei de realizare a unei traiectorii rectangulară, însă pentru a corecta orientarea în spațiu a robotului se folosesc unitățile de măsură inerțiale (IMU).
Se urmărește obținerea unei apropieri mult mai mare a traiectoriei robotului față de cea ideală. De obicei, la metoda odometrică apar probleme la schimburile de direcție.
Sistemul, detectând orientarea în spațiu față de un sistem absolut sau relativ, va putea realiza o poziție mai apropiată de cea dorită.
Echipamentul optoelectronic VICON MX
Metodele prezentate anterior, din păcate, nu pot face și orientare și poziționare în spațiu.
Cu metoda odometrică, dacă știm poziția și orientarea inițială, se poate calcula poziția în care a ajuns robotul și respectiv orientarea sa.
În cazul DR, dacă se cunosc poziția și orientarea inițială, se pot deduce orientarea și poziția. Dar poziția este calculată, iar orientarea este măsurată și livrată în timp real.
Avantajul folosirii unui sistem Vicon este faptul că poate furniza poziția și orientarea robotului mobil în spațiu ca fiind un instrument extraordinar pentru observarea traiectoriei unui robot mobil.
Experimente cu această soluție s-au realizat, procesarea informației nefiind realizată în timp real.
Robotul experimental
Firma: TCHANG
Model: DD1-1
Spre deosebire de cele mai multe roboților cu șenile care se bazează pe frecare pentru acționa șenila, acest tip de robot este echipat cu șenilă profilată pe interior, iar acțioanrea se face de la motor cu o roata dințată.
Datorită dimensiunilor și amplasării lagărelor bine proiectate, acest nou robot cu șenile asigură mișcări continue.
Caracteristici:
L9110 – cipul de comandă control al motorului – conectat și inclus;
tensiune de operare: 3V – 12V;
senzor de viteză cu opto cuplor inclus;
kit șasiu, curea, motoare incluse;
Arduino compatibil;
tensiune de operare a motorului: 3V – 8V;
cuplu maxim al motorului: 1,5kg.cm la 7,2V;
viteza motorului fără sarcină: 250rpm / m la 7,2V;
curent de sarcină al motorului: 250mA la 7,2V;
SPEED & GND: conectarea la masa a LM393 și senzorului de viteză;
comenzi driver IA+IB pentru L9110: alimentarea LM393 și senzorului de viteză;
intrarea L9110 pentru comanda motorului;
M.P-: GND alimentarea cu energie a L9110 și motorului;
M.P-: VCC alimentarea cu energie a L9110 și motorului.
În figurile 3-4÷6 sunt inserate imagini ale etapelor de construcție a robotului realizate cu ajutorului programului SolidWorks.
Figura 3-4 Robotul realizat în mediul de proiectare SolidWorks (vedere interioară)
Figura 3-5 Robotul realizat în mediul de proiectare SolidWorks (vedere exterioară)
Figura 3-6 Robotul realizat în mediul de proiectare SolidWorks
În figura 3-7 este prezentată versiunea pe care s-au facut testele, realizată în același program de lucru SolidWorks, platforma superioară fiind cea care conținea IMU, respectiv markerii necesari detecției optoelectronilor Vicon.
Figura 3-7 Robotul realizat în mediul de proiectare SolidWorks
În figura 3-8 sunt exemplificate echipamentele constructive ale robotului mobil cu șenile.
Figura 3-8 Imagini reale ale componentelor robotului
În figurile 3-9÷11 se regăsesc imagini reale ale compenentelor robotului de tip DD1-1 care vor reprezenta partea practică.
Figura 3-9 Fotografii ale robotului DD1-1 (vedere interioară)
Figura 3-10 Fotografii ale robotului DD1-1 (vedere exterioară)
Figura 3-11 Componentele robotului DD1-1
Figura 3-12 reprezintă construcția finalizată a robotului mobil cu șenile DD-1.
Figura 3-12 Construcția robotului DD-1
MODELAREA MATEMATICĂ A PRINCIPALELOR SUBANSAMBLURI ȘI REZULTATELE SIMULĂRILOR
Pentru acționarea robotului s-au folosit două motoare de curent continuu de mici dimensiuni. Tensiunile electrice de alimentarea standard sunt cuprinse în intervalul 3V – 12V și curentul de 250 mA. Motoarele au inclus reductorul (figura 4-1) ceea ce presupune determinarea raportului de transmisie și encoder pentru determinarea turației si sensului de rotație. Astfel se poate determina simularea funcționării motorului la mers în gol și cu încărcătură.
Pentru realizarea simulării s-a ținut cont de următoarele date cu privire la specificațiile motorului:
tensiunea electrică de alimentare (4-1)
curentul electric consumat în regim blocat (4-2)
inducția înfășurării rotorice (4-3)
turația la ieșirea din reductor (4-4)
rezistența înfășurării rotorice (4-5)
fluxului magnetic prin bobină (4-6)
viteza unghiulară la ieșirea din reductor (4-7)
Figura 4-1 Motor cu reductor
În sistemul de mai jos este prezentat numărul de dinți al roților dințate, fiind ordonate de la motor la ieșirea din reductor.
(4-8)
Pentru determinarea raportului de transmitere total este nevoie de calcul raportului de transmisie între fiecare roată dințată consecutivă, iar cu ajutorul valorilor din ecuația 4-8, deducem:
(4-9)
(4-10)
(4-11)
(4-12)
Raportul de transmisie total va fi:
(4-13)
În ecuația 4-13 înlocuim valorile rapoartelor obținute în ecuațiile 4-6÷9:
(4-14)
Viteza unghiulară a arborelui motor se calculează cu formula de mai jos:
(4-15)
Introducem valorile cunoscute în ecuațiile 4-7 și 4-14 în ecuația 4-15:
(4-16)
Este necesară calcularea tensiunii electromotoare induse, pentru calcularea constantei tensiunii electromotoare induse, conform ecuației:
(4-17)
Cunoscând valorile ecuațiilor 4-1, 4-2, 4-5, rezultă din ecuația 4-17:
(4-18)
În continuare, sunt calculate constanta cuplului electromagnetic, respectiv constanta tensiunii electromotoare induse în ecuațiile de mai jos:
(4-19)
În ecuația 4-19 înlocuim ecuațiile 4-6, 4-16 și 4-18 pentru a deduce numeric constanta cuplului electromagnetic:
(4-20)
Din ecuația 4-20 rezultă:
(4-21)
Pentru a determina momentul de inerție redus al motorului cu reductor sunt necesare momentele de inerție și numărul de dinți ale fiecărei roți dințate. Se aproximează momentele de inerție ale roților dințate la valoare de 0,5 g x cm2.
Momentul de inerție al rotorului a fost determinat în programul Matlab și verificat în programul SolidWorks (figura 4-2), dimensiunile fiind prezentate în figura 4-3.
Figura 4-2 Rotorul realizat în programul de lucru SolidWorks
Figura 4-3 Dimensiunile rotorului exprimate în cm
În continuare sunt inserate datele obținute în programul Matlab:
Rezultatele obținute în urma apelării programului de mai sus:
(4-22)
(4-23)
(4-24)
Verificarea datelor experimentale de mai sus cu ajutorul programul SolidWorks este reprezentată în figura 4-4.
Figura 4-4 Datele experimentale în programul SolidWorks
După determinarea momentului de inerție redus al motorului, constanta cuplului electromagnetic și constanta tensiunii electromotoare induse, se poate realiza simularea motorului la mers în gol.
Schema cinematică a motorului fără încărcătură este reprezentata în figura 4-5.
Figura 4-5 schema cinematică a motorului fără încărcătură
În continuare se realizează schema echivalentă a motorului de curent continuu în impedanțe (figura 4-6):
Figura 4-6 Schema echivalentă a motorului de curent continuu
Pentru motor ecuațiile sunt standard:
Tensiunea circuitului este dată de relația:
(4-25)
Cuplul electromagnetic:
(4-26)
Viteza unghiulară a motorului:
(4-27)
În figura 4-7 este reprezentată schema de simulare realizată în programul de simulare Simulink.
Figura 4-7 Schema de simulare realizată cu ajutorul mediului de lucru Simulink
În urma simulării se obțin graficele reprezentate în figurile de mai jos.
În figura 4-8 am realizat graficul vitezei unghiulară în funcție de timp. Se observă că viteza crește progresiv în aproximativ 0,5 secunde, iar după acest timp devine constantă.
Figura 4-8 Graficul vitezei unghiulară în fucție de timp
Figura 4-9 Graficul curentului în fucție de timp
Graficul din figura 4-9 se arată cum curentul scade în raport cu timpul, iar apoi rămâne constant.
Pentru determinarea momentului de inerție al pinionului trebuie să ținem cont de diametrul pinionului și de grosimea pinionului .
Se introduc informațiile în programul de lucru Matlab:
Rezultatele obținute în urma apelării programului de mai sus:
(4-28)
(4-29)
(4-30)
Verificarea datelor experimentale de mai sus cu ajutorul programul SolidWorks este reprezentată în figura 4-10.
Figura 4-10 Datele experimentale în programul SolidWorks
Se calculează momentele de inerție intermediare:
(4-31)
Pentru calcularea momentului de inerție total am folosit programul Matlab:
(4-32)
(4-33)
Iar rezultatele oferite de program sunt următoarele:
După rularea programului de mai sus s-a obținut următorul rezultat:
(4-34)
Adică din ecuația 4-34 convertim:
(4-35)
În figura 4-11 este configurată schema de principiu a motorului cu reductor la încărcătură maximă.
În figura 4-12 este prezentată schema echivalentă a motorului cu reductor la încărcătură maximă.
Figura 4-11 Schema echivalentă a motorului cu reductor
Figura 4-12 Schema de principiu a motorului cu reductor la încărcătură maximă
În continuare vom deduce ecuațiile aferente circutului:
Tensiunea circuitului:
(4-36)
Cuplul electromagnetic:
(4-37)
Dar dacă sensul de parcurgere este același, rezultă:
(4-38)
Viteza unghiulară:
(4-39)
Viteza:
(4-40)
Forța:
(4-41)
(4-42)
Iar viteza este:
(4-43)
Schema de simulare a motorului cu reductor reprezentată cu ajutorul programului Simulink este dată în figura 4-13.
Figura 4-13 Schema de simulare a motorului cu reductor
Pentru simularea motorului cu reductor am folosit următoarele impedanțe:
(4-44)
ZM = =
Rezultatele simulării se găsesc în graficele din figurile 4-14÷18.
Figura 4-14 Graficul vitezei unghiulare în funcție de timp
Figura 4-15 Graficul curentului în funcție de timp
Figura 4-16 Graficul vitezei în funcție de timp
Figura 4-17 Graficul accelerației în funcție de timp
Figura 4-18 Graficul distanței în funcție de timp
După ce s-a calculat coeficientul de elasticitate al curelei, s-a implementat șenila în structura robotului și s-a realizat simularea întreg ansamblului.
Ecuațiile rezultate sunt următoarele:
Pentru reglarea turației s-a implementat în schema de simulare traductorul PID (Proportional, Integral, Derivative)
EXPERIMENTĂRI
Realizarea conexiunii dintre MPU-9150 si placa Arduino Leonardo
Se folosește un cod bazat pe biblioteca RTIMULIB.
Măsurarea precisă a orientării joacă un rol critic într-o serie de domenii, inclusiv: industria aerospațială, robotică, navigare și mișcarea umană de analiză și interacțiunea mașinii. Deși o varietate de tehnologii permit măsurarea orientării, sisteme senzoriale inerțiale au avantajul de a fi complet autonome astfel încât entitatea de măsurare este nu este constrânsă în mișcare sau unui mediu sau locație specifică. Un IMU (Inertial Measurement Unit – Unitatea de măsură inerțială) este format din giroscoape și accelerometre care permit urmărirea mișcărilor de rotație și de translație. Pentru a măsura în trei dimensiuni, sunt necesari senzori pe 3 axe care constau din 3 axe sensibile reciproc ortogonale.
Un senzor MARG (Magnetic, viteză unghiulară, și gravitate) este un hibrid IMU care încorporează un magnetometru pe 3 axe. Un sigur IMU poate măsura doar o atitudine în raport cu direcția de greutate, care este suficientă pentru multe aplicații. Sistemele MARG, cunoscute și sub numele de AHRS (atitudine și sisteme de referință pentru poziție) sunt în măsură să ofere o măsurare completă a orientării în raport cu direcția de greutate și câmpul magnetic al Pământului.
Giroscopul măsoară viteza unghiulară care, în cazul în care sunt cunoscute condițiile inițiale, pot fi integrate în timp pentru a calcula orientarea senzorului. Giroscoapele de precizie, cu laser inel, de exemplu, sunt prea scumpe și voluminoase pentru cele mai multe aplicații, iar dispozitivele MEMS (Micro Electrical Mechanical System – Micro Sisteme mecanice electrice) puțin precise sunt utilizate în majoritatea aplicațiilor. Integrarea erorilor de măsurare ale giroscopului va conduce la o eroare de acumulare în orientarea calculată. De aceea, giroscoape nu pot oferi o măsurare absolută de orientare. Un accelerometru și magnetometru vor măsura câmpurile gravitaționale și magnetice ale Pământului, și prevăd astfel o referință absolută de orientare. Cu toate acestea, ele posibil vor fi supuse unor niveluri ridicate de zgomot; de exemplu, accelerările din mișcare vor disturba direcția măsurată a gravitației.
Sarcina unui filtru de orientare este de a calcula o singură estimare a orientării prin fuziunea optimă a măsurătorilor giroscop, accelerometru si magnetometrice. Filtrul Kalman, a devenit baza acceptată pentru majoritatea algoritmilor de orientare de filtrare și a senzorilor comerciali de orientare inerțială; Xsens, Micro-Strain, VectorNav, Intersense, PNI și Crossbow produc sisteme bazate pe utilizarea filtrului Kalman. Utilizarea pe scară largă a soluțiilor bazate pe Kalman sunt o dovadă a preciziei și a eficienței acestora, dar, cu toate acestea, ele au o serie de dezavantaje. Ele nu pot fi implementate cu ușurință, așa cum se reflectată de numeroasele soluții observate în literatura de specialitate.
Instalarea și configurarea Arduino
Această parte este destul de simplă. Se merge la pagina Arduino Noțiuni de bază pentru familiarizarea cu Arduino. Adică, se descarcă programul IDE, se scrie codul în programul menționat, se încarcă Arduino și apoi se utilizează Serial Monitor programului pentru a se asigura că funcționează corect. Dar, din moment ce nu putem face mai mult decât o clipire mică a luminii LED-ului, trebuie să includem Bibliotecile care arată cum Arduino cominică cu alte dispozitive, cum ar fi MPU.
Este foarte dificil să se găsească o bună bibliotecă pentru MPU care să ne ofere informațiile de care avem nevoie. Toate informațiile trebuie să fie conținute în Arduino și nu vor fi cuplate la laptop. Motivul îl reprezintă o problemă deosebit de importantă astfel încât datele de calibrare trebuie să fie salvate chiar pe Arduino. Majoritatea bibliotecilor și calibratoare salvează la final pentru a filtra datele de ieșire înainte de a face ceva.
Din fericire, există o bibliotecă acolo și face exact acest lucru. Este RTIMULib-Arduino lui Richard Tech, în special pentru Arduino, disponibil la GitHub. Aceasta este o bibliotecă destul de simplă, care salvează datele de calibrare pentru EEPROM Arduino, sau este "read-only de memorie, dar inscriptibil." Dar pe pagina GitHub se observă că în litere mari aldine spune: "Vă rugăm să rețineți că această bibliotecă nu mai este acceptată." Nu este panică. Totul este în regulă. Și, doar în cazul în care se întâmplă ceva de acolo, se încarcă biblioteca de aici, care este exact copia „Se folosește”. Trebuie reținut, totuși, că ar trebui să se meargă întotdeauna la pagina GitHub pentru cel mai recent software și că nu există nici o garanție că va lucra cu actualizări.
Așa că se merge către pagina RTIMULib-Arduino GitHub și se dă clic pe butonul "Descărcare Zip" de pe partea dreapta. Se dezarhivează și copiază conținutul său în dosarul Arduino astfel încât se pare ca screenshot. În continuare, se deschide Arduino IDE, deschide "sketch" (care este termenul imaginat pentru program), intitulat "ArduinoMagCal.ino", care se află în dosarul ArduinoMagCal. Se asigură că Arduino este conectat la laptop și se face clic pe săgeata din dreapta la partea de sus pentru a încărca schița la Arduino.
Acum codul este încărcat pe Arduino – trebuie doar să se conecteze și MPU în sine pentru a funcționa.
Conectarea MPU-9150 cu Arduino
Se vor conecta terminalele: VCC, GND, SDA și SCL. În mod ideal, ar trebui să fie deja montate în cutie sau oriunde în altă parte pentru utilizare astfel încât să fie calibrate în exact același loc unde va fi utilizat. Ghidul de cablare poate fi urmărit în tabelul 5-1:
Tabel 5-1 Valori pentru conectarea cablului
Folosind capătul unui cablu de legătură, se conectează fiecare fir în respectivul PIN pe Arduino. Pasul următor trebuie urmărit cu atenție astfel încât să nu se lipească antetele PIN-ului. Se recomandă cu tărie să se rupe patru anteți astfel încât aceștia să rămână conectați între ei, și apoi să se lipească în cei patru pini de pe MPU. Apropierea dintre ei este în regulă deoarece denotă că o parte funcționează bine. Dar acum trebuie planificat mai departe – MPU este, de fapt, montat pe partea de dedesubt a capacului casetei. Orientarea MPU este imprimată pe bord astfel încât trebuie asigurat că este orientat astfel încât Mag X este indicat pe bord (mai trebuie reținut că acesta este diferit de orientarea giroscop și accelerometru). Oricum, acest lucru înseamnă că de fapt, a trebuit să se lipească pinii să iasă pe partea de jos a chip-ului (din moment ce va fi agățat în acest fel, atunci când capacul cutiei este închis).
Calibrarea MPU-9150
După încărcarea codului, MPU este conectat – deci, tot ce se așteaptă este inițierea. Pentru a face acest lucru, se deschide Serial Monitor în Arduino IDE (este sub Instrumente). Dacă nu se deschide, câteva indicii ar fi:
se verifică dacă rata de transfer este corectă. Schița ArduinoMagCal definește rata de transfer ca 115200, deci trebuie asigurat că acest lucru se potrivește cu ceea ce Serial Monitor caută folosind meniul drop-down din dreapta jos.
se închide Serial Monitor și deschide din nou în sus. Acest "reactivează" Arduino.
se deconectează Arduino, se așteaptă câteva secunde la putere complet scăzută, apoi se conectează din nou și se repetă.
Acum se obțin valorile minime și maxime pentru fiecare busolă. Pentru a-l calibra, pur și simplu se rotește MPU de-a lungul fiecărei axe, unul câte unul. Deci, se face pas înainte astfel încât se rotește înapoi 360 de grade. Apoi, se rotește de la stânga la dreapta tot prin intermediul unui alt 360 de grade. În cele din urmă, se rotesc prin fiecare poziție magnetică – toate 360 de grade. Tot timpul, vor fi logate valorile min / max pe care le folosim pentru corectare. După pacurgerea fiecarei axe, tip litera "s" în caseta de text din partea de sus, se face clic pe Trimitere, și se primește mesajul "Mag CAL datele salvate pentru dispozitiv MPU-9150." MPU-9150-ul este calibrat acum!
Combinarea MPU-9150 cu Arduino
Acum totul este gata pentru începerea utilizării MPU. S-a realizat o schița de probă pornind de la schița RTIMULib-Arduino, dar modificată astfel încât să se declare variabile pentru fiecare parametru.
Verificarea orientării absolute provenite de la semnalele fuzionate
Folosind programul Arduino IMU prezentat în Anexa 1, se observă o bună corelare între deplasarea unghiulară a robotului cu cea reală.
Prin acest experiment s-a dorit observarea reală a senzorului, dacă întradevar datele oferite de el sunt precise și corespund cu datele oferite de program.
În urma măsurătorilor, s-a putut observa că între 0o și 90o avem o deviație de 4o, față de 180o avem o deviație de 10o, iar față de 270o avem o deviație 3o.
Aceste rezultate sunt mulțumitoare, oferind o acuratețe mult mai bună comparativ cu o metodă pur odometrică.
În figurile 5-1, 5-3, 5-5, 5-7 sunt prezentate fotografii reale ale robotului orientat la 0o, 90o, 180o, 270o , cu ajutorul unei coli de hârtie A4 pe care am figurat un sistem de coordonate, iar în figurile 5-2, 5-4, 5-6 și 5-8 sunt capturate valorile programului.
Figura 5-1 Poziția robotului la 0o
Figura 5-2 Rezultatele programului la așezarea robotului orientat la 0o
Figura 5-3 Poziția robotului la 90o
Figura 5-4 Rezultatele programului la așezarea robotului orientat la 90o
Figura 5-5 Poziția robotului la 180o
Figura 5-6 Rezultatele programului la așezarea robotului orientat la 180o
Figura 5-7 Poziția robotului la 270o
Figura 5-8 Rezultatele programului la așezarea robotului orientat la 270o
Verificarea traiectoriei folosind sistemul optoelectronic VICON
Pentru început s-a facut o calibrare a sistemului cu ajutorul baghetei “T” pe care s-au montat 3 markeri pentru a obține date despre poziția și orientarea robotului (figura 5-9)
Figura 5-9 Bagheta “T”
Figura 5-10 reprezintă spațiul delimitat cu ajutorul markerelor pe care s-a efectuat experimentul. Markerele au fost poziționate astfel încât să fie vizibile de către cele 7 camere MX3+ (figura 5-11).
Figura 5-10 Suprafața delimitată de markere Figura 5-11 Cameră video MX3+
Folosind sistemul optoelectronic Vicon, s-a monitorizat realizarea unei traiectorii rectangulare făcute de robotul mobil cu șenile. Pe robot s-au instalat 3 markeri aranjați astfel încât să formeze un tringhi oarecare. Unghiurile triunghiului regăsindu-se în centrul cercurilor roșii din figura 5-12. Markerele au fost poziționate chiar în locul cercurilor roșii.
Figura 5-12 Robotul înainte și după aplicarea markerelor
Robotul a realizat 3 traiectorii succesive folosind principiile odometrice, scopul fiind observarea deviațiilor pe care acesta le poate avea.
Robotul a pornit din poziția arătată în captura din figura 5-13.
Figura 5-13 Punctul de plecare al robotului pentru prima traiectorie
În figura 5-14 se observă ca robotul a parcurs o primă traiectorie destul de precisă, el reîntorcâdu-se din punctul de unde a plecat.
Figura 5-14 Ultimul punct al robotului pentru prima traiectorie
Captura din figura 5-15 reprezină orientarea robotului dupa atingerea punctului 2 al primei traiectorii.
Figura 5-16 reprezintă captura aceluiași punct, dar pentru a doua traiectorie succesivă. Aici robotul a suferit o deviație semnificantă din cauza unei posibile denivelări pe sol.
Între cele două imagini este foarte vizibilă orientarea diferită.
Precum prima traiectorii, și cea de-a treia traictorie a avut un comportament normal, fără deviații majore sau semnificative.
Figura 5-15 Al doilea punct al robotului pentru prima traiectorie
Figura 5-16 Al doilea punct al robotului pentru a doua traiectorie
Figura 5-17 Traiectoriile parcurse de robot văzute de sus
În figura 5-17 sunt trasate cele 3 traiectorii parcurse de robot și exemplificate în capturile înregistrărilor video din figurile 5-13÷16.
Prima traiectorie a fost realizată corect, la cea de-a doua traiectorie au apărut frecări astefel încât s-a produs această deviație, iar cea de-a treia traiectorie a fost finalizată corect.
CONCLUZII
Metoda odometriei poate fi folosită în localizarea în spațiu a unui obiect dacă se cunosc poziția inițială, respectiv orientarea sa inițială. Metoda folosește anumite ipoteze simplificatoare, cum ar fi lipsa alunecărilor dintre șenile și sol, viteza de deplasare a șenilelor egală. Posibilitatea reală de localizare este, din păcate, nesatisfăcătoare.
Dacă se folosesc principiile Dead-Reckoning, atunci având posibilitatea cunoașterii în orice moment a orientării în spațiu a robotului, localizarea devine mai precisă, dar nu este întotdeauna suficient.
Pentru detecția poziției și orientării unui robot, momentan, cea mai indicată metodă este cea a folosirii unui sistem de balize externe.
În cazul de față, un sistem optoelectronic Vicon poate furniza date despre localizarea robotului, respectiv orientarea sa.
Dezavantajul acestei metode îl reprezintă costul acestuia și faptul că se pretează mai mult pentru spații interioare.
LISTĂ DE FIGURI ȘI TABELE
Figura 2-1 Robotul conceput de Institutul american în domeniul roboticii 8
Figura 2-2 Roboții japonezi 1
Figura 2-3 Robotul britanic 1
Figura 2-4 Robotul General Motors 1
Figura 2-5 Roboți concepuți de compania franceză Aldebaran 1
Figura 2-6 Robotul de agricultură conceput de români 1
Figura 2-7 Om-Robot 1
Figura 2-8 Auriga-β (Universitatea din Malaga, Spania) – Robot ce ajută la stingerea incendiilor 2
Figura 2-9 Bulldozer Komatsu D50 folosit în construcții și minerit 2
Figura 2-10 Excavator D6M 2
Figura 2-11 Fitorobot (Universiatea din Almeria, Spania) folosit în agricultură 3
Figura 2-12 Remotec ANDROS Wolverine(Remotec Inc., EEUU) folosit în domeniul minier și militar 3
Figura 2-13 Tractor Holt – a transportat artileria în timpul Primului Război Mondial 3
Figura 2-14 Vehiıcul Hagglunds Bv 206 – a transportat personalul militar (1974) 3
Figura 2-15 Platforma de investigații (Universitatea din Minnesota) 4
Figura 2-16 iRobot 110 FirstLook folosit în activități militare 4
Figura 2-17 Sistem de locomoție cu șenilă 4
Figura 2-18 Robot mobil pe șenile 5
Figura 2-19 Schema cinematică a RM cu șenile 6
Figura 2-20 Robot mobil cu acționare diferențială (vedere de sus) 10
Figura 2-21 Rotirea printr-un unghi nominal n nu reprezintă o eroare din cauza “diametrului inegal al roții”, ci o eroare din cauza “diametrului mediu actual al roții”, care afectează capacitatea de rotire (11) 12
Figura 2-22 Calea unui robot cu volan (14) 18
Figura 2-23 Determinarea unghiurilor (14) 19
Figura 2-24 Șasiul și toate componentele mecanice pe o mașină de jucărie RC cu două motoare 20
Figura 2-25 Discul codificator 21
Figura 2-26 Foto-cuplu 21
Figura 2-27 Poziția foto-cuplului 22
Figura 2-28 Configurația sistemului 22
Figura 2-29 Diferența între ISA, IMU și INS (19) 25
Figura 2-30 Sistemul optoelectronic VICON MX 27
Figura 2-31 Camera video MX3+ 27
Figura 2-32 Baghetă în formă de T cu markere 28
Figura 2-33 Vedere parțială a spațiului de vizionare al VICON MX (culorile au fost negativate pentru imprimare) 28
Figura 2-34 Vedere parțială a spațiului de vizionare al VICON MX (culorile au fost negativate pentru imprimare) 29
Figura 2-35 Placa Arduino Leonardo R3 30
Figura 3-1 Cipul MPU-9150 pentru Arduino 33
Figura 3-2 Traseul planificat pentru parcurgerea robotului 34
Figura 3-3 Reprezentarea direcției celor 2 șenile ale robotului 34
Figura 3-4 Robotul realizat în mediul de proiectare SolidWorks (vedere interioară) 37
Figura 3-5 Robotul realizat în mediul de proiectare SolidWorks (vedere exterioară) 37
Figura 3-6 Robotul realizat în mediul de proiectare SolidWorks 38
Figura 3-7 Robotul realizat în mediul de proiectare SolidWorks 38
Figura 3-8 Imagini reale ale componentelor robotului 39
Figura 3-9 Fotografii ale robotului DD1-1 (vedere interioară) 40
Figura 3-10 Fotografii ale robotului DD1-1 (vedere exterioară) 40
Figura 3-11 Componentele robotului DD1-1 40
Figura 3-12 Construcția robotului DD-1 41
Figura 4-1 Motor cu reductor 42
Figura 4-2 Rotorul realizat în programul de lucru SolidWorks 44
Figura 4-3 Dimensiunile rotorului exprimate în cm 44
Figura 4-4 Datele experimentale în programul SolidWorks 46
Figura 4-5 schema cinematică a motorului fără încărcătură 46
Figura 4-6 Schema echivalentă a motorului de curent continuu 47
Figura 4-7 Schema de simulare realizată cu ajutorul mediului de lucru Simulink 47
Figura 4-8 Graficul vitezei unghiulară în fucție de timp 48
Figura 4-9 Graficul curentului în fucție de timp 48
Figura 4-10 Datele experimentale în programul SolidWorks 50
Figura 4-11 Schema echivalentă a motorului cu reductor 51
Figura 4-12 Schema de principiu a motorului cu reductor la încărcătură maximă 52
Figura 4-13 Schema de simulare a motorului cu reductor 53
Figura 4-14 Graficul vitezei unghiulare în funcție de timp 54
Figura 4-15 Graficul curentului în funcție de timp 54
Figura 4-16 Graficul vitezei în funcție de timp 55
Figura 4-17 Graficul accelerației în funcție de timp 55
Figura 4-18 Graficul distanței în funcție de timp 56
Figura 5-1 Poziția robotului la 0o 62
Figura 5-2 Rezultatele programului la așezarea robotului orientat la 0o 62
Figura 5-3 Poziția robotului la 90o 63
Figura 5-4 Rezultatele programului la așezarea robotului orientat la 90o 63
Figura 5-5 Poziția robotului la 180o 64
Figura 5-6 Rezultatele programului la așezarea robotului orientat la 180o 64
Figura 5-7 Poziția robotului la 270o 65
Figura 5-8 Rezultatele programului la așezarea robotului orientat la 270o 65
Figura 5-9 Bagheta “T” 66
Figura 5-10 Suprafața delimitată de markere Figura 5-11 Cameră video MX3+ 66
Figura 5-12 Robotul înainte și după aplicarea markerelor 67
Figura 5-13 Punctul de plecare al robotului pentru prima traiectorie 67
Figura 5-14 Ultimul punct al robotului pentru prima traiectorie 68
Figura 5-15 Al doilea punct al robotului pentru prima traiectorie 69
Figura 5-16 Al doilea punct al robotului pentru a doua traiectorie 69
Figura 5-17 Traiectoriile parcurse de robot văzute de sus 70
Tabel 2-1 Clasificarea roboților industriali 1
Tabel 2-2 Clasificarea roboților industriali 1
Tabel 2-3 Regulile de calcul ale unghiului și coordonatele carteziene 20
Tabel 5-1 Valori pentru conectarea cablului 60
ANEXE
Anexa 1
// –––––––––––––––––––––––––
// Robot senile
// Deplasare pe traiectorie rectilinie (lungime 1000mm, latime 500mm)
// Controlul traiectoriei se bazeaza pe informatiile primite de la encoderele aflate pe motoarele ce actioneaza fiecare senila
// Programatori:
// S.l.dr.ing. Silviu PETRACHE
// As.dr.ing. Viorel GHEORGHE
// ing. Ghiulsen MARIN
// –––––––––––––––––––––––––
//#include <NewPing.h>
#define SONAR_NUM 1 // Number of sensors.
#define MAX_DISTANCE 700 // Maximum distance (in cm) to ping.
#define PING_INTERVAL 33 // Milliseconds between sensor pings (29ms is about the min to avoid cross-sensor echo).
#define DISTANCE_COUNTER_RIGHT 4816 //4816 // pulses for equivalent distance of the right motor
#define ROTATE_COUNTER_RIGHT 794 //794 // pulses for equivalent rotation generated of the right motor
unsigned long pingTimer[SONAR_NUM]; // Holds the times when the next ping should happen for each sensor.
unsigned int cm[SONAR_NUM]; // Where the ping distances are stored.
uint8_t currentSensor = 0; // Keeps track of which sensor is active.
const byte pinInterruptSt = 0; // Intrerupere de la motor Stanga
const byte pinInterruptDr = 1; // Intrerupere de la motor Dreapta
const byte pinMotStA = 5; // Motor Stanga
const byte pinMotStB = 6;
const byte pinMotDrA = 9; // Motor Dreapta
const byte pinMotDrB = 10;
const byte usCentru = 30; // Limita maxima pentru actiune senzor centru
const byte usLeft = 30; // Limita maxima pentru actiune senzor left
const byte usRight = 30; // Limita maxima pentru actiune senzor right
byte speed = 250;
uint16_t j = 0;
uint16_t moveStep = 0;
uint16_t doCycle = 0;
uint16_t moveDirection = 0;
int motStCounter = 0;
int motDrCounter = 0;
volatile byte motStDirection = 0; // 0=stop, 1=sens1, 2=sens2
volatile byte motDrDirection = 0; // 0=stop, 1=sens1, 2=sens2
//NewPing sonar[SONAR_NUM] = { // Sensor object array.
// NewPing(7, 7, MAX_DISTANCE), // Each sensor's trigger pin, echo pin, and max distance to ping.
//};
void oneSensorCycle() { // Sensor ping cycle complete, do something with the results.
// The following code would be replaced with your code that does something with the ping results.
for (uint8_t i = 0; i < SONAR_NUM; i++) {
Serial.print(i);
Serial.print("=");
Serial.print(cm[i]);
Serial.print("cm ");
}
Serial.println();
}
//
//void echoCheck() { // If ping received, set the sensor distance to array.
// if (sonar[currentSensor].check_timer())
// cm[currentSensor] = sonar[currentSensor].ping_result / US_ROUNDTRIP_CM;
//}
void forward() {
motStDirection = 1;
motDrDirection = 2;
analogWrite(pinMotStA, speed);
analogWrite(pinMotStB, 0);
analogWrite(pinMotDrA, 0);
analogWrite(pinMotDrB, speed);
}
void backward() {
motStDirection = 2;
motDrDirection = 1;
analogWrite(pinMotStA, 0);
analogWrite(pinMotStB, speed);
analogWrite(pinMotDrA, speed);
analogWrite(pinMotDrB, 0);
}
void rotateRight() {
motStDirection = 1;
motDrDirection = 1;
analogWrite(pinMotStA, speed);
analogWrite(pinMotStB, 0);
analogWrite(pinMotDrA, speed);
analogWrite(pinMotDrB, 0);
}
void rotateLeft() {
motStDirection = 2;
motDrDirection = 2;
analogWrite(pinMotStA, 0);
analogWrite(pinMotStB, speed);
analogWrite(pinMotDrA, 0);
analogWrite(pinMotDrB, speed);
}
void moveStop() {
motStDirection = 0;
motDrDirection = 0;
analogWrite(pinMotStA, 0);
analogWrite(pinMotStB, 0);
analogWrite(pinMotDrA, 0);
analogWrite(pinMotDrB, 0);
}
void setup() {
Serial.begin(115200);
pingTimer[0] = millis() + 75; // First ping starts at 75ms, gives time for the Arduino to chill before starting.
for (uint8_t i = 1; i < SONAR_NUM; i++) // Set the starting time for each sensor.
pingTimer[i] = pingTimer[i – 1] + PING_INTERVAL;
pinMode(pinMotStA, OUTPUT);
pinMode(pinMotStB, OUTPUT);
pinMode(pinMotDrA, OUTPUT);
pinMode(pinMotDrB, OUTPUT);
pinMode(pinInterruptSt, INPUT_PULLUP);
pinMode(pinInterruptDr, INPUT_PULLUP);
// attachInterrupt(digitalPinToInterrupt(pinInterruptSt), motStRotDetect, RISING); // CHANGE/RISING/FALLING/LOW
attachInterrupt(digitalPinToInterrupt(pinInterruptDr), motDrRotDetect, RISING); // CHANGE/RISING/FALLING/LOW
}
void motDrRotDetect() { // 4 pulses per motor's spindle rotation
if ( motDrDirection == 1 )
motDrCounter –;
if ( motDrDirection == 2 )
motDrCounter ++;
}
void loop() {
unsigned long now;
unsigned long lastDisplay = millis();
speed = 200;
forward();
while ( motDrCounter < DISTANCE_COUNTER_RIGHT ) {
now = millis();
if ((now – lastDisplay) >= 300) {
lastDisplay = now;
Serial.print("lat1 ");
Serial.println(motDrCounter);
}
};
moveStop();
delay(2000);
motDrCounter = 0; // Reset the counter for the rotation
rotateLeft();
while ( motDrCounter < ROTATE_COUNTER_RIGHT ) {
now = millis();
if ((now – lastDisplay) >= 300) {
lastDisplay = now;
Serial.print("rot1 ");
Serial.println(motDrCounter);
};
};
moveStop();
delay(2000);
motDrCounter = 0; // Reset the counter for a new segment of the rectangle
forward();
while ( motDrCounter < (DISTANCE_COUNTER_RIGHT/2) ) {
now = millis();
if ((now – lastDisplay) >= 300) {
lastDisplay = now;
Serial.print("lat2 ");
Serial.println(motDrCounter);
}
};
moveStop();
delay(2000);
motDrCounter = 0; // Reset the counter for the rotation
rotateLeft();
while ( motDrCounter < ROTATE_COUNTER_RIGHT ) {
now = millis();
if ((now – lastDisplay) >= 300) {
lastDisplay = now;
Serial.print("rot2 ");
Serial.println(motDrCounter);
};
};
moveStop();
delay(2000);
}
Anexa 2
// –––––––––––––––––––––––––
// Testare Orientare folosind IMU MPU 9150
// Deplasare pe traiectorie rectilinie (lungime 1000mm, latine 500mm)
// Controlul traiectoriei se bazeaza pe informatiile primite de la encoderele aflate pe motoarele ce actioneaza fiecare senila
// Programatori:
// S.l.dr.ing. Silviu PETRACHE
// As.dr.ing. Viorel GHEORGHE
// ing. Ghiulsen MARIN
// Program bazat pe: of RTIMULib-Arduino Copyright (c) 2014-2015, richards-tech
//
//
// –––––––––––––––––––––––––
#include <Wire.h>
#include "I2Cdev.h"
#include "RTIMUSettings.h"
#include "RTIMU.h"
#include "RTFusionRTQF.h"
#include "CalLib.h"
#include <EEPROM.h>
RTIMU *imu; // the IMU object
RTFusionRTQF fusion; // the fusion object
RTIMUSettings settings; // the settings object
// DISPLAY_INTERVAL sets the rate at which results are displayed
#define DISPLAY_INTERVAL 500 // interval between pose displays
// SERIAL_PORT_SPEED defines the speed to use for the debug serial port
#define SERIAL_PORT_SPEED 115200
unsigned long lastDisplay;
int sampleCount;
float zRotAnglePositiveStart = 0 ;
void setup()
{
int errcode;
Serial.begin(SERIAL_PORT_SPEED);
Wire.begin();
imu = RTIMU::createIMU(&settings); // create the imu object
Serial.print("ArduinoIMU starting using device "); Serial.println(imu->IMUName());
if ((errcode = imu->IMUInit()) < 0) {
Serial.print("Failed to init IMU: "); Serial.println(errcode);
}
if (imu->getCalibrationValid())
Serial.println("Using compass calibration");
else
Serial.println("No valid compass calibration data");
lastDisplay = millis();
sampleCount = 0;
// Slerp power controls the fusion and can be between 0 and 1
// 0 means that only gyros are used, 1 means that only accels/compass are used
// In-between gives the fusion mix.
fusion.setSlerpPower(0.02);
// use of sensors in the fusion algorithm can be controlled here
// change any of these to false to disable that sensor
fusion.setGyroEnable(true);
fusion.setAccelEnable(true);
fusion.setCompassEnable(true);
}
void loop()
{
unsigned long now = millis();
unsigned long delta;
int loopCount = 1;
float zRotAngle, zRotAnglePositive ;
while (imu->IMURead()) { // get the latest data if ready yet
// this flushes remaining data in case we are falling behind
// if (++loopCount >= 10)
// continue;
fusion.newIMUData(imu->getGyro(), imu->getAccel(), imu->getCompass(), imu->getTimestamp());
zRotAngle = ((RTVector3&)fusion.getFusionPose()).z() * RTMATH_RAD_TO_DEGREE;
zRotAnglePositive = 180.0 – zRotAngle;
if ((abs(zRotAnglePositive – zRotAnglePositiveStart) >= 90) && (abs(zRotAnglePositive – zRotAnglePositiveStart) <= 180)) {
Serial.println("STOP1!");
zRotAnglePositiveStart = zRotAnglePositive;
continue;
}
if ((zRotAnglePositiveStart > 270) && (zRotAnglePositive < 90) && (((zRotAnglePositive + 360) – zRotAnglePositiveStart) >= 90)) { // tine cont ca rotatia poate depasi unghiul de 360grade (spre 0)
Serial.println("STOP2!");
zRotAnglePositiveStart = zRotAnglePositive;
continue;
}
if ((zRotAnglePositiveStart < 90) && (zRotAnglePositive > 270) && (((zRotAnglePositiveStart + 360) – zRotAnglePositive) >= 90)) { // tine cont ca rotatia poate depasi unghiul de 0grade (spre 360)
Serial.println("STOP3!");
zRotAnglePositiveStart = zRotAnglePositive;
continue;
}
if ((now – lastDisplay) >= DISPLAY_INTERVAL) {
lastDisplay = now;
// RTMath::display("Gyro:", (RTVector3&)imu->getGyro()); // gyro data
// RTMath::display("Accel:", (RTVector3&)imu->getAccel()); // accel data
// RTMath::display("Mag:", (RTVector3&)imu->getCompass()); // compass data
// RTMath::displayRollPitchYaw("Pose:", (RTVector3&)fusion.getFusionPose()); // fused output
// Serial.println();
Serial.print(zRotAngle);
Serial.print(" = ");
Serial.print(zRotAnglePositive);
Serial.print(" compare to ");
Serial.println(zRotAnglePositiveStart);
}
}
}
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: Cercetări asupra posibilităților de localizare în spațiu a unui robot mobil [309304] (ID: 309304)
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.
