[Projekt] Hexapod braucht Hilfe beim Laufen lernen

  • Hi,

    ich habe mir einen Hexapod konstruiert, gedruckt und zusammen gebaut.
    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 -

    Einmal editiert, zuletzt von YellowWind32201 (24. Juli 2017 um 19:16)

  • [Projekt] Hexapod braucht Hilfe beim Laufen lernen? Schau mal ob du hier fündig wirst!

  • 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.
    Linux ist zum Lernen da, je mehr man lernt um so besser versteht man es.

  • Hallo Bernd,

    Servo's 1-6 sind am Rahmen und sind für die Vorwärts-/Rückwertsbewegung. Mittelstellung ist Ausgangsposition.
    IMG_0149.JPG?dl=1IMG_0148.JPG?dl=1IMG_0150.JPG?dl=1
    Servo's 7-12 heben die Beine. Mittelstellung ist auch hier wieder die Ausgangsposition.
    IMG_0146.JPG?dl=1IMG_0145.JPG?dl=1IMG_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.
    Linux ist zum Lernen da, je mehr man lernt um so besser versteht man es.

  • 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.

    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

  • Verstehe ich das richtig: Du willst alle Beine nacheinander nach vorne bewegen und erst am Schluß alle gemeinsam in die Ausgangsposition bringen? Hieße das nicht, daß sich der Roboterkorpus erst im letzten Schritt überhaupt bewegt? Und hast Du nicht Angst, daß er Dir vorher auf den Hintern fällt?

  • 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.

  • Kannst Du im letzten Schritt nicht alle Beine gleichzeitig an ihre Ausgangsposition zurücksetzen? Ansonsten wird doch vermutlich auch mit größerer Auflagefläche das eine Bein, das sich gerade bewegt, gegen die fünf anderen, die das nicht tun, verlieren, oder?

  • 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 ->

    Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne deine Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklärst du dich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.

    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,

    Zitat von "oldster" pid='290863' dateline='1499966045'


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

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

    Zitat von "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.

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!