- 12V Akku mit 280 Ah bauen         
Ergebnis 1 bis 10 von 343

Thema: .: Vinculum :. - Hexabot

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Moderator Robotik Einstein Avatar von HannoHupmann
    Registriert seit
    19.11.2005
    Ort
    München
    Alter
    42
    Beiträge
    4.534
    Blog-Einträge
    1
    @robin schon richtig, das hab ich versucht mit der Analogie zu einem Industrieroboter zu zeigen. Bei dem wäre es in der Tat einfach: ein Tool-Center-Point (TCP) wird in relation zum Basis Koordinaten System bewegt. Dabei wird die Bewegung als Verschiebung und Rotation des TCP dargestellt. Die Bahn auf der sich der TCP von A (Ausgangspunkt) zu B (Endpunkt) bewegt wird als Bahnkurve bezeichnet. Diese kann im einfachsten Fall eine Gerade sein oder eine komplexe Kurve. Die eigentliche Bewegung wird nun beliebig viele kleine Teilschritte zerlegt (interpoliert) und an die Inverse Kinematik des Roboters übergeben und mit hilfe der DH-Matrix die Gelenkwinkel berechnet. Dazu kommt noch deine erwähnte Vorgabe der Geschwindigkeit. Soweit ist das für Industrieroboter auch recht verständlich. Für eine Geradeausbewegung eines Hexapods könnte ich das gleiche Prinzip anwenden. Ich hatte eben keinen TCP sondern eine Fussspitze die auf einer Geraden entlang geführt wird und über die IK kann ich jeden einzelnen Servowinkel berechnen. Das ganze für 6 Beine mit unterschiedlichen Geraden wenn es keine Bewegung "gerade aus" ist. So hab ich es bisher bei meinem Phoenix² gemacht und es funktioniert auch gut. Vorgabe der Richtung + Anzahl der Schritte + konstante Geschwindigkeit oder Vorgabe der der x,y Koordinaten des Drehpunkts + Wieviel Grad um den Drehpunkt gedreht werden soll + Konstante Geschwindigkeit. Allerdings konnte ich immer nur eine Vorgabe verarbeiten und ein Schritt bestand aus einer definierten Länge die nicht unterschritten werden konnte.

    Jetzt möchte ich das ganze etwas komplexer machen:
    1) Die Länge eines Schritts soll sehr viel kleiner werden
    2) Die Lage des Körpers soll wärend der Schritte ausgeglichen werden
    3) Die Füsse sollen selbst entscheiden wann der Fuss gehoben wird und wieder an den Anfang gefahren wird.
    4) Alle Beinbewegungen sollen unabhängig voneinander parallel laufen

    Im Prinzip kann der Roboter eine Bewegung vollführen die ihn sagen wir 1m gerade aus laufen lässt und dabei eine vollständige Drehung des Körpers um 360° durchführt. D.h. die translatorische und rotatorische Bewegung überlagern sich. Dabei stosse ich auf zwei Probleme:
    A) Wie erzeuge ich eine Bahnkurve die genau diese Bewegung dar stellt
    B) Wie müssen die daraus resultierenden Bahnkurven für die Beine 1 bis 6 aussehen
    C) Wie übergebe ich die resultierenden Bahnkurven an die Inverse Kinematik der Beine
    D) Wie kann ich berücksichtigen, dass die resultierende Bahnkurve bei jedem Schritt durch die Lageregelung des Roboters verändert wird

    Bisher habe ich auf Videos zu Hexas immer nur gesehen wie die Bewegungen nacheinander gemacht werden und nicht gleichzeitig. Es müsste aber auch möglich sein, dass alles gleichzeitig passiert und mein Anspruch für das Vinculum ist kein geringerer.


    Anderes Thema:
    Gewicht: Gerade habe ich mein Hexabot gewogen und er bringt jetzt mit Akkus und allem 2,8kg auf die Waage. D.h. bei 4 Beinen 0,7kg pro Bein bzw. 0,7kg*g =7N . Die Oberschenkellänge beträgt 14,5cm und damit ergib sich ein Drehmoment von 101,5Ncm was für meine Servos zuviel ist da die nur 73Ncm schaffen. Also heißt es nun entweder auf 5 Beine am Boden gehen und dann würden es immernoch 81,2Ncm sein oder stärkere Servos verwenden. Alternativ: Diät und >0,8kg abnehmen! Zumindest wenn ich weiter den vollen Arbeitsraum ausnutzen möchte.

    Wird der volle Arbeitsraum nicht ausgenutzt und wie geplant die Beine nur im 45° Winkel eingesetzt verändert sich der Abstand von Schulter zu Fusspunkt auf 10,25cm womit der Schulterservo gerade so 71,75Ncm benötigt was ganz knapp unter den 73Ncm bleibt. Da ich aber noch etwas Gewicht zuladen muss (Sensoren, Platinen weitere Komponenten) bleibt mir wohl nur die Lösung mit besseren Servos und Gewicht abnehmen.

  2. #2
    Erfahrener Benutzer Roboter Experte Avatar von ikarus_177
    Registriert seit
    31.12.2007
    Ort
    Grein
    Alter
    32
    Beiträge
    601
    Hallo,

    3) Die Füsse sollen selbst entscheiden wann der Fuss gehoben wird und wieder an den Anfang gefahren wird.
    Ich nehme an, die Schritte werden trotzdem zentral koordiniert werden? Ansonsten könnte es ja zu Problemen kommen, wenn etwa die beiden hintersten Beine gleichzeitig der Meinung sind, einen Schritt machen zu müssen?

    A) Wie erzeuge ich eine Bahnkurve die genau diese Bewegung dar stellt
    Alles was du brauchst, sind Transformationen, die dir aus der Position des Robotermittelpunkts und den drei Winkeln, die die Drehungen des Körpers beschreiben, die Positionen der einzelnen Befestigungspunkte der Beine berechnet. Dann kannst du ja mit mehr oder weniger Standard-IK die Servowinkel bei bekanntem Fußpunkt berechnen.

    D) Wie kann ich berücksichtigen, dass die resultierende Bahnkurve bei jedem Schritt durch die Lageregelung des Roboters verändert wird
    "Bahnkurve" klingt für mich viel zu sehr nach "Berechnung vor Ausführung". Wenn du hingegen für jeden Punkt die Servowinkel nacheinander berechnest (z.B. du veränderst für eine Vorwärtsbewegung die X-Koordinate schrittweise um ein gewisses delta) und für die Lageregelung statt der Soll- die Istwinkel verwendest, sollte alles möglich sein.

    Schöne Grüße

  3. #3
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    26.11.2004
    Beiträge
    451
    Die Bewegung sollte doch theoretisch kein Problem sein, Du hast ja 2 Koordinatensysteme:

    1. Das des Raumes in dem du dich Bewegst
    2. Das des Roboters
    (3-9). Die der einzelnen Beine, sind aber Ausschnitte von 2.

    Das erste System gibt die Bewegung deines Torsos in X,Y,Z Richtung und die Ausrichtung des Roboters angegeben. Es wird ein Vektor zwischen der Aktuellen Position des Roboters und dem Zielpunkt gespannt (theoretisch sind hier auch Kurven möglich). Also wie wenn sich der Roboter auf einer Karte von Punkt A nach Punkt B bewegen würde und in Richtung Süden schaut.

    Jetzt wird ein kleines Teilstück der Bewegung ins zweite System umgewandelt. Dieses liegt um alle Achsen gedreht im ersten System und dem entsprechend wird das Teilstück von System 1 in 2 umgewandelt. Jetzt können auf dieses Teilstück in System 2 die Korrekturmaßnahmen (vom vorherigen Teilstück) aufaddiert werden. Und diese Ergebnisse werden dann als delta X, delta Y,..... an die IK übergeben.

    Die IK von jedem Bein wird zum Mittelpunkt des Torsos berechnet.

    Die Randbedingungen von den Teilstücken werden durch die Maximalgeschwindigkeit des Roboters (evtl auch Minimalgeschwindigkeit wegen Rundungsfehlern als Drehung um 0,00001° pro step) bzw einer Vorgegebenen Geschwindigkeit festgelegt.


    Damit sollten alle deine Bedingungen erfüllt sein und auch das laufen einer Kurve müsste machbar sein, solange die Teilstücke nicht zu groß sind, sonst wirds ein Dreieck .
    Vorteil von dem Ganzen, du hast eine einfach Schnittstelle mit dem ersten Koordinatensystem auf dem Sogar noch Mapping integriert werden kann etc.

    Frage bleibt die Aufteilung zwischen den Controllern. Die Beste Möglichkeit wird wohl sein, IK und Servoansteuerung auf einen Controller und alles was zur Berechnung der Lage und das addieren des Korrekturfaktors auf das "Gehirn" zu verteilen.
    Dadurch bleibt dein IK+Servocontroller System fertig und muss "nie mehr" verändert werden (wers glaubt ). Die ganzen Änderungen im Code werden dann nur im "Gehirn" notwendig, bedeutet, hast du z.B. einen anderen Beschleunigungssensor zur Korrektur Berechnung verwendest muss an der IK nichts mehr geändert werden

  4. #4
    Moderator Robotik Einstein Avatar von HannoHupmann
    Registriert seit
    19.11.2005
    Ort
    München
    Alter
    42
    Beiträge
    4.534
    Blog-Einträge
    1
    @Ikarus_177 den Ansatz haten wir ein paar Beiträge weiter vorn auch schon diskutiert und an dem werde ich auch festhalten. Bahnkurve bedeutet in der Tat vorberechnet, da es ja eine Zentrale Vorgabe geben muss wohin der Roboter laufen soll. Das würde ich als die "Bahnkurve" definieren (sprich einen Meter gerade aus und dabei eine 360° Drehung). Allerdings ändert sich die Lage des Roboters wärend der Bewegung immer wieder so, dass diese "Vorberechnung" nur teilweise gültig ist und der Weg der zurück gelegt wird in entsprechende viele Teilstücke zerlegt ist. So wie du das mit dem dx, dy gemacht hast nur dass es bei mir noch ein dh (Höhe) geben wird für jeden "Schritt"
    Dein Einwand mit beide Beine hinten oder beide Beine vorne ist richtig und muss entsprechend im Programm verhindert werden, ich weis nur noch nicht ob das Zentral oder Lokal passiert.

    @robin
    Genau so denke ich dass es in der theorie funktionieren könnte. Das ist im Endeffekt ziemlich ähnlich zu dem was Ikarus_177 beschrieben hat. Die Bewegung im Raum wird zerlegt in Teilschritte und dann in Servobewegungen umgerechnet.

    Langsam ergibt sich auch für mich ein Bild wie es aussehen könnte und schwierig wird es nun nur das ganze theoretische Gebilde in einen funktionierenden Code umzusetzen (insbesondere der Mathematik) und dann auf meine µC Struktur zu verteilen.

    Ich verwende wieder (wie bei meinem Phoenix²) einen Propeller Chip von Parallax der hat 8 µC integriert die alle unabhängig voneinander arbeiten können und sich einen gemeinsamen Memory Pool teilen.
    Im Moment denke ich, dass jeder Cog (so nennen die die einzelnen µC) ein Bein bekommt und damit zwei Cogs übrig bleiben für die zentrale Berechnung der Bewegung.
    Da die Cogs auf einen gemeinsamen Memory Pool zugreifen können sie hier ohne Probleme ihr dx, dy und dh Werte abholen und selbstständig in die Servowinkel s0, s1 und s2 Umrechnen und ausführen. Nach jedem dx, dy, dh Schritt warten sie auf neue Werte oder halten die Position. Außerdem könnte jeder Cog selbst prüfen ob die Übergabewerte in Ordnung sind oder zu illegalen Servowinkeln führen (Berechnungsfehler) würden. Auch die Regelung, dass sich die Beine vorn oder hinten nicht gleichzeitig vom Boden abheben, sollte hier erfolgen.

    Der Charm dieses µC sind wirklich die 8 unabhängig und echt parall arbeitenden Kerne. Bei meinem Phoenix² arbeite ich teilweise parallel, dort berechnet Cog1 die Bewegungen und Cog6 bewegt alle rechten Beine und Cog7 alle Linken. Abgesehen davon unterstützt die Programmiersprache inline Assembler Code, so dass man alles was "schnell gehen soll" in Assembler programmieren kann und alles übrige in SPIN. Achja eine sehr umfangreiche Tabelle mit Cosinus Werten ist auch schon fest implementiert, das heißt er berechnet den Wert nicht sondern schaut einfach nach, was gerade für diese Anwendung im Hexa sehr praktisch ist.


    PS: Neue Servos für die Schultern hab ich trotzdem noch gekauft, um nicht in Probleme mit dem Drehmoment zu laufen, denn 73Ncm bei einer Belastung von 72Ncm im 45° Winkel fand ich dann doch zu kritisch. Daher gibt es jetzt einen Satz 142Ncm Servos (Zudem noch Digitale und keine Analogen) für die Schultern, womit selbst bei 90° ausrechend Leistung zur Verfügung steht und der Roboter auf ein Maximalgewicht von 3,9kg kommen dürfte (vier Beine immer am Boden).

  5. #5
    Benutzer Stammmitglied Avatar von Chaosmann
    Registriert seit
    02.07.2009
    Ort
    Saulheim
    Alter
    44
    Beiträge
    74
    Zitat Zitat von HannoHupmann Beitrag anzeigen
    ... Bisher habe ich auf Videos zu Hexas immer nur gesehen wie die Bewegungen nacheinander gemacht werden und nicht gleichzeitig. Es müsste aber auch möglich sein, dass alles gleichzeitig passiert und mein Anspruch für das Vinculum ist kein geringerer....
    Hi Hanno,

    die Hexabots, die auf den Lynxmotion-Sets aufbauen, können rein von der Programmierung alles gleichzeitig ausführen. Das Problem bei denen ist nur das das Gamepad nicht genug Achsen hat.
    Ich selbst verwende in meinem Mendel eine abwandlung von dem Code in Kombination mit Computerjoysticks. Laufen, den Körper um die Achsen drehn und kurven laufen gleichzeitig ist hier problemlos möglich.

    Zum Beispiel kann man um ein Hinternis in einem Bogen herumlaufen und den Kopf des Bots immer auf das Hindernis gerichtet lassen.

    Gruß
    Daniel
    Das Genie beherrscht das Chaos.
    ICH bin das Chaos!

  6. #6
    Moderator Robotik Einstein Avatar von HannoHupmann
    Registriert seit
    19.11.2005
    Ort
    München
    Alter
    42
    Beiträge
    4.534
    Blog-Einträge
    1
    Gestern sind endlich meine Platinen gekommen um die LED Treiber zu testen. D.h. ich kann auch an der Front endlich weiter machen. Auch wenn ich immernoch keine Methode gefunden habe die LED Streifen so zu befestigen, dass sie ordentlich aussehen.

    Die neuen Servos sind aus HongKong auf dem Weg zu mir, leider meldet sich der Horst nicht, der die neuen Teile fräsen sollte. Hoffe mal der ist nur im Urlaub, nicht dass ich mir eine neue Quelle suchen muss.

  7. #7
    Moderator Robotik Einstein Avatar von HannoHupmann
    Registriert seit
    19.11.2005
    Ort
    München
    Alter
    42
    Beiträge
    4.534
    Blog-Einträge
    1
    Die Platinen sind leider mit einem falschen Pad Abstand für meine Chips. Noch dazu bekomm ich es einfach nicht hin den Y59116F dazu zu animieren irgendwas zu tun. Falls sich jemand mit I2C gut auskennt und mir helfen kann, hier ist der dazu passende Thread in dem ich mein Leid schilder:
    https://www.roboternetz.de/community...554#post568554

  8. #8
    Moderator Robotik Einstein Avatar von HannoHupmann
    Registriert seit
    19.11.2005
    Ort
    München
    Alter
    42
    Beiträge
    4.534
    Blog-Einträge
    1
    Es hat nur drei Tage gedauert um heraus zu finden wie ich den Chip ansteuern muss. Das waren zwar ordentlich Nerven aber es zeigt sich wieder, dran bleiben lohnt sich!

  9. #9
    Moderator Robotik Einstein Avatar von HannoHupmann
    Registriert seit
    19.11.2005
    Ort
    München
    Alter
    42
    Beiträge
    4.534
    Blog-Einträge
    1
    Jetzt muss ich nur noch jemand finden der mit die Hauptplatine fertigen kann, Problem dabei, SMD und Doppelseitig. Außerdem kann ich sie nicht selber bohren wegen fehlender Mittel.

    Die Umbauteile für die neuen Servos sind unterwegs und die Servos kommen hoffentlich auch bald, dann kann ich endlich voll in die Programmierung einsteigen.

  10. #10
    Moderator Robotik Einstein Avatar von HannoHupmann
    Registriert seit
    19.11.2005
    Ort
    München
    Alter
    42
    Beiträge
    4.534
    Blog-Einträge
    1
    Hier für alle Fans (falls es überhaupt noch welche gibt) meines Projekts ein kleines Goodie

    https://sketchfab.com/show/v7D765sOOqhO73cLdnfkpDpEEC7

    Viel Spass beim ansehen. Der Stand ist leider nicht mehr ganz aktuell da ich schon wieder ein wenig daran herumgebaut habe.
    Geändert von HannoHupmann (24.01.2013 um 10:03 Uhr)

Ähnliche Themen

  1. CFK Hexabot
    Von MichaF im Forum Vorstellungen+Bilder von fertigen Projekten/Bots
    Antworten: 14
    Letzter Beitrag: 19.08.2010, 22:03
  2. atmega und Vinculum
    Von elcomportal im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 0
    Letzter Beitrag: 27.05.2008, 22:47
  3. hexabot
    Von patrickgera im Forum Allgemeines zum Thema Roboter / Modellbau
    Antworten: 11
    Letzter Beitrag: 29.04.2008, 22:09
  4. LVProg - Linux Vinculum (USB Hostcontroller) Programmer
    Von Surveyor im Forum Open Source Software Projekte
    Antworten: 0
    Letzter Beitrag: 01.11.2007, 03:08
  5. Hexabot
    Von Derboss im Forum Vorstellung+Bilder+Ideen zu geplanten eigenen Projekten/Bots
    Antworten: 36
    Letzter Beitrag: 22.09.2007, 11:32

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

12V Akku bauen