PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Unicycle Roboter mit KI, Maila



MArc_
25.12.2010, 22:59
Hallo Zusammen!

Ich möchte euch gern' mein neustes Projekt (Gestartet vor knapp einem Monat) vorstellen.

http://img534.imageshack.us/img534/4535/imag0101t.th.jpg (http://img534.imageshack.us/i/imag0101t.jpg/)

Es handelt sich um ein sogenannten Unicycle Roboter, der über ein Rad und (in diesem fall) über eine art "Wirbelsäule" das Gleichgewicht halten soll.

Inspiriert von Gizmoduck \:D/
http://img262.imageshack.us/img262/8343/gizmoduckcolorbymegacha.th.jpg (http://img262.imageshack.us/i/gizmoduckcolorbymegacha.jpg/)

Die Steuerung wird über mehrere kleine AVRs geschehen, an denen Sensoren, Servos/Motorsteuerungen angeschlossen sind. Diese senden alle ihre Sensorwerte an ein Kleinhirn und empfangen Steuerungsbefehle von diesem.
Das Kleinhirn (größerer AVR mit Funk) soll lediglich Grundfunktionalitäten bereitstellen, wie das weiterleiten der Werte an den Cluster (Das eigentliche Hirn), das anschließende empfangen der Befehle vom Hirn (über Funk) und das weiterleiten an die jeweiligen AVRs.

Der Roboter wird, wie schon zu sehen, ein Grundgerüst mit einem Rad haben, einen Kopf (á la Johny 5) und zwei Roboterarme (Die noch in der Konzeption sind). Inklusive den Bewegungs/Gyro-Sensoren an allen beweglichen Körperteilen (zb. jedes Teil der "Wirbelsäule) um die aktuelle 3D-Position zu berechnet.

Erstes Ziel für mich ist es nun, den Roboter mechanisch fertigzustellen, sodass ich alle Sensoren + Elektronik anbringen kann.

Das besondere an diesem Roboter soll aber nicht das Unicycle-System an sich sein, sondern, dass er das Gleichgewicht selbst erlernen wird (genauso wie alle weiteren Bewegungen). Dazu habe ich eine Datenbankbasierte Lernalgorithmus im Kopf, der alle Werte vom Roboter erhält und über simples probieren gewissen Ziele versucht zu erreichen.

Durch das Speichern von Reaktion (Sensorwerte) auf Aktionen (Sensor/Motor-Ansteuerung) wird eine Datenstruktur gebildet,
auf derren Basis dann bestimmte Ziele (gewisse Sensorwerte) basierend auf Erfahrungswerten schneller/überhaupt gelöst werden können.
Anhand von Gewichtungen und der Speicherung in der Datenbank kann das System sich später dann Erinnern und ähnliche Problemlösungen/Ziele schneller und auf eigene Faust erledigen.
(Positiver Nebeneffekt: So erspare ich mir das Probieren und suchen von Mathematischen Formeln und anschließende programmieren jener.)

Ganz so einfach, wie es sich anhört, ist es allerdings nicht, da noch weitere Sensoren wie Drucksensor an den Fingerspitzen, Microfone, zwei niedrig aufgelöste Kameras und andere Sensoren zum Einsatz kommen. Durch die Kombination aus all derer in einem System, das Erfahrungen bildet, erhoffe ich mir eine art komplexerer Künstlichen Intelligenz, die in der Lage sein wird, einfache Dinge zu erlernen - wie ein Baby quasi - durch simples vorgeben von Zielen und das ausprobieren, bis es klappt.
(Wobei ein Baby am Anfang kein Ziel von außen bekommt, sondern erstmal durch Instinkt und Nachahmen sich selbst Ziele setzt - daher bekommt mein System für's erste auch einfachste Vorgaben so einprogrammiert, als wäre es der Instinkt der Maschine).
Später darauf aufbauend soll ein ähnlich abstrahiertes System zur Spracherkennung verwendet werden und via diesem Weg dann Ziele definiert werden,
desweiteren durch die ganzen Sensoren + speziell den Augen eine selbst-gefüllte 3D-Engine enstehen, auf dessen Erfahrungswerte der Roboter dann auch wieder zurückgreifen kann.

Alles in allem also sehr komplex. Mein Endziel ist also eine KI zu entwickeln, die alles was es kann (bis auf das absolute Grundsystem des Analysierens) durch lernen/probieren hat.

Ich hatte vor, sofern erwünscht, den Fortschritt des Projektes hier jeweils mit Bildern zu Dokumentieren und ein paar Wörter zu äußern.

Weitere technische Daten:
* Als Antrieb verwende ich ein Scooter-RitzelSet und ein "gehackten" Servo
* Für die Wirbelsäule und für das anheben des Popos verwende sehr starke ca 40kg Servos.
* Microcontroller für die einzelnen Bereich möchte ich Arduinos verwenden: http://arduino.cc/en/Main/ArduinoBoardFio

Weitere Details folgenden (hoffentlich) bald. :-P
Über jegliche Kommentare würde ich mich wirklich freuen :-)

Beste Grüße,
MArc

Weitere Bilder:

http://img258.imageshack.us/img258/5052/imag0094pu.th.jpg (http://img258.imageshack.us/i/imag0094pu.jpg/) http://img156.imageshack.us/img156/5013/imag0096bz.th.jpg (http://img156.imageshack.us/i/imag0096bz.jpg/) http://img529.imageshack.us/img529/8380/imag0097yr.th.jpg (http://img529.imageshack.us/i/imag0097yr.jpg/) http://img641.imageshack.us/img641/7647/imag0099sy.th.jpg (http://img641.imageshack.us/i/imag0099sy.jpg/) http://img577.imageshack.us/img577/759/imag0100fi.th.jpg (http://img577.imageshack.us/i/imag0100fi.jpg/)

wisda.noobie
26.12.2010, 19:51
wow...da hast du dir aber was vorgenommen... mit den Armen wird das sicherlich nicht einfach, das Gleichgewicht zu halten...

ich bin mal gespannt, wie du damit vorran kommst, ist ein wirklich interessantes Thema!

mfg wisda.noobie

Richard
26.12.2010, 21:42
Du schreibst nicht von Deiner vorbildung? KI, fuzzi Logik und besonders neuronale Netzwerke sind / sollten Dir (sehr) geläufig sein oder es wird mehr als schwierig. Bei Funk sehe ich schon recht schwarz, die Protokolle verbrauchen viel Zeit für (relativ) wenig Daten. Kabelgebundene Systeme sind immer noch weit überlegen.

Aber nur Mut! ich werde mir Deine Erfahrungen gerne anschauen. :-)

Gruß Richard

TobiKa
26.12.2010, 22:59
Also erstmal n interessantes Projekt!
Ich muss Richard recht geben, würde von Funk abraten, finde es auch unsinnig wenn sich die Controller eh in einem Roboter gefinden.

Über die Arme würde ich mir auch noch garkeine Gedanken machen!
Bring deinen Roboter, so wie er jetzt ist, erstmal dazu aufrecht stehen zu bleiben, dann kannst du weitersehen.

MArc_
27.12.2010, 20:45
Danke für die Kommentare! : )


@TobiKa, die Arme und alles weitere will ich bereits anmontiert sehen, bevor der Roboter anfängt mir lernen, damit ich u.a. die Berechnungs und Datenmenge bereits absehen kann.

@Richard, wusste nicht, dass das wichtig ist : ) - aber ich erzähle gerne ein bisschen über meine Wenigkeit: Bin gelernter programmierer (Server und Win/Unix Desktop Applikationen) und unterhalte momentan zwei erfolgreiche Firmen, die sich als Schwerpunkt Server-Software und (Werbe)Agentursarbeit gesetzt haben. Hobbymäßig, nun, wie man sieht: Roboter : )
Arbeite schon länger an Konzepten für KI, um die mit heutiger Rechenpower für derartige Projekte realistisch umzusetzen - daher sind mir deine Begrifflichkeiten bekannt.

@wisda.noobie,
ja, ist wohl nicht so easy; aber durch die Architektur, die ich verfolge, habe ich nicht die Arbeit, dem Gleichgewicht beizubringen, sondern er selbst.
Von daher garnicht so schlecht :-D

Kurze Zwischeninfo bzgl. Namen:
Als ich versucht hatte, ein wenig an einem Finger-Versuch zu basteln, kam plötzlich eine art Gravur zum vorschein (Wohl durch das Quetschen/Reiben mit Zangen)

http://img808.imageshack.us/img808/4268/namev.th.jpg (http://img808.imageshack.us/i/namev.jpg/)

Name ist also nun auch schon gefunden: Maila. \:D/

Bis zum nächsten Fortschritt könnte es noch einige Tage dauern,
da erst wieder Servos bestellt wurden; und die als eine Weile brauchen : )

Richard
28.12.2010, 00:08
@Richard, wusste nicht, dass das wichtig ist : )

Du gehst ein recht kompliziertes Projekt an, da ist eine gewisse Vorbildung schon wichtig. Daher meine Neugierde.

Viel Glück dabei, Richard

TobiKa
28.12.2010, 07:14
Wie willst du ihn eigentlich abfangen wenn er seitlich wegkippen will?

MArc_
28.12.2010, 18:16
Für (u.a. seitliche) Einwirkungen gibt es 3-4 Varianten:

Feine: Pendel oder rotierende Gewichte (wie bei Schiffen); da bin ich noch am experimentiern, damit unter anderem der Roboter auch mal still stehen kann, ohne ein dauerndes gezappel der Motoren bei kleinen Einwirkungen.

Mittel: Die Wirbelsäule an sich kann sich in alle richtungen neigen, allerdings nicht allzustark.

Mittel-Grob: Wirbelsäule + Arme (Wie beim Menschen aufm Einrad)

Grob (seitlich): Zwischen Popo und Wirbelsäule ist eine achse angebracht und ein weiterer sehr starker motor, der bei starker Einwirkung noch versuchen kann es zu retten.
Wenn alles nix hilft, soll er sich mit der hand stützen.

Grob (vor): Nach vorne/hinten ist einfacher, da wird die grobe Variante mit dem Rad gelöst, der rest ist das selbe.

Danke Richard, ich geb' mein Bestes.

MArc_
10.01.2011, 01:54
Hey,

habe nun, seitdem die größeren Servos da sind, ein wenig an dem Arm und an der Hand gebastelt. Folgendes mein Resultat: Arm lässt sich, wie eigentlich fast jeder Roboterarm in alle Richtungen bewegen/drehen, wie ein menschlicher Arm. Pro Hand will ich mit 4 statt mit 5 Fingern auskommen (da ich der Meinung bin, dass der kleine Finger unnötig ist - spare ich mir auch gleich drei Servos ^^)

Was noch fehlt: alle Servos für die Finger + Armgelenk + Unterarm Achse. Dann sollte der Arm fertig sein.

Für die Hand brauch ich nun viele kleine Servos, die auch bereits bestellt sind, allerdings direkt aus China - sprich, erstmal warten.

Bilder im Anhang