- 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
    So nachdem es jetzt einige Tage ruhiger war um meinen Hexa und ihr vermutlich heute schon im Fehlschlag-Thread gelesen habt, dass mir ein Servo abgeraucht ist, gibt es nun News (wie man auf altbayrisch so schön sagt).

    1) Der Servo ist komplett hin, da hilft nur noch austauschen, daher bewegt sich Bein B auch so komisch.
    2) Die inverse Kinematik ist nun vollständig implementiert.

    Was bedeutet das?
    Ich muss die Winkel der Servos nicht mehr ausrechnen sondern sie werden berechnet aus folgenden Größen:

    Translatorisch:

    dx - die x-Richtung der Fussspitze gemessen von der Hüfte
    dy - die y-Richtung der Fussspitze auch gemessen von der Hüfte.
    --> über den Atan2 wird daraus der Winkel für die Hüfte!
    --> Mit der Höhe h werden daraus die Winkel für Schulter und Fuss

    Rotatorisch:
    hbasis - die Grundhöhe des Hexas über dem Tisch
    Winkel Querachse -Rotation um die x-Achse also wie viel der Körper sich nach vorn oder hinten neigen soll
    Winkel Längsachse - Rotation um die y-Achse, also wie viel der Körper sich links oder recht neigt.
    wy - Wo sich der Drehpunkt für Q befindet auf der y Achse
    wx - Wo sich der Drehpunkt für L befindet auf der x Achse

    Was heißt das jetzt?
    Aus den beiden Winkeln Q und L mit ihrer Position lässt sich der Körper beliebig kippen um die beiden Achsen x und y (drehen um z würde über die dx und dy werte gehen), wie bei einem Flugzeug. Durch die Parameter wx und wy lässt sich der Drehpunkt an eine beliebige Stelle auf dem Roboter (oder auch außerhalb) verschieben und so um jeden Punkt kippen.

    Ich verstehs immer noch nicht?
    Dann schaut euch das Video an:



    Wie gesagt Bein B (das Mittlere rechts) hat einen defekten Schulterservo.

    Die Kunst daran ist zum einen die reinen Formeln in Mathe aufzustellen, hier reicht aber Sinus, Tangens und Cosinus Wissen aus. Danach muss man diese Formeln schön im Programm umsetzen, was deutlich aufwendiger ist, da hier die Syntax des Programms zum tragen kommt:
    Beispiel für Bein A
    Code:
      dQ := math.Sin(math.Radians(wQ))
      dL := math.Sin(math.Radians(wL))
    
      dhAF  :=  math.FMul(dQ, math.FSub(+230.0, -wy))   
      dhABC :=  math.FMul(dL, math.FSub(-110.0, -wx)) 
      hA := math.FAdd(hBasis, dhAF)
      
    '~~~~~ BERECHNUNG SERVOWINKEL ALPHA GAMMA PHI 
      '----- Länge von Bein A ---- 
      ca_2 := math.FAdd(math.FMul(hA, hA), math.FMul(rA,rA))
      ca   := math.FSqr(ca_2)
      '----- Winkel von Hüfte A0 ----  
      phi := math.Degrees(math.Atan2(xA, yA))
      phi := math.FAdd(math.FMul(math.FSub(phi, 5.0), 8.0), 809.0) 
      Aziel[0] := math.FRound(phi)
      Aziel[0] := Aziel[0] +0
      '----- Winkel Schulter A1 ----
      alpha_P  := math.ATan(math.FDiv(rA, hA))
      alpha_PP := math.ACos(math.FDiv(math.FAdd(aa_m_bb, ca_2), math.FMul(ax2, ca)))
      alpha    := math.Degrees(math.FAdd(alpha_P, alpha_PP) )
      Aziel[1] := math.FRound(math.FAdd(math.FMul(math.FSub(alpha, 5.0), 8.0),809.0))  
      Aziel[1] := Aziel[1] - 60
      '----- Winkel Fuss A2 ----
      gamma    := math.ACos(math.FDiv(math.FSub(aa_p_bb, ca_2), abx2))
      gamma    := math.Degrees(gamma) 
      gamma    := math.FAdd(math.FMul(math.FSub(gamma, 5.0), 8.0), 809.0) 
      Aziel[2] := math.FSub(2910, math.FRound(gamma))
      Aziel[2] := Aziel[2] +80
    Hier hilft es die Berechnung in Excel aufzubauen mit einer grafischen Darstellung zu prüfen ob das überhaupt funktionieren kann bzw. was bei den Werten herauskommen muss. Leider habe ich keine Möglichkeit die Werte nach der Berechnung am Hexa ausgeben zu lassen, da er kein Display oder eine Schnittstelle dafür hat.



    Noch Fragen?
    Geändert von HannoHupmann (04.09.2013 um 21:36 Uhr)

  2. #2
    Moderator Robotik Einstein Avatar von HannoHupmann
    Registriert seit
    19.11.2005
    Ort
    München
    Alter
    42
    Beiträge
    4.534
    Blog-Einträge
    1
    Hat jemand eine Idee wie man die Bahnkurve bzw. Trajektorie implementiert?

  3. #3
    Erfahrener Benutzer Robotik Einstein Avatar von Geistesblitz
    Registriert seit
    15.03.2011
    Ort
    Dresden
    Alter
    38
    Beiträge
    1.937
    Welche Bahnkurve meinst du jetzt? Das Vorranheben des Beines oder meinst du allgemein?

  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
    Das was du meinst ist die inverse Kinematik, die ist nun nahezu vollständig implementiert. Was ich jetzt Suche ist die sogenannte Bahnkurve. D.h. die Trajektorie bei der sich der Roboter von A nach B bewegt. Also von einem Ausgangspunkt zu einem Zielpunkt und diesen Weg muss ich irgendwie in der Mathematik abbilden.

    - - - Aktualisiert - - -

    Das was du meinst ist die inverse Kinematik, die ist nun nahezu vollständig implementiert. Was ich jetzt Suche ist die sogenannte Bahnkurve. D.h. die Trajektorie bei der sich der Roboter von A nach B bewegt. Also von einem Ausgangspunkt zu einem Zielpunkt und diesen Weg muss ich irgendwie in der Mathematik abbilden.

  5. #5
    Erfahrener Benutzer Roboter Genie Avatar von HeXPloreR
    Registriert seit
    08.07.2008
    Ort
    Soltau - Niedersachsen
    Alter
    46
    Beiträge
    1.369
    Ich würde es versuchen so zu lösen das man den Anfangspunkt und den Zielpunkt (A-Z) als Variablen, dann den Weg dazwischen in die kleinste Einheit zerlegen die die Beine sich bewegen können und dann solange auf den Anfangstpunkt aufaddieren bis man den Zielpunkt erreicht hat. Sollte auch für Koordinaten funktinieren. Habe ich selbst sovor, aber noch nicht umgesetzt. Daher ist es erstmal nur ne Idee.

  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
    Meine Gedanken gehen in eine ähnliche Richtung. D.h. ich habe eine Aktuelle Ist Position definiert durch x=0, y=0, und Drehwinkel alpha = 0° und eine Zielposition mit z.B. x = 150cm, y = 150cm, alpha 45°. Damit müsste der Roboter dann 150cm nach vorn und 150cm nach rechts laufen (translatorisch) und dabei die Orientierung des Körpers um 45° drehen (rotatorisch). Soweit so gut. Einziges Problem was ich bisher noch habe ist, wie ich die Wegstrecke sinnvoll in Schritte unterteile, denn die Zielpositionen können unterschiedlich weit entfernt sein und daher in variablen Anzahl von Schritten erreicht werden, die Anzahl gilt es irgendwie sinnvoll zu bestimmen.

  7. #7
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    12.04.2008
    Alter
    40
    Beiträge
    557
    Mir fehlt es an Erfahrung in diesem Bereich aber manchmal können Ideen von "Unwissenden" ja ein Anstoß für die eigene Lösung sein

    Als Bezug würde ich das mittlere Beinpaar wählen, um die Bewegungen des vorderen, bzw. hinteren, Beinpaares davon abzuleiten.

    Den Bogen, den das kurvenäußere Bein zurücklegt, würde ich in Bogensehnen unterteilen. Die Länge dieser Sehnen könnte die maximal zurücklegbare Strecke des Beins bei einer Bewegung sein, aber kleiner um auf den Untergrund angepasst eine bessere Mobilität zu erziehlen (auf ebener Fläche sind keine Steine oder Löcher zu erwarten).

    Die Länge der ermittelten Sehnen würde ich im Verhältnis äußere Kurvenbahn zu innerer Kurvenbahn verkürzen um mit der gleichen Anzahl Schritten den benötigten Weg zurück zu legen. Wenn ein Mensch um eine Kurve läuft hebt er ja auch immer abwechselnd die Füße und macht unterschiedlich große Schritte.

    Auf Basis dieser Bewegungen müsste man dann die Bewegungen der verbleibenden vier Beine errechnen. Ich denke, es sollen immer drei Beine Bodenkontakt haben (Mitte links + Vorne/Hinten Rechts oder umgekehrt)
    Alles ist möglich. Unmögliches dauert nur etwas länger!

Ä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