[Projekt] Hexapod braucht Hilfe beim Laufen lernen

  • Hi,


    ich habe mir einen Hexapod konstruiert, gedruckt und zusammen gebaut.
    [Blocked Image: https://www.dropbox.com/s/qrlecz7bbuot6as/IMG_0144.JPG?dl=1]


    Verbaut wurden:
    Raspberry Pi 3
    Adafruit 16x Servo HAT
    SunFounder Lithium Battery Pack (Raspberry)
    4x Mignon (Servo's)
    12x SG90 Servo


    Der kleine bringt 650 Gramm auf die Waage :)


    Jetzt kommt der Moment wo ich trotz google nicht weiter komme. :s


    In welcher Reihenfolge müssen sich die Beine, z.B. beim vorwärts Gehen bewegen?


    google geht mir das Thema zu wissenschaftlich an. Ausserdem habe ich nur 12 Servo's und keine 18. Mir fehlt also ein Gelenk :(


    Ich würde mich über hilfreiche Beiträge von Euch freuen.


    Es geht mir nicht um fertigen code - schreiben würde ich das Ganze in Python -

    Edited once, last by oldster ().

  • Moin oldster,


    tolle Arbeit!!


    Das Teil hat 6 Beine?
    2 vorne und 2 hinten. Und jeweils ein Bein an der Seite?
    Was machen deine Servos? Heben, Senken, Vorwärts und Rückwärts.


    Ich denke das sind erstmal die Grundfragen.


    Gruss Bernd

    Ich habe KEINE Ahnung und davon GANZ VIEL!!
    Bei einer Lösung freue ich mich über ein ":thumbup:"

    Vielleicht trifft man sich in der RPi-Plauderecke.

  • Hallo Bernd,


    Servo's 1-6 sind am Rahmen und sind für die Vorwärts-/Rückwertsbewegung. Mittelstellung ist Ausgangsposition.
    [Blocked Image: https://www.dropbox.com/s/r44y0gxuo503cya/IMG_0149.JPG?dl=1][Blocked Image: https://www.dropbox.com/s/6z71yuq51mvojx6/IMG_0148.JPG?dl=1][Blocked Image: https://www.dropbox.com/s/sx23bv9xm02ouev/IMG_0150.JPG?dl=1]
    Servo's 7-12 heben die Beine. Mittelstellung ist auch hier wieder die Ausgangsposition.
    [Blocked Image: https://www.dropbox.com/s/eu29u36qck4ihjm/IMG_0146.JPG?dl=1][Blocked Image: https://www.dropbox.com/s/m0tly14wyhilb9w/IMG_0145.JPG?dl=1][Blocked Image: https://www.dropbox.com/s/b2m1hzr7sv1fd0a/IMG_0147.JPG?dl=1]


    Die Aufteilung währe so:


    Servo 1+7 - vorne links
    Servo 2+8 - Mitte links
    Servo 3+9 - hinten links


    Servo 4+10 - hinten rechts
    Servo 5+11 - Mitte rechts
    Servo 6+12 - vorne rechts


    Gruß Wilfried

  • Ich habe zugegebenermaßen keine Ahnung und mich noch nie mit dem Thema beschäftigt - ich denke aber, daß man sich da auch experimentell rantasten kann. Als ersten Versuch würde ich mal so vorgehen:


    1. Li vorne, Li hinten und rechts Mitte anheben
    2. Diese drei nach vorne, die anderen Beine nach hinten bewegen
    3. angehobene Beine absetzen
    4. die anderen Beine anheben
    5. weiter bei 2.


    Interessant wird's sicherlich, wenn Du auch die Richtung ändern willst. Das würde ich aber erst als zweiten Schritt angehen.


    Spannendes Projekt, halt uns auf dem Laufenden!

  • Moin oldster,
    danke für die Bilder.


    Ich frage mich gerade, brauch das Teil die mittleren Beine zum Stehen?


    Dann könnte man es so laufen lassen, wie es Tiere machen. Z.B.: Vorne rechts vor und hinten links vor usw.


    Wenn es aber die mittleren Beine zum Stehen braucht... Experimental ausprobieren welches Bein kann ich heben, ohne das das Teil umfällt.


    Ist so in der Theorie schwer abzuschätzen.


    Aber auch ich möchte darüber meht hören. Berichte bitte.


    Gruss Bernd

    Ich habe KEINE Ahnung und davon GANZ VIEL!!
    Bei einer Lösung freue ich mich über ein ":thumbup:"

    Vielleicht trifft man sich in der RPi-Plauderecke.

  • Hi,
    da mein Hexapod jetzt schon 650 Gramm wiegt - es sollen ja auch noch einige Sensoren angebaut werden - fällt der "3 Bein" Gang leider weg.
    Ich habe mir jetzt folgende Schrittfolge überlegt.


    [Blocked Image: https://www.dropbox.com/s/i3ju0b3ebbyanns/HexaPod.png?dl=1]


    [font="Helvetica Neue"]7 - 1 -7 - 12 - 6 - 12 - 8 - 2 - 8 - 11 - 5 - 11 - 9 - 3 - 9 - 10 - 4 - 10 - 1 - 6 - 2 - 5 - 3 - 4[/font]


    [font="Helvetica Neue"]7 - anheben[/font]
    [font="Helvetica Neue"]1 - nach vorne[/font]
    [font="Helvetica Neue"]7 - absetzen[/font]
    [font="Helvetica Neue"]12 - anheben[/font]
    [font="Helvetica Neue"]6 - nach vorne[/font]
    [font="Helvetica Neue"]12 - absetzen[/font]
    ....
    1 - 6 - 2 - 5 - 3 - 4 wieder auf Startposition bewegen


    Ich werde mich am WE an die Programmierung setzen. Mal schauen was dabei rauskommt :D

  • So ist mein Plan :D


    Hier mal mein Programm dazu:


    Funktioniert wunderbar.....nur bewegen tut er sich nicht =(


    Das einzelne Umsetzen der Beine klappt ohne das der "Kleine" sich auf den Hintern setzt. Aber im letzten Schritt haben die Beine zu wenig Grip
    Sie rutschen an ihre alte Stelle wieder zurück.


    Ich werde die Auflagefläche vergrößern und mit Moosgummi bekleben.

  • Servus,
    ich habe den Eindruck, dass die Steuerung noch Optimierungs-Potential hat. Es sieht so aus als würden vier Beine quasi stehen und zwei versuchen das Teil zu bewegen.
    Ich würde mir da als Anregung mal eine Zeitlupen-Aufnahme eines laufenden Käfers suchen ...
    Sieht aber irgendwie schon spacig aus ... ;)


    //EDIT: ich hab' hier ein Video gefunden ->

    External Content www.youtube.com
    Content embedded from external sources will not be displayed without your consent.
    Through the activation of external content, you agree that personal data may be transferred to third party platforms. We have provided more information on this in our privacy policy.

    Ich glaube, da sieht man den Bewegungsablauf recht gut ...


    cu,
    -ds-

  • Die Mini Servo's SG90 sind einfach zu schwach, oder die 4 Mignon Zellen bringen nicht genug Leistung für 12 Servo's.
    Ich schau mal, dass ich noch eine annehmbare Schrittfolge hinbekommen und überlege mir dann, ob ich noch Geld für stärkere Servo's ausgebe.

  • Servus,
    das wäre schon prima, wenn Du da weitermachen würdest. Jetzt bist Du schon so weit gekommen ...


    Ich würde da jetzt anfangs mal das Anfahren der Positionen der Servos in einer Schleife machen, als direkt den Endpunkt anzugeben. Wenn Du dann den Ablauf noch mit kurzen delays etwas verzögerst, dann bewegen sich die Servos schon mal nicht mehr so ruckartig.
    Das macht es imho einfacher, die einzelnen Bewegungsabläufe aufeinander abzustimmen, denn ich denke, dass sich immer alle sechs Servos bewegen müssten. Dann würden die kleinen SG90 evtl. auch ausreichen.


    cu,
    -ds-

  • @[font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]dreamshader[/font]


    [font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]Ich habe mir auch dein verlinktes Video mehrmals angesehen.[/font]


    [font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]Ein wesentlicher Unterschied bei der Bewegung ist das 3. Servo pro Bein. [/font]


    [font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]Wenn ich das jetzt mal erklären [/font][font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]könnte :s [/font]


    [font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]Durch das 3. Servo rotiert das Bein bei der Vorwärtsbewegung um seinen Auflagepunkt.[/font]


    [font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]Bei meiner Konstruktion ist das leider so, als wenn sich eine Wasserschildkröte auf Land bewegt. :lol: Die Beine bewegen sich im Radius nach hinten. Kostet Kraft und sieht nicht elegant aus.[/font]


    [font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]Danke für den Tip mit der Schleife. Mal sehen, ob ich das hinbekomme.[/font]


    [font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]Wo ich auch noch ein Problem sehe, ist, dass ich die Servo's nicht gleichzeitig Ansteuern kann. [/font]

  • Hi,

    Quote from "oldster" pid='290863' dateline='1499966045'


    ... als wenn sich eine Wasserschildkröte auf Land bewegt. ...


    ah, ok ... das macht die Sache natürlich schwieriger ...


    Quote from "oldster" pid='290863' dateline='1499966045'


    Wo ich auch noch ein Problem sehe, ist, dass ich die Servo's nicht gleichzeitig Ansteuern kann. ...


    Na das sollte doch auch in Python gehen.
    Ich sag' jetzt mal das "böse" Wort: globale Variablen ...
    Wenn Du jedem Servo einen thread spendierst und die jeweilige Anfahrposition zentral berechnest und setzt, dann fährt der thread beim Erkennen einer Bewegung (Position ändert sich) diese an ... feddisch ...


    cu,
    -ds-

  • oldster:


    Du hast natürlich recht, ein gewisses Rutschen wirst Du mit Deiner Konstruktion nicht verhindern können, weil sich die Beine beim vor- und zurückbewegen zwangsläufig auch orthogonal zur gewünschten Laufrichtung bewegen. Trotzdem denke ich, daß Du einen besseren Weg finden kannst, als immer mit zwei Beinen gegen den Widerstand der vier anderen anzuschieben. Wenn Du Dir das von dreamshader verlinkte Video anschaust, wirst Du feststellen, daß die Bewegung der Beine gar nicht so weit von meinem ersten Vorschlag entfernt ist. Ich an Deiner Stelle würde tatsächlich noch mal versuchen, das umzusetzen. Fine tuning kann man dann immer noch betreiben.

  • Inspiriert von dem Video wird es am WE ein Update von meinem Chassis geben.


    Es werden jeweils 3 Servo's (linke/rechte Seite) auf einer Linie liegen. Gerade die vorderen bzw. hinteren Beine haben mehr einen Radius geschlagen, als für den Vortrieb gesorgt.

  • Ich denke, die Position der Servos ist relativ egal - wichtig ist eher die Ausrichtung. Idealerweise sollte in Ruhestellung das Bein senkrecht zur Seite wegstehen. So bekommst Du die kleinste Querbewegung beim Vor- und Zurückbewegen. Ganz ohne wirst Du's ohne zusätzlichen Servo (oder aufwendige Konstruktion) nicht hinbekommen.