810 likes | 1.16k Views
Intelektikos pagrindai. P176B100 2012 m Robertas Damaševičius r obertasdamasevicius @ktult. Pagrindiniai robotų valdymo metodai ir algoritmai. Robotų valdymo algoritmai. Elgsena grįsti algoritmai Būsenomis (baigtiniais automatais) grįsti algoritmai PID - valdymo algoritmas
E N D
Intelektikos pagrindai P176B100 2012 m Robertas Damaševičius robertasdamasevicius@ktult
Robotų valdymo algoritmai • Elgsena grįsti algoritmai • Būsenomis (baigtiniais automatais) grįsti algoritmai • PID - valdymo algoritmas • Fuzzy – neraiškios logikos valdymo algoritmai • Dirbtiniai neuroniniai tinklai • Genetinio programavimo algoritmai • Evoliuciniai skaičiavimai • Tikimybiniai algoritmai
Elgsenomis pagrįstas judėjimo valdymas • Robotas aprūpinamas keletu paprastųjų elgsenų, kurias gerai moka • Esant tam tikroms situacijoms, jis jas kaitalioja • Modelį sudaro 5 paprastosios elgsenos: • klaidžiojimas (važinėjimasis) aplinkoje, • kliūčių vengimas, • važiavimas pakrauti bateriją, • važiavimas palei sieną, • važiavimas sekant išsiskiriančios spalvos liniją
Roboto elgsenos • Bendroji roboto elgsena susiformuoja sąveikaujant paprastosioms elgsenoms ir aplinkai, kurioje yra robotas • Paprastosios elgsenos yra realizuojamos kaip atskiros valdymo sistemos dalys • Kiek ir kokių paprastųjų elgsenų reikės priklauso nuo aplinkos, kurioje veiks robotas, ir nuo jam keliamų tikslų (uždavinių) • Numatyti ir aprašyti visas paprastąsias elgsenas – sunkus, kūrybinis projektavimo uždavinys • Jei nebus įdiegtos visos reikalingos paprastosios elgsenos, robotas gali pakliūti į situaciją, kurioje nežinos kaip elgtis ir nesugebės atlikti jam pavestų užduočių • Kad sistema gerai funkcionuotų, turi būti užtikrintas paprastųjų elgsenų parinkimo – keitimo mechanizmas
Elgsenos koordinavimas • Koordinavimo mechanizmas yra atsakingas už elgsenų valdymą, ty jų įjungimą ir išjungimą konkrečiu laiku, konkrečioje situacijoje • Koordinavimas gali būti atliekamas naudojant konkurencijos arba kooperacijos metodus • Taikant konkuruojantį metodą, vienu metu įjungta būna tik viena elgsena ir tik ji gali veikti roboto variklius • Taikant kooperuojantį metodą variklius įtakoti gali kelios paprastosios elgsenos
Neadaptyvaus roboto valdymo algoritmas • Įprastinėje situacijoje, robotas seka savo aplinką naudodamas jutiklius • Šios reikšmės yra lyginamos su pageidaujamų reikšmių aibę, kurią iš karto nustatė programuotojas • Priklausomai nuo jutiklių siunčiamų reikšmių nukrypimo nuo pageidaujamų reikšmių, algoritmas nustato veiksmų seką ir konvertuoją ją į vykdytuvams siunčiamų komandų seką • Veiksmai kartojami cikle tol, kol robotas pasiekia savo tikslą
Adaptyvaus valdymo algoritmas • Robotas saugo geriausias parametrų reikšmes atmintyje ir gali jas modifikuoti • Saugomas jutiklių duomenų ir roboto veiksmų į juos sąrašas • Atėjus panašioms jutiklių reikšmėms į saugomas atmintyje, robotas parenka praeityje sėkmingiausią atliktą veiksmą • Geresnis prisitaikymas prie besikeičiančių aplinkos sąlygų
Žmogaus elgsenos algoritmas • Skiriasi didesne atminties įtaka priimamiems sprendimams
Robotų valdymo algoritmai • Būsenomis (baigtiniais automatais) grįsti algoritmai • PID - valdymo algoritmas • Fuzzy – neraiškios logikos valdymo algoritmai • Dirbtiniai neuroniniai tinklai • Genetinio programavimo algoritmai • Evoliuciniai skaičiavimai • Tikimybiniai algoritmai
Robotų programavimo algoritmai • Projektuojant robotų judėjimo valdymą susiduriama su daugeliu problemų • Roboto judėjimas išvengiant kliūčių yra vienas pagrindinių judėjimo uždavinių • Valdymo sistemos pagrindinis tikslas – sugretinti planą/modelį su realia aplinka • Valdymo sistema gauna informaciją iš jutiklių, ją apdoroja ir perduoda komandas valdymo varikliams arba kitiems valdymo įrenginiams, kad jie veiktų aplinką pagal numatytą planą
Būsenomis aprašoma valdymo sistema • Vienas iš būdų valdyti robotą – aprašyti būsenas, kuriose jis yra, kai juda aplinkoje, į kurią yra patalpintas • Roboto judėjimas priklauso nuo to, kokioje būsenoje konkrečiu laiko momentu yra robotas • Kiekviena būsena užprogramuojama tam tikra funkcija, valdančia variklius Iš jutiklių gaunama informacija, nustatoma, kurioje būsenoje yra robotas ir atitinkamai reaguojama • Šis būdas pasiteisina kai robotas veikia nesudėtingoje aplinkoje, kurioje yra nedaug kliūčių • Jei tik judėjimo erdvė pasidaro sudėtingesnė, paprasta ir nesunkiai nusakoma valdymo sistema greitai gali tapti sunkiai valdoma, neatlikti to, ko iš jos tikimasi
Pavyzdys • Robotas turi du į priekį nukreiptus atstumo jutiklius K ir D, kad sugebėtų išvengti susidūrimų • Kuo jutiklių reikšmės K ir D mažesnės, tuo arčiau yra kliūtis • Galimi du režimai: • miego – robotas išjungtas ir • judėjimo – robotas aktyvus • Tarkime, kad roboto užduotis yra visą laiką judėti į priekį • Pirmiausia iš jutiklių gaunama informacija, nustatoma, kurioje būsenoje yra robotas ir atitinkamai reaguojama • Judėjimas priklauso nuo būsenų, kuriose yra robotas • Kiekviena būsena užprogramuojama tam tikra funkcija, valdančia variklius
Būsenomis paremtos valdymo sistemos algoritmas • 1 būsena:K < Astop ir D < Astop • Robotas lėtina judėjimo greitį kol sustoja ir išjungia variklius, jei dar nėra to padaręs ir pereina į miego režimą • 2 būsena: K > Amax, D > Amax • Priekyje nėra kliūčių, robotas visu greičiu juda tiesiai pirmyn • 3 būsena:K < D • Kairėje pusėje yra kliūtis, robotas lėtėja ir suka dešinėn • 4 būsena:D < K • Dešinėje pusėje yra kliūtis, robotas lėtėja ir suka kairėn Kiekviena būsena užprogramuojama tam tikra funkcija, valdančia variklius
Algoritmo trūkumai (1) • Pagr. trūkumas: sistema neturi atminties • Robotas, nesugebantis mokytis iš praeities klaidų yra priverstas jas kartoti • Pavyzdžiui: • Robotas pastebėjęs dvi kliūtis negali pravažiuoti tarp jų net jei tarpas yra pakankamas • Robotas pastebėjęs kliūtį kairėje (3 būsena) pradeda sukti dešinėn • Užfiksavęs kliūtį dešinėje (4 būsena), pradeda sukti kairėn • Po manevro jis vėl atsiduria 3 būsenoje • Robotui taip judant toliau jis gali patekti į 1 būseną arba dar blogiau – kliudyti vieną iš kliūčių
Algoritmo trūkumai (2) • Atsižvelgiant į neseną praeitį galime fiksuoti kurią nors vieną būseną ir nurodyti robotui kurį laiką suktis į vieną pusę • Pavyzdžiui: • Fiksavus, kad sistema perėjo iš 3 į 4 būseną arba iš 4 į 3 būseną ir tame tarpe nebuvo 2 būsenos, galima robotą priversti suktis nuo kliūties kol bus pasiekta 2 būsena
Patobulintas algoritmas • Įvestos 2 papildomos būsenos: • 5 būsena – “pabėgti dešinėn” • 6 būsena – “pabėgti kairėn”
Būsenomis grįstų algoritmų trūkumai • Realus algoritmas bus labai sudėtingas ir griozdiškas • Neįmanoma numatyti visų įmanomų elgesio variantų • Labai sudėtinga ją projektuoti ir derinti • Sunku prižiūrėti, modifikuoti ir plėsti • Netinka dinamiškai kintančiose aplinkose
Robotų valdymo algoritmai • PID valdymo algoritmas • Fuzzy – neraiškios logikos valdymo algoritmai • Dirbtiniai neuroniniai tinklai • Genetiniai algoritmai • Induktyvus loginis programavimas • Mokymasis pastiprinimu • Sprendimų medis
PID valdymo algoritmai • PID (Proportional-Integral-Derivative) – valdymo mechanizmas su grįžtamuoju ryšiu • Plačiai naudojamas pramoninėse valdymo sistemose • Trys elementai: • Proporcinis – priklauso nuo dabartinės paklaidos • Integralo – priklauso nuo praeities paklaidų sumos • Išvestinės – prognozuojamos ateities paklaidos priklausomai nuo dabartinio pokyčio tempo
Pavyzdys: PID linijos sekimo algoritmas Error = target_pos – current_pos //calculate error P = Error * Kp //proportional constant I = I + Error //store accumulated error I = I * Ki //calculate integral value D = Error – Previous_error //change in error to derivate Correction = P + I + D
PID algoritmo realizacija epsilon = 001; dt = 001; Kp = 5; Kd = 3; Ki = 001; if(abs(error) > epsilon) integral = integral + error*dt; derivative = (error - pre_error)/dt; output = Kp*error + Ki*integral + Kd*derivative; pre_error = error;
PID valdiklio variantai • P valdiklis • PI valdiklis • PD valdiklis
Pavyzdys: P valdiklis Kp = 10 ! Inicializuojami kintamiejioffset = 45Tp = 50Loop forever LightValue = read light sensor ! Šviesos jutiklio reikšmė error = LightValue - offset ! Nuokrypis Turn = Kp * error ! Variklio galios pokytis powerA = Tp + Turn ! Galia A varikliui powerC = Tp - Turn ! Galia C varikliui MOTOR A direction=forward power=powerA MOTOR C direction=forward power=powerC end loop forever
P valdiklio problemos • Šviesos jutiklių jautrumo šviesai diapazonas turi būti platus • Turi būti greitas atsakas iš jutiklių ir variklių. • Jei yra didelė delsa, roboto veiksmai atsilieka nuo P valdiklio komandų, todėl tiksliai valdyti robotą yra sudėtinga
PI valdiklis: pavyzdys Kp = 10 Ki = 1offset = 45 ! Inicializuojami kintamiejiTp = 50integral = 0Loop forever LightValue = read light sensor ! Šviesos jutiklio reikšmė error = LightValue - offset ! Nuokrypisintegral = integral + error Turn = Kp*error + Ki*integral ! Galios pokytis powerA = Tp + Turn ! Galia A varikliui powerC = Tp - Turn ! Galia C varikliui MOTOR A direction=forward power=powerA MOTOR C direction=forward power=powerC end loop forever
Multi-PID • Valdymo sistemoje gali būti keli PID valdymo algoritmai • Padėčiai valdyti • Greičiui valdyti Šaltinis: Zhijun Sun, Rentao Xing, Chunsheng Zhao, Weiqing Huang. Fuzzy auto-tuning PID control of multiple joint robot driven by ultrasonic motors
PID įvertinimas • Pranašumai: • Didesnis tikslumas nei tiesioginio (proporcinio) valdymo • Trūkumai: • Sudėtinga parinkti PID koeficientų reikšmes • D koeficientas labai jautrus triukšmui
Robotų valdymo algoritmai • Fuzzy – neraiškios logikos valdymo algoritmai • Dirbtiniai neuroniniai tinklai • Genetiniai algoritmai • Induktyvus loginis programavimas • Mokymasis pastiprinimu • Sprendimų medis
Miglotąja (fuzzy) logika grįstas valdymas • Teoriją suformulavo L.A. Zadeh 1965 m. • Naudojama, kai reikia dirbti su netikslia informacija • Pvz.:
Būlinė logika ir Miglotoji logika • Būlinėje logikoje teiginio reikšmė gali būti tik 100% “TRUE” arba “FALSE” • Miglotoje logikoje teiginiai gali būti iš dalies teisingi arba iš dalies klaidingi
Būlinė logika ir Miglotoji logika • Būlinė logika:A(x) = 1 if x A and A(x) = 0 if x A • Miglotoji logika: A(x) = [0,1]
Miglotosios logikos operatoriai (1) • ARBA: A B = max {A,B}
Miglotosios logikos operatoriai (2) • IR: A B = min{AB}
Miglotosios logikos operatoriai (3) • NE: ’A = 1 - A(x)
Miglotąja logika grįsta valdymo sistema • Veikia naudodama ML taisyklių rinkinį • Struktūra • Fuzzifier:daviklių reikšmėms priskiria ML reikšmes • ML žinių bazė: IF-THEN tipo taisyklių rinkinys • ML loginis įrenginys:pritaiko taisykles iš ML žinių bazės • Defuzzifier: pagal ML išėjimo reikšmes sukuria vykdiklių valdymo komandų seką
ML valdymo pavyzdys • ML taisyklė IFpriekyje-artima-kliūtisAND NOTkairėje artima-kliūtis THENstaigus posūkis-į-kairę Šaltinis: Meng Wang, James N.K. Liu. Fuzzy logic-based real-time robot navigation in unknown environment with dead ends
Hibridinis PID-Fuzzy valdymo algoritmas • PI + ML valdiklis Šaltinis: S. Paramasivam, R. Arumugam. Hybrid fuzzy controller for speed control of switched reluctance motor drives.
Robotų valdymo algoritmai • Dirbtiniai neuroniniai tinklai • Genetinio programavimo algoritmai • Evoliuciniai skaičiavimai • Tikimybiniai algoritmai
Dirbtinis neuroninis tinklas (DNT) • Dirbtinis neuroninis tinklas – tarpusavyje sujungtų dirbtinių neuronų grupė. • Imituoja žmogaus nervų sistemos – neuronų tinklo – darbą • Iš esmės yra klasifikatorius – parenka išėjimų (sprendimų) reikšmes priklausomai nuo įėjimų reikšmių
DNT • Atlikus apmokymą, variklių greičiai apskaičiuojami pagal šią formulę: kur: wijyra svoriai, siyra jutiklių signalų reikšmės ir f yra greitį skaičiuojanti funkcija
Daugiasluoksnė DNT valdomo roboto architektūra Šaltinis: L. Acosta, G.N. Marichal, L. Moreno, J.J. Rodrigo, A. Hamilton, J.A. Mendez. A robotic system based on neural network controllers