intelektikos pagrindai
DESCRIPTION
Intelektikos pagrindai. P160B100 2012 m. Robertas Damaševičius r obertas.damasevicius @ktu.lt. Tipinio roboto programavimo pavyzdys: Braitenbergo mašina. Turinys. Tipin ė roboto strukt ū ra Braitenbergo mašina – gerai žinomas teorinis roboto modelis Braitenbergo mašinos programavimas - PowerPoint PPT PresentationTRANSCRIPT
Tipinio roboto programavimo
pavyzdys:
Braitenbergo mašina
Turinys
Tipinė roboto struktūra Braitenbergo mašina – gerai žinomas teorinis
roboto modelis Braitenbergo mašinos programavimas Braitenbergo mašina ir kvantiniai skaičiavimai
Tipinė roboto struktūra (1) Jutimas – renka ir apdoroja iš jutiklių gaunamą
informaciją Modelio sukūrimas – kuria savo aplinkos modelius tikslu
judėti aplinkoje ir planuoti savo veiksmus Sprendimas – remiantis savo jutiklių pateikta informacija
pasirenka tinkamą veiksmą Planavimas – iš vartotojo nustatytų tikslų sukuria
tikslams reikalingų pasiekti veiksmų seką
Tipinė roboto struktūra (2) Veikimas – pageidaujamo veiksmo konvertavimas į
atitinkamą fizinį veiksmą (pvz., judesį) Valdymas – atlieka dabartinio veiksmo pasirinkimą iš
turimos veiksmų sekos Vadovavimas – atliekamas roboto elgsenų ir
komponentų įjungimas, išjungimas ir konfigūravimas Veiksmo pasirinkimas – tinkamiausio veiksmo
pasirinkimas iš kelių galimai tinkamų veiksmų variantų
Braitenberg’o mašina
Jei roboto forma yra simetrinė bent vienos ašies atžvilgiu ir jis turi du ratus, tai judėjimą galima realizuoti Braitenberg’o mašinos modeliu.
Braitenberg’o mašina yra paprasčiausias mobilus robotas.
Braitenberg’o mašinos dalys
Buferis
Kairysis fotoelementas
Dešinysis fotoelementas
Dešinysis IRdaviklis
Kairysis IRdaviklis
Ratai
• Buferis nustato, ar įvyko susidūrimas.• Sienos nepraleidžia šviesos.• Sienos atspindi infraraudonuosius spindulius.• Šviesos šaltiniai pakabinti lubose.
Braitenberg’o mašina
Ratai yra tiesiogiai sujungti su atstumo jutikliais įvedant jiems svorius panašiai kaip dirbtiniuose neuroniniuose tinkluose.
Kiekvienam ratui valdyti, gaunamos jutiklių vertės padauginamos iš svorių, o sandaugos susumuojamos.
Gauti rezultatai perduodami ratų motorams. Jeigu jungtis yra teigiama (stiprinanti), rato sukimosi greitis
yra proporcingas jutiklio signalo vertei. Jeigu jungtis yra neigiama (slopinanti), rato sukimosi greitis
yra priešingai proporcingas jutiklio signalo vertei. Jeigu į ratą ateina neigiamas suminis signalas – ratas
pradeda suktis atgal.
Pagrindiniai principaiJei signalas slopinamas, robotas artėja link šviesos
Minuso ženklas reiškia neigiamą grįžtamąjį ryšį
Jei slopinami signalai sukryžiuoti, robotas tolsta nuo šviesos
Pagrindiniai principai
Paprasčiausios Breitenberg‘o mašinos a) Kiekvienas jutiklis sujungtas su varikliu toje pačioje pusėje b) Kiekvienas jutiklis sujungtas su varikliu priešingoje pusėje c) Kiekvienas jutiklis sujungtas su varikliais abejose pusėse
Braitenberg‘o tipo valdymo sistemos struktūra Bendruoju atveju gali būti daug
jutiklių Kiekviena jungtis gali būti:
stiprinanti (didinanti rato variklio greitį; žymima „+“) arba
silpninanti (mažinanti rato variklio greitį; žymima „-„)
Storesnės jungčių linijos rodo, kad iš jutiklių perduodamos reikšmės motorams turi didesnius svorius
Breitenberg‘o mašinos elgsenos tipai
1) „Gyvybė“ 2a) “Baimė” 2b) “Agresija”
3) “Meilė”
1
2a 2b 3
Braitenbergo mašinos elgsena: “gyvybė” 1-tipo mašina gali važiuoti tik tiesiai Judėjimo greitis proporcingas jutiklio
grąžinamai reikšmei
Braitenbergo mašinos elgsena: “baimė” 2a-tipo mašina su stiprinančiomis jungtimis
stengiasi patekti į zoną, kurioje jos jutikliai bus mažiau aktyvuojami
Jeigu jutikliai reaguoja į šviesą, tuomet jutiklis esantis arčiau šviesos šaltinio privers atitinkamą ratą suktis greičiau ir robotas nusuks į šoną, tuo pademonstruodamas “baimės” elgseną.
Braitenbergo mašinos elgsena: “agresija” 2b-tipo mašina su stiprinančiomis jungtimis
stengsis artėti prie šviesos šaltinio, tuo demonstruodama “agresijos” elgseną
Braitenbergo mašinos elgsena: “meilė” 3-tipo mašina su silpninančiomis
jungtimis stengsis artėti prie šviesos šaltinio
Artėjant varikliai veiks vis silpniau, todėl robotas visą laiką bus šviesoje atsigręžęs į šviesos šaltinį, tačiau niekada nepasieks jo, tuo demonstruodamas “meilės” elgseną.
Tyrinėtojo elgesys Jei aptinka stipresnį šviesos šaltinį,
pradeda artėti prie jo
4 tipo mašina Turi „vertybes“ (instinktus) 4a tipas: Variklio aktyvavimo funkcija yra
netiesinė (nemonotoninė), pvz., pasiekus max reikšmę vėl mažėja
Elgesys tampa sudėtingu: mašina artėja prie šviesos šaltinio, o po
to vėl nutolsta arba sukasi aplink šaltinį tam tikru
spinduliu 4b tipas: aktyvavimo funkcija yra trūki
esant tam tikroms reikšmėms, mašina sustoja
Sudėtingos Braitenbergo mašinos 5: Logika
Įvedamos loginės elgesio taisyklės Atminties pradmenys
6: Pasirinkimas Įvedamas atsitiktinumo pasirenkant faktorius Pvz., realizuojami genetiniai algoritmai
7: Koncepcijos Mašina gali mokytis Gali pati modifikuoti savo jungtis tarp jutiklių ir variklių Gali būti realizuota naudojant Hebb learning algoritmą
8: Erdvė Robotas turi jutiklius ir algoritmus reikalingus žemėlapiui sudaryti
Sudėtingos Braitenbergo mašinos 9: Formos
Robotas gali atpažinti išorinių daiktų formas
10: Samprotavimas Robotas iš loginių teiginių gali išvesti naujus teiginius (elgesio taisykles) 11: Taisyklės Robotas pats gali susidaryti pasaulio modelį
12: Reflektyvumas Robotas žino savo „mąstymo“ taisykles (būsenas) ir pats gali keisti jų
parametrų reikšmes
13: Numatymas Robotas gali prognuozuoti savo veiksmus ir aplinkos būseną ateityje
14: Malonumas Robotas pats gali pasirinkti savo būsimą būseną
Change the vehicle behavior?
Elgseną valdo doSenseLogic() metodas
// Sensor output goes directly to wheel on same side void doSenseLogic() { setASpeed(sA.getSense()); setBSpeed(sB.getSense()); }
// Sensor output crossed to wheel on opposite side /* void doSenseLogic() { setASpeed(sB.getSense()); setBSpeed(sA.getSense()); }*/
// Each sensor goes to wheel on same side with an inhibitory connection /* void doSenseLogic() { setASpeed(sA.getInverseSense()); setBSpeed(sB.getInverseSense()); } */
// Each sensor goes to wheel on opposite side with an inhibitory connection /* void doSenseLogic() { setASpeed(sB.getInverseSense()); setBSpeed(sA.getInverseSense()); } */
// Sensors are hooked up to opposite motors, with threshhold sensing. /* void doSenseLogic() { setASpeed(sB.getNonlinearSense()); setBSpeed(sA.getNonlinearSense()); } */
Braitenbergo mašinos valdymo architektūra
Jutikliai
Vykdikliai
Loginės taisyklės
AplinkaAplinka
Braitenbergo automatas
Jutikliai
Vykdikliai
Loginės taisyklės
Atm
ntisAplinkaAplinka
Modeliavimas
Braitenbergo mašiną galima modeliuoti naudojant įvairaus tipo signalus Analoginius Dvejetainius Daugiareikšmius Miglotosios logikos Kvantinius
Kvantiniai skaičiavimai
Klasikiniai kompiuteriai skaičiavimams naudoja bitus, kurių reikšmė gali būti 0 arba 1.
Kvantiniai kompiuteriai skaičiavimams naudoja kubitus (qubits), kurių reikšmė gali būti: 0 arba 1 arba 0 ir 1 superpozicija
Teorinis pagrindas: kvantinė mechanika (fizika)
Jutiklia
i
vykdikliai
Miglotosios logikos blokas
Kvantinių skaičiavimų
blokasKvantinė
atmintis
APLINKAAPLINKA
ML
atmintis
F/Q
Q/F
Hibridinė Hibridinė architektūra su architektūra su ML ir kvantinės ML ir kvantinės logikos logikos posistemėmisposistemėmis
Breitenberg‘o mašinos algoritmas (Java) float l = MINIMAL_SPEED;
float r = MINIMAL_SPEED;
/* turn away from obstacles */ l = l + GetProximitySensor(FRONTLEFT) - GetProximitySensor(FRONTRIGHT); r = r + GetProximitySensor(FRONTRIGHT) - GetProximitySensor(FRONTLEFT);
/* turn towards light sources */ r = r + GetLightSensor(LEFT) - GetLightSensor(RIGHT); l = l + GetLightSensor(RIGHT) - GetLightSensor(LEFT);
/* normalize speed to [-1 ; +1] */ l = l / (4f + MINIMAL_SPEED); r = r / (4f + MINIMAL_SPEED);
/* set the motors */ SetMotorSpeed(LEFTMOTOR,l); SetMotorSpeed(RIGHTMOTOR,r);
MotorTest.java
import josx.platform.rcx.*;
class MotorTest {
static final int STOP = 0;static final int RUN = 1;static final int FLOAT = 2;
static int mode = STOP;static int power = 0;
public static void main(String [] args) {setupButtonListeners();
while (true) {if (mode == RUN) {
Motor.A.setPower( power ); Motor.A.forward();
} else if (mode == STOP) {Motor.A.stop();
} else if (mode == FLOAT) {Motor.A.flt();
}}
}... (button listener code not shown)
LightTest.javaimport josx.platform.rcx.*;
class LightTest implements SensorConstants {
public static void main(String [] args) throws InterruptedException{
Sensor.S1.setTypeAndMode (SENSOR_TYPE_LIGHT, SENSOR_MODE_PCT);
Sensor.S1.activate();
while (true) {int lightReading;
if (Button.VIEW.isPressed()) {lightReading = Sensor.S1.readRawValue();
} else {lightReading = Sensor.S1.readValue();
}
LCD.showNumber( lightReading );}
}
}
Aggressive.javaAggressive.java class aggressive implements SensorConstants {public static void main(String [] args) {
int minBright = 100;final int gain = 12;
Sensor.S1.setTypeAndMode (SENSOR_TYPE_LIGHT, SENSOR_MODE_PCT);Sensor.S1.activate();Sensor.S3.setTypeAndMode (SENSOR_TYPE_LIGHT, SENSOR_MODE_PCT);Sensor.S3.activate();
for (int i = 0; i < 100; i++) { if (Sensor.S1.readValue() < minBright) { minBright = Sensor.S1.readValue(); }
else if (Sensor.S3.readValue() < minBright) { minBright = Sensor.S3.readValue(); }
Thread.sleep(20);}
Motor.A.forward();Motor.C.forward();
while (true) {int motorASpeed = (Sensor.S3.readValue() - minBright) / gain;int motorCSpeed = (Sensor.S1.readValue() - minBright) / gain;setMotorSpeed(Motor.A, motorASpeed);setMotorSpeed(Motor.C, motorCSpeed);
}}
Aggressive.java (continued)protected static void setMotorSpeed(Motor m, int motorSpeed){
if (motorSpeed < 1) {m.flt(); // importantLCD.showNumber(-1);
} else {if (motorSpeed > 7) {
motorSpeed = 7;}m.forward();m.setPower(motorSpeed);LCD.showNumber(motorSpeed);
}}
}
Įvertinimas
Breitenberg‘o mašina įrodo, kad net ir paprastos architektūros robotas gali turėti sudėtingą elgseną, panašią į primityvių biologinių būtybių (pvz., vabzdžių) elgseną.
ĮvertinimasĮvertinimas
• Braitenberg‘o mašina paprastų elgsenų pagalba leidžia modeliuoti emocijas
• Emocijos (sudėtinga elgsena) modeliuojamos kaip paprastų elgsenų (artėti/tolti nuo šviesos šaltinio) sintezė
• Tokio tipo sistemą Brooks‘as vadino intelektualia
• Emocijos atsiranda savaime, kaip elgesio sudėtingėjimo (evoliucijos) pasekmė
Breitenberg‘o mašinos simuliatoriai Java applet‘ai
http://www.ifi.unizh.ch/~llicht/newsimu/SimApplet.html http://www.ai.rug.nl/~gert/applets/braitenbergJRE/ http://kovan.ceng.metu.edu.tr/~ilke/Braitenberg/
BraitenbergEN/.bin/sim.html http://cs.nmu.edu/~jeffhorn/Classes/MA240/Fall2007/
NateLyleSimulator.html
Literatūra (1) Pagrindinis:
V. Braitenberg. Vehicles: Experiments in Synthetic Psychology.
http://books.google.lt/books?id=7KkUAT_q_sQC&printsec=frontcover&source=gbs_ge_summary_r&cad=0#v=onepage&q&f=false
R. Pfeifer and C. Scheier. Understanding Intelligence. The MIT Press.
https://academics.skidmore.edu/wikis/Fvehicles/images/Pfeifer1996.pdf
Kiti: Taavi Salumae, Iñaki Rañó, Otar Akanyeti, Maarja Kruusmaa: Against the flow: A
Braitenberg controller for a fish robot. ICRA 2012:4210-4215 Iñaki Rañó: An Introduction to the Analysis of Braitenberg Vehicles 2 and 3 Using
Phase Plane Portrait. SAB 2012:23-32 Iñaki Rañó: An Empirical Evidence of Braitenberg Vehicle 2b Behaving as a Billiard
Ball. SAB 2010:293-302 X. Yang, R. V. Patel, Mehrdad Moallem: A Fuzzy-Braitenberg Navigation Strategy for
Differential Drive Mobile Robots. Journal of Intelligent and Robotic Systems (JIRS) 47(2):101-124 (2006)
Literatūra (2) Kvantiniai skaičiavimai robotikoje
M. Lukac and M. Perkowski, "Quantum mechanical model of emotional robot behaviors". Proc. of Int. Symp. on Multiple-Valued Logic, Oslo, May 2007.
M. Lukac, D. H. Kim, Normen Giesecke, Sazzad Hossain and Marek Perkowski, "Quantum Behaviors: Synthesis and Measurement." Proc. of RM Symposium, Oslo, May 16, 2007.
M. Perkowski, "Quantum Robots. Now or Never?". Invited Talk at the 5th National Conference on Informatics. Gdansk, Poland. May 2007.