Hallo zusammen,
ich möchte euch mein Oktopod-Projekt vorstellen, welches momentan etwas stagniert, aber trotzdem bereits ziemlich weit gekommen ist.
Um zunächst eine Vorstellung zu geben, wo die Reise hingehen soll, ein Bildchen:
Bild hier
Es gibt ja schon einige "nPods", aber dieser sollte einige Fähigkeiten bekommen, die es momentan noch nicht gibt. Das soll anders sein:
- Der Bot soll auch über unebenes Gelände laufen können, bestenfalls Treppen steigen können.
- Er soll größtenteils autark arbeiten. D.h. nicht mit einer Fernsteuerung, o.ä. bedient werden sollen, sondern eher "Aufträge" bekommen, wie "erkunde die Umgebung".
- Er soll in gewissen Bereichen lernfähig sein, d.h. z.B. dass er selbständig ein "Laufprogramm" optimieren kann, in dem er Parametereinstellung bewertet.
- Er bekommt einen Haufen Sensoren, damit er seine Umgebung wahrnehmen kann.
Die Idee dahinter ist, mit möglichst wenig Informationen, möglichst viel zu leisten. Anfänglich habe ich eigentlich eher spaßeshalber die ganze Spinne einer Vogelspinne nachgebildet.
Nach und nach hat sich rausgestellt, dass man viele Eigenschaften der Spinne technisch gut umsetzen kann und diese dann auch sehr effektiv sind. Quasi der "bionische-Gedanke" an der Sache.
Ein gutes Beispiel sind hier die Augen. Eine Spinne hat (meist) 8 Augen. Die können nicht viel mehr als hell- und dunkel unterscheiden, sowie grob die Richtung, aus der das Licht kommt. Trotzdem reicht das, um z.B. Bewegungen in der Umwelt zu erfassen, sowie die ungefähre Richtung dieser Bewegungen. Diese Augen hab ich mit Sharp-Entfernungssensoren umgesetzt. 2 gucken jeweils um 5° nach rechts und links, einer gerade aus und einer um 5° nach oben. Das kann man hier ganz gut sehen:
Bild hier
Die 4 Sensoren liefern 4 Zahlen (Entfernungen) und so hat man auf einen Schlag die Info darüber, ob ein Hindernis da ist, wie weit es weg ist, und in welchem Winkel es sich befindet, wenn man erst mal von einem planen Hindernis (z.B. Wand) ausgeht.
Man kann also aus den wenigen Daten viel herausholen, ohne hohen Rechenaufwand. Im Gegensatz dazu wäre eine Kamera, oder gar 2 für 3D Overkill...
Zu Testzwecken hab ich die Sensor-Infos einmal auf einen Fühler übertragen. Der Fühler versucht die Entfernung und den Winkel der vermeintlichen Wand zu folgen:
http://youtu.be/jOZCP7mdT_M
...so, später folgen weitere Infos. :rolleyes:
Grüße, Marcus
- - - Aktualisiert - - -
Ein paar technische Daten:
Gesteuert wird der Bot mit einem Beaglebone Black - das ist einen Hieb schneller, als das oft benutzte Raspberry Pi. Auf dem Beaglebone programmiere ich den Code momentan in Python. Ich hoffe, die Performance reicht, ansonsten muss das ganze noch mal in C++ imgesetzt werden. (Was ich leider noch nicht kann.)
Das Beaglebone steuert 4 Maestroboards an. 2 mit 18 Kanälen (http://www.pololu.com/product/1354 ) und 2 mit 12 (http://www.pololu.com/product/1352 ). An den Kanälen können entweder Servos angesteuert werden, oder analoge Sensoren gelesen werden. (0-5V). Da Hochstrom-Servos benutzt werden, die direkt an einen 2S-Lipo angeschlossen werden können, nehmen 2 der Maestros für die Servos die Spannung direkt aus den Lipos, während an den anderen 2 Sensoren und normale Servos angeschlossen werden können. Um die analogen Sensoren vernünftig auslesen zu können, wird die Spannung der Lipos mit einem BEC auf eine stabile 5V Spannung gebracht.
Die Maestros können alle 4 in Reihe geschaltet werden und hängen über einen USB-Anschluss am Beaglebone. Schön ist, dass man denen Befehle geben kann: Fahre Servo Nr. x an die Position y mit Geschwindigkeit z und Beschleunigung b. Die Servos bewegen sich anschließend entsprechend und falls man nicht versucht, diese mit einer zu hohen Geschwindigkeit zu bewegen, kann man die aktuelle Position auch jederzeit auslesen. D.h. man muss im Script nicht x mal pro Sekunde die aktuelle Position an die Servos schicken.
Der Strom kommt aus 3 x 2S Lipos mit 5100mAh. Hier ein Bild von der Stromverteilung im hinteren Bereich.
Bild hier
Das sieht etwas wild aus, aber ich wollte möglichst hohe Querschnitte nehmen, damit nirgendwo etwas durchbrät, falls mal viel Strom gebraucht wird. Nach grober Rechnung siehts so aus:
29 Hochstromservos zwischen 0.2 und 1.2A = 5.8 - 34.8A = 43 - 258 Watt
6 kleine Servos zwischen 0.003 und 0.75A = 0.018 - 4.5A = 0.1 - 22.5 Watt
Beaglebone, Mastroboards & Sensor-Boards ca. 2A = 10 Watt
Also zusammen zwischen 53 und 290 Watt. Ich schätze, man wird später ca. bei 100 Watt durchschnittlich rauskommen und mit einer Akku-Ladung ca. eine Stunde durch die Gegend gurken könne.
Über einen Strom und einen Spannungssensor kann die Spinne selbständig überprüfen, ob irgendwelche gefährlichen Zustände bestehen und Maßnahmen ergreifen, wie z.B. die Servos abschalten und Alarm schlagen. Es ist geplant, dass über WLAN auf einen Webserver auf dem Beaglebone zugegriffen werden kann, so dass solche Meldungen z.B. auch über Tablett kontrollierbar sind.
- - - Aktualisiert - - -
3D Konstruktion
Da ich ursprünglich aus dem 3D-Bereich komme, kenne ich mich mit 3D-Studio Max aus. Das ist sicherlich nicht die geeignetste Wahl um einen Bot zu konstruieren, da ich aber kein AutoCad, o.ä. kann, ist das für mich die schnellste Alternative. Außerdem kann man relativ leicht damit dann auch fotorealistische Visualisierungen machen. ;)
Die 3-D Teile exportiere ich dann ins obj-Format und lass diese bei shapeways ausdrucken. ...was dann leider immer eine gefühle Ewigkeit dauert, bis es fertig ist.
Die Beine
Die Beine haben die üblichen 3 Gelenke, wie man sie auch von anderen Hexas und Oktos kennt. Wirklich schwierig war der Bau des Fußes. Hier sollte zum einen ein Drucksensor rein, zum anderen ein Federmechanismus, der die schlimmsten Stöße abfängt. Nach zig Versuchen ist auch etwas brauchbares herausgekommen.
Bild hier
Oben sind alle Teile eines Beines abgebildet. Das etwas gelbliche Teil ist quasi die "Hornhaut" und besteht aus einem Gummi-artigen Material. Darüber wird das Teil rechts daneben geklippst. Auf den Pin in der Mitte kommt noch ein kleines 2mm Gummi-Scheibchen. Das drückt dann später auf den Drucksensor. Im folgenden Bild sieht man, wo die 2 Teile reinkommen und in der Mitte den verbauten Drucksensor.
Bild hier
"Hornhaut" und Halter haben ganz leichten Druck, der direkt auf den Drucksensor wirkt und es gibt ca. 1mm Spiel, den sich das Gummi zusammendrücken könnte. Der leichte Druck am Anfang ist wichtig, damit der ganze Kram nicht klappert und nicht-lineare Ergebnisse am Drucksensor erzeugt werden. Mit der Konstruktion hier, kann der Druck in Gramm mit einem Fehler von ca. 5-10% berechnet werden. D.h. wenn die Spinne auf ihren 8 Beinen steht, kann man bereits durch die Drucksensoren auf die Lage der Spinne schließen - ob sie z.B. schräg steht.
Dieser untere Teil des Fußes wird an einer langen Achse geführt und wird mit 4 Kugelschreiberminen gefedert. Ja nachdem wie viel Federkraft und wie hart die Federung sein soll, kann man Federn weglassen, oder kürzen.
Bild hier
Ansonsten hab ich die Beine ursprünglich mit den hitec HSR-5498SG Servos geplant. Das sind Robot-Servos und die haben z.B. den Vorteil, dass das Kabel an der Seite rauskommt, dass auf der anderen Seite der Servoscheibe eine 2. Drehscheibe ist und dass man verschiedene Gehäuseteile anschrauben kann, die viel günstiger zu verbauen sind, als die 2 Standard-Laschen der normalen Servos.
Hier ist ein entsprechendes 3D-Bildchen:
Bild hier
Außerdem sieht man hier auch die bis zu 3 Gummis, die eine entsprechende Vorspannung bewirken und die Spinne zunächst einmal alleine tragen sollten. Das Servo sollte im Idealfall nur bei anderen, als dem Standardwinkel Kraft ausüben müssen. Übrigens rechne ich mit einem Gewicht von ca. 5.5kg.
...so später geht's weiter. Über Kommentare würde ich mich freuen!:rolleyes: