|
 |
M.I.T. AI Memo |
struan
König
   

Dabei seit: 14.09.2008
Beiträge: 778
Herkunft: Straubing-Friesland
 |
|
hallo,
in der onlinedokumentation zum c't bot bin ich auf das AI-memo 864 vom M.I.T. gestossen - ein kleiner lesenswerter artikel wie man mit verschiedenen aufgabenebenen einen roboter steuern kann, anstatt eine flache kette sensor->verarbeitung->aktuator zu benutzen.
naja auch wenn das pdf von 1985 ist und der code in lisp geschrieben ist, doch interessant.
hier kann man es suchen (stichwort aim-864):
http://publications.csail.mit.edu/ai/
die suche nach "robot" liefert einige treffer, zu fast jedem robotik/k.i.-relevanten begriff gibts dokumente.
hier direkter link:
ftp://publications.ai.mit.edu/ai-publica...pdf/AIM-864.pdf
und hier alle ca 1350 stück:
ftp://publications.ai.mit.edu/ai-publications/pdf/
hab einen blick in ein weiteres ai memo geworfen, nämlich aim-239. das war mir zu abgefahren
ich hab den thread hier mal gestartet, denn vielleicht findet wer weitere lesenswerte memos oder kann diese info brauchen
__________________ wer einen rechtschreibfehler findet, darf ihn behalten.
|
|
28.03.2010 21:40 |
|
|
TecDroiD
Moderator
  

Dabei seit: 12.08.2003
Beiträge: 2.409
Herkunft: Berlin
 |
|
sehr spannende library das
muss ich mich mal durch kämpfen.. gleich nach schätzing
__________________ ^[:wq
Sorry, eigentlich wollte ich mich kurz fassen.
Wer meine Ideen kommerziell nutzen möchte, möge mich bitte beteiligen- ich spare auf ein Haus
|
|
30.03.2010 07:43 |
|
|
TecDroiD
Moderator
  

Dabei seit: 12.08.2003
Beiträge: 2.409
Herkunft: Berlin
 |
|
habs jetzt mal gesaugt. sind nur 6GB an Daten.. jetzt brauch ich einen DL-Rohling..
__________________ ^[:wq
Sorry, eigentlich wollte ich mich kurz fassen.
Wer meine Ideen kommerziell nutzen möchte, möge mich bitte beteiligen- ich spare auf ein Haus
|
|
30.03.2010 12:41 |
|
|
kater
Kaiser
Dabei seit: 04.11.2005
Beiträge: 1.410
 |
|
Werd mit 864 morgen mal ausdrucken. Auch wenn es hart zu lesen ist, schaden kann es nicht.
__________________ Wie zeichnet man 800k Linien in einer Sekunde? Vorschläge bitte per PM
|
|
30.03.2010 14:42 |
|
|
kater
Kaiser
Dabei seit: 04.11.2005
Beiträge: 1.410
 |
|
So, das Paper ist echt gut. Gar nicht so schwer zu lesen.
Es ist auch Teilweise witzig. Der Roboter hängt irgendwie an einer 15kbaud Leitung an 4 weiteren Computer oder so
__________________ Wie zeichnet man 800k Linien in einer Sekunde? Vorschläge bitte per PM
|
|
01.04.2010 18:41 |
|
|
kater
Kaiser
Dabei seit: 04.11.2005
Beiträge: 1.410
 |
|
So, durchgelesen.
Ich möchte euch hier mal ein paar Gedanken mitteilen. Insbesondere geht es mit um Bild 5 und 6.
Aber erst ein paar Worte, was die Kästchen in den Bildern bedeuten.
motor: Das ist einfach der Motorcontroller. Man gibt im einen Winkel wohin, und eine Distanz wie weit er fahren soll. Praktisch wäre das dann ein Mikrocontroller mit Encoder an den Rädern und ein z.B. USB Anschluss zum Pc.
sonar: Das sind die Sensoren. Wobei es erstmal egal ist, was das für Sensoren sind und wieviele es sind. Für dieses Beispiel seit aber mal angenommen, es sind Abstandssensoren in Kombination mit einem Taster, damit der Bot auch erkennt, wenn er wo gegen gefahren ist.
collide: Dieses Modul macht folgendes: Es schaut nach, ob Taster gedrückt sind und wenn ja, dann sendet es das "halt" Kommande an den Motorcontroller. Der Bot bleibt also stehen, nachdem er wo gegengefahren ist.
Bravo! Der erste grundlegenste Schritt ist vollbracht. Die "Signalkette" Umgebung - Roboter - Sonar - Collide - Motor - Roboter - Umgebung ist geschlossen. Nun kann der Roboter mit der Umgebung interagieren. Zwar sehr sehr beschränkt, aber es ist möglich.
Nun ein paar Worte zu den beiden anderen Moulen "feelforce" und "runaway" in Bild 5.
feelforce: Also so wie ich das verstanden habe, passiert heir folgendes. feelforce schaut sich die Werte der Abstandssensoren an. Wenn ein Objekt dem Roboter zu nahe kommt, oder der Roboter dem Objekt zu nahe kommt, dann "fühlt" er sich unwohl und wil sich wieder von dem Objekt entfernen. Das ist eigentlich eine ganz natürliche Reaktion. Alles was man nicht kennt, vor dem hat man Angst.
Wenn also feelforce der Meinung ist, das Objekt da vorne kommt zu nahe, dann sag es dem
runaway: Modul, das wir hier schleunigst weg sollen. runaway sendet nun also eine neue Richtung und Distanz zum Motorcontroller. In welche Richtung der Roboter abhauen soll ist erstmal unwichtig.
Zwischenfrage: Was macht der Bot nun, wenn er von allen Seiten umzingelt ist und die "Wände immer näher kommen"? Er bewegt sich von allen Objekten gleich weit weg, also genau in die Mitte! Wenn wir den Roboter nun in einen leeren Raum stellen, und die Sensoren genug Reichweite haben, fährt er automatisch in die Mitte. Die Mitte ist physikalisch gesehen der Schwerpunkt.
Wir haben nun also ein Apperrat gebaut, der den Schwerpunkt findet, ohne dass wir das wollten! Nur mit der einfachen Anweisung "halte dich von allen möglichst weit fern". Fasziniernd oder?
So, nun aber endlich zu dem Kern. Bild 6.
Bild 6 zeigt unser System um zwei Komponenten erweitert: wander und avoid.
wander: Das ist einfach ein Zufallsgenerator der zufällig ein Winkel und Distanz erstellt. Der Roboter soll sich also einfach mal bewegen. Ein Ziel hat er nícht, aber das brauchen wir hier auch nicht.
avoid: Hmm jetzt wird es etwas schwerer. avoid bekommt eine Richtung von wander, wohin der Bot sich bewegen soll, aber auch gleichzeitig auch eine Angabe, wo Objekte sind, also wohin der Roboter möglichst nicht fahren soll. Diese beiden Informationen werden kombiniert und heraus kommt eine Richtung, die so ungefähr noch in Richtung des Zieles von wander zeigt, aber doch etwas weg vom Objekt.
Und jetzt kommt die Technik/ der Trick alle anderen Verhalten beruhen. Die Information "Richtung und Distanz" teffen sich (Im Bild bei demsen Kreis wo S 15 drin steht) bevor sie zu dem Motorkontroller kommen. Aber nur einer der beiden kommt durch. Ich sage mal, welches Signal "stärker" ist, kommt durch.
Es passiert nun also folgendes:
feelforce und runaway sagen: "ich fühl mich hier nicht wohl, lass mal von dem Objekt weg fahren". Aber wander und avoid sind "neugierig" und meinen: "nein, wir fahren jetzt zu dem Objekt hin". Also fährt der Roboter hin.
Jetzt ist das Objekt näher, das Signal von feelforce und runaway wird stärker, man könnte auch sagen, die Angst nimm zu. Und irgendwann ist die Angst größer als die Neugierde von wander und avoid, und der Roboter fährt weg.
Zusammenfassend kann man sagen, es findet also eine Entscheidung statt, je nachdem wie gewichtet wird. Man kann nun also sagen, mein Roboter ist besonderst mutig, und gewichtet das Signal von wander/avoid doppelt. Dann muss das Signal von feelforce/runway besondert stark werden, bevor der Roboter wieder weg fährt.
Wem es vllt. aufgefallen ist, das ist das Verhalten von Künstlichen Neuralen Netzten. Wir haben also ein Knotenpunkt, eine Neurone oder wie das Ding heisst, an dem sich zwei Signale Treffen. Die Signale werden gewichtet, dann kommt noch etwas Mathematik und heraus kommt ein neues Signal.
So kann man auch ein Signal komplett unterdrücken. Z.B. wenn der Roboter rote Steine aufsammeln soll. Hier ergibt sich das Problem, dass er zu dem Stein hin fahren soll, was er ja nicht mag. Noch schlimmer: Um den Stein aufzusammeln, muss er ihn berühren, also mit ihm kollidieren. Nach unserem Modell würde der Roboter sofort seine Tätigkeit einstellen.
Also wenn ein roter Stein gesichtet wurde, unterdrücke die "instinktive Angst und Weglaufreiz" des Roboters vom roten Stein. Von gelben Steinen läuft er allerdings weiter weg
Zum Schluss noch ein Link zu einem etwas älteren Thread [1]. Hier geht es um einen kleinen Roboter, der mit 4-5 neuroden Programmiert ist. Je nachdem an welcher Ecke er auf ein Hinderniss trifft, dreht er um und fährt in die andere RIchtung weiter. Hier geht es also mehr um die Funktionsweise von Neuroden.
@tecdroid nun weisst du ja, wie du dein Hexapod programmieren musst
An alle: Vielen Dank fürs lesen
[1] Eine kleine neuronale Spielerei
__________________ Wie zeichnet man 800k Linien in einer Sekunde? Vorschläge bitte per PM
|
|
06.04.2010 18:04 |
|
|
struan
König
   

Dabei seit: 14.09.2008
Beiträge: 778
Herkunft: Straubing-Friesland
Themenstarter
 |
|
kurze anmerkung:
das S15 heisst eigentlich S1.5 - es unterdrückt das andere signal für 1.5 sekunden.
diesen ebenenansatz find ich echt reizvoll, ist in der tat einem neuronalen netz ähnlich
__________________ wer einen rechtschreibfehler findet, darf ihn behalten.
|
|
07.04.2010 11:13 |
|
|
|
|
|
 |
Impressum
|