Archiv verlassen und diese Seite im Standarddesign anzeigen : CD-SPINDEL HEXAPOT RPI-Power
Halloa,
weil ich 2 Wochen wegen einer Hand-OP daheim rumsaß habe ich die chance genutzt und angefangen meinen ersten Hexapod zu planen. Da meine Hand genesen ist habe ich ihn nun aufgebaut.
Das Resultat sieht nun so aus:
2674326744
Die Beine sind mit je 3 Tower Pro SC90 (ca 15Ncm)angetrieben. Die Oberschenkel haben einen Achsabstand von 33mm und die Unterschenkel 66mm zwischen Achse und Spitze.
Die Beine wurden aus doppelten CDs (mit Doppelklebeband zusammengehalten) mit Akkuschrauber, Laubsäge und Schlüsselfeilen gefertigt.
Ansteuerung über Raspberry Pi, Model B. Mit W-Lan stick, so das ich auch kabellos auf meinen Roboter zugreifen kann. Programmieren werde ich das ganze in C (kenn ich schon)
Servos werden über die SD21 Platine gesteuert, Verbindung zum RPI ist über den I2C Bus realisiert.
Ich habe bei 3 Beinen gleichzeitig auf dem Boden ein maximales zulässiges Gewicht von ca. 1,2kg (Für die die nachrechnen, ich gehe nicht von vollständig gestreckten Füßen aus). Das Gewicht für den Roboter beträgt momentan 415g, die Akkus fehlen mir noch, dürfen also maximal 800g wiegen, dürfte also machbar sein.
Momentan bin ich dabei die Steuerung zu Programmieren, ich habe nun eine Prozedur mit der ich mit "X:Y:Z" Eingabe die Beine positionieren kann. Als nächstes kommen die übergeordeten Berechnungen für die Roboterbewegung dran.
Für die Versuche hänge ich den RPI an eine USB-Stromversorgung und die Servos an ein altes Handyladegerät mit 4,8V. Da habe ich aber das Problem das wenn ich alle Servos beim Anschalten angeschlossen habe nichts passiert, ob die Stromversorgung durch die Anlassströme zusammen bricht oder die Sd21-Platine aussteigt weis ich nicht. Wenn ich nach dem anschliesen die Servos anstecke sind alle 18 Stück funktionstüchtig und ansprechbar.
Dazu habe noch eine Frage: Ist es irgendwie möglich über die Platine die Servos nacheinander "einzuschalten" bzw die Servos über einen Schalter einzeln oder Gruppenweise zuzuschalten? (Dann spar ich mir das Gestecke)
An sonsten noch der momentane Preisrahmen:
50er CD-Spindel: ~12€ Hatte ich aber noch, die CDs sind aber zu billig als das man Daten sicher drauf sichern könnte.
Klebeband: 2€
Servos: 20x3,25€=65€
RPI:39€
W-Lan-Stick: 10€
Speicherkarte: 5€
SD21:42€
Gesamt:175€
Wenn ich mit der Programierung soweit bin wird es noch passende Akkus geben. Da rechne ich nochmal mit ca. 75€. Ich denke 250€ sind als Buget für ein Anfängeprojekt nicht schlecht (und das es noch ein Hexapod werden muste ;) )
Hi Podi,
schönes Teil! Könnte mir zwar denken dass der Aufbau für das angestrebte Gesamtgewicht insgesamt etwas instabil ist, aber das ist kein Grund nicht mal zu probieren wie weit man kommt. Die "üblichen Verdächtigen" werden sich bestimmt bald zu Wort melden und das näher erläutern ;-)
Für die Versuche hänge ich den RPI an eine USB (http://www.rn-wissen.de/index.php/USB)-Stromversorgung und die Servos an ein altes Handyladegerät mit 4,8V. Da habe ich aber das Problem das wenn ich alle Servos beim Anschalten angeschlossen habe nichts passiert, ob die Stromversorgung durch die Anlassströme zusammen bricht oder die Sd21-Platine aussteigt weis ich nicht. Wenn ich nach dem anschliesen die Servos anstecke sind alle 18 Stück funktionstüchtig und ansprechbar.
Dazu habe noch eine Frage: Ist es irgendwie möglich über die Platine die Servos nacheinander "einzuschalten" bzw die Servos über einen Schalter einzeln oder Gruppenweise zuzuschalten? (Dann spar ich mir das Gestecke)
Warum verwendest du nicht einfach ein Netzteil das ausreichend dimensioniert ist? Das dürfte längerfristig die vernünftigste Lösung sein. Welchen Strom liefert denn dein Ladegerät? Meistens sind das doch nicht mehr als ca 400 mA bei diesen kleinen Steckernetzteilen, das ist sicher zu wenig, vor allem wenn der Bot dann irgendwann mal laufen soll. In gewissem Rahmen kann man das Problem vielleicht auch noch durch eine Pufferung nah an den Servos (Elkos) abfangen, aber die Physik überlistet man damit auch nicht.
Gruß
Malte
HeXPloreR
16.11.2013, 11:31
schönes Teil! Könnte mir zwar denken dass der Aufbau für das angestrebte Gesamtgewicht insgesamt etwas instabil ist, aber das ist kein Grund nicht mal zu probieren wie weit man kommt. Die "üblichen Verdächtigen" werden sich bestimmt bald zu Wort melden und das näher erläutern ;-)
Korrekt - schönes Teil :)
Zum Gesamtgewicht/Gewichtstest miit CD Maximalbeladug, ja das ist so eine Sache. Ich habe zweifelsfrei selbst solche Test genau zweimal gemacht - beim zweiten mal ist mir ein Servogetriebe in den Bauteilehimmel gegangen. Daher kann ich nur empfehlen, die Servos nach dem geplanten Gewicht auszuwählen UND dann die (auch vorher geplanten) Komponenten aufzubauen. Wenn dann später etwas mehr Gewicht dazu kommen soll, kann/wird man ggf immer noch feststellen das es funktioniert oder eben nicht. Vermutlich rechnet man es sich vorher auch schon durch ;)
Die Servos würde ich extra mit Spannung versorgen. Die 5V Logikspannung kann das SD21 selbst generieren, ist aber nicht nötig wenn das RPi die auch bereit stellt (?). Dann muss nur Servoseite angeschlossen werden. Und der Jumper dementsprechen entfernt werden - sonst gibt es garantiert einen Kurzschluss.
Es ist im aktuellen (Kauf)Zustand über die Sd21 direkt nicht möglich einzelne Servos zuzuschalten. Aber die komplette Stromversorgung der Servos kann separat erfolgen - das bedeutet man könnte sie nätürlich über einen extra Hardware schalten. Nur das PWM-Signal holt man sich dann am vorgesehen Pin der SD21 ab. GND der Servos nicht vergessen auch zu verbinden.
Ich denke auch Dein Netzteil ist zu schwach(?) - für das RPi wird mindestens 1A Leistung fürs Netzteil empfohlen, und dann sind da sicherlich nicht auch noch 18 Servos mit drin ;)
An dieser Stelle würde mich die Wlan Verbindung interessieren....
Zum Gesamtgewicht/Gewichtstest miit CD Maximalbeladug, ja das ist so eine Sache.
jaa :) Richtig erkannt, die CDs sind nur Balastgewicht um die Akkus zu simulieren, da ich noch keine habe :)
Für den RPI würde ich so ein USB-AKKU nutzen die wiegen so um die 270-350g und können den RPI Stunden am laufen halten. Was für einen Akku ich für die Servos nehme weis ich nicht, vielleicht wir das ein RC Akku, die dürften bei ähnlichen gewichten liegen. Mein Ziel ist es (wie im Gewichtstest) unter 1kg zu Bleiben, da ich sonst "Angst" habe das mir die Beine zu flexibel sind. Die verbleibenden Reserven werde ich frühestens ankratzen wenn weitere Sensoren und Elemente interessant werden können (d.H. das er schon ohne größere Probleme stabil läuft).
Die Servos würde ich extra mit Spannung versorgen. Die 5V Logikspannung kann das SD21 selbst generieren, ist aber nicht nötig wenn das RPi die auch bereit stellt (?). Dann muss nur Servoseite angeschlossen werden. Und der Jumper dementsprechen entfernt werden - sonst gibt es garantiert einen Kurzschluss.
Den Juper entfernen war das erste was ich gemacht habe :) . Da die GPIO Pins vom RPI nur 3,3V können hatte ich mir noch ein 3,3V/5V-Umwandler für den I2C bus bestelllt, da dieser aber zu lange in der Post unterweg ist, habe ich mir das Datenblatt des PIC im SD21 angeschaut und gesehen das der schon ab 2,0V arbeiten kann. Ich versorge die Logik jetzt dementsprechend direkt über den RPI mit 3,3V und es funktioniert einwandfrei.
Für ein stärkeres Netzteil muss ich mal in den Keller gehen und n bisschen rumsuchen ob ich was passenderes finde, wollte nur sicher gehen das es nicht eine Sicherung oder Ähnliches ist. Für mich als Maschinenbauer funktionieren die elektronischen Sachen immer nur mit Rauch... ...kommt der Rauch einmal raus gehts nicht mehr :cool:
An dieser Stelle würde mich die Wlan Verbindung interessieren....
Ich habe auf dem RPI momentan eine volle Version von wheezy (raspbian/Debian) installiert, da war die Einrichtung des Wlans kein Problem. Zugreifen tu ich momentan über SSH mit Putty, bzw weils bequemer ist auf den Desktop mit tightVNC. Wenn ich später mal an die Leistungsgrenze kommen sollte wird das System um mindestens der grafischen Oberfläche gestutzt, momentan ist es aber ganz praktisch.
So, der Keller hat ein starkes Netzteil für eine externe Festplatte ausgespuckt. Kann auch 12 Volt, was mir direkt die Anzahl funktionierender Servos auf 15 reduziert hat (inclusive Reserve), der Hersteller hat sich nicht an die farbcodes gehalten... *grummel*
Habe nun die Steuerung in das Gehäuse integriert. Der CDBOT hat jetzt noch zwei Kabel für die Stromversorgung, die werden aber entfernt sobald das Konto es zulässt Akkus zu kaufen.
26748
So, inzwischen läuft er auch, fast so wie er sollte. Über einen Terminal am iPad kann ich ihn auch schon einfach am iPad steuern.
Da die Beine aber handgearbeitet sind und die Servos an der Hüfte nur mit Klebeband und Gummibändern befestigt sind, variieren die Beinmaße. Auch sind die Positionen der Servos leicht verschieden, da muss ich mir mal die zeit nehmen und die Beine vermessen und Korrekturwerte ins Programm einbinden. Momentan läuft er immer eine leichte Rechtsdrehung. :(
Oder wie macht ihr das mit den ungenauen Servos? Bzgl. Abweichende nullpositionen?
Geistesblitz
01.12.2013, 14:57
Das direkteste wäre ja, einen festen Versatz auf das jeweilige Servosignal zu addieren. Wenn du also 1,5ms vorgibst (wo ein Servo eigentlich seine Mittelstellung haben sollte), er aber bei zB. 1,4ms in der Mitte steht, rechnet man einfach noch einen Versatz von -0,1ms rauf. Kommt aber auch drauf an, womit du die Servos ansteuerst und was für Daten das zu futtern haben will. Wie groß der Versatz sein muss, muss man dann für jeden Servo experimentell ermitteln.
Bei den Beinlängen hilft wohl nur genaues fertigen bzw. so fertigen, dass man noch die Möglichkeit hat, die Länge durch die Servobefestigung in kleinem Rahmen verändern zu können, zB. mit Langlöchern. Alternativ möglichst genau die Segmentlängen messen und mit denen in der IK arbeiten, allerdings musst du dann wirklich jedes Bein einzeln berechnen lassen.
Sehe es in beiden Punkten so wie Geistesblitz. Ich habe es damals bei meinem Hexa so gemacht, dass es eine Funktion gab, die über eine einfache Geradengleichung die gewünschte Stellung in Grad (hab seinerzeit aus Gründen der Anschaulichkeit nicht in Radiant gerechnet) in den Ansteuerungswert für den Timer umrechnet, über den der Puls für den Servo erzeugt wird. Der Funktion wurde neben der gewünschten Position die Servonummer übergeben, mittels derer aus einem Array die Parameter für die Geredengleichung geholt wurden. Die Parameter habe ich einfach empirisch ermittelt, nachdem das System zusammengebaut war. Durch den y-Achsen-Abschnitt der Geradengleichung wird dann der Nullpunkt eingestellt. Das entspricht natürlich dem, was Geistesblitz vorgeschlagen hat. Die mechanisch unterschiedlichen Beine würde ich auch versuchen in die IK einzubeziehen, wenn es nicht möglicht ist, genauer zu fertigen.
Gruß
Malte
Der Oberschenkel und der Unterschenkel sind eigentlich genau genug gefertigt. Nur ist der servo für den Oberschenkel auf das Servohorn an der Hüfte geklebt, das ist relativ ungenau, bin am überlegen ob ich das nochmal anfasse und mir da noch teile fertige.
Ich bin mir am überlegen ob ich mir ne cfg-file anbinde um das ganze einfacher zu konfigurieren mache ohne das ich das Programm anfassen muss, hast du oder jemand anderes in c damit Erfahrung?
Edit: ja ich denke auch das ich empirisch die Parameter ermitteln muss, hoffte nur das mir jemand einen einfacheren weg zeigt :)
Edit: ja ich denke auch das ich empirisch die Parameter ermitteln muss, hoffte nur das mir jemand einen einfacheren weg zeigt :)
Ist ja eigentlich nicht so wild. Wenn ich es richtig in Erinnerung habe, habe ich einfach für jeden Servo drei Punkte per Hand angefahren, Mitte und +/-90° (oder auch +/-45°). Das hat dann von der Genauigkeit genügt um da eine Gerade reinzulegen und damit zu arbeiten.
Gruß
Malte
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.