- 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
    Erfahrener Benutzer Roboter Experte Avatar von ikarus_177
    Registriert seit
    31.12.2007
    Ort
    Grein
    Alter
    32
    Beiträge
    601
    Ich verstehe die Frage nicht so ganz
    Willst du die Bahnkurve des Fußpunktes während einer Vorwärtsbewegung speichern und dann nachfahren, oder die während eines Schrittes?

    Wieso willst du überhaupt die Kurve speichern, und nicht Punkt für Punkt berechnen und jeweils anfahren?

  2. #2
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    30.12.2008
    Ort
    Essen
    Alter
    66
    Beiträge
    358
    Hallo Hanno !

    Mich würde die Servocontroller Platine interessieren. Ist es der hier vielfach besprochene Atmega8 für 20 Servos oder hast Du was neues entwickelt?
    Lese dein Projekt eigentlich durchgehend mit, aber solange für mich alles klar ist, beschränke ich mich ausschliesslich aufs mitlesen.
    Weiterhin viel Erfolg !

    Roland
    Robotik & Arduino Homepage
    http://www.ardumega.de

  3. #3
    Moderator Robotik Einstein Avatar von HannoHupmann
    Registriert seit
    19.11.2005
    Ort
    München
    Alter
    42
    Beiträge
    4.534
    Blog-Einträge
    1
    Nun dann will ich es mal weiter erklären:

    Wie wir alle wissen ist die inverse Kinematik in der Lage aus jeder beliebigen Position der Fussspitze (solange sie sich im Arbeitsraum des Beins befindet) die Gelenk-Winkel für Fuss, Knie und Hüfte auszurechnen.

    Nur wie gebe ich diese "beliebigen Positionen" vor?
    Ich hab zum einen einen festen Bewegungsablauf (A) wenn das Bein von seiner Endstellung zurück in die Anfangsstellung bewegt wird. Dabei befindet es sich in der Luft und die Bahnkurve die dabei abgefahren werden soll kann vorgegeben werden. So wie das bei ikarus_177 auf der Homepage unter Schritte zu sehen ist.

    Für den Teil der Bewegung (B) bei dem der Fuss auf den Boden steht gibt es zwei Möglichkeiten:
    1) Die Bahnkurve wird auch hier vorgegen. Dann sind aber keine Anpassungen an den Boden oder die Bewegungsrichtung möglich
    2) Die Bahnkurve wird berechnet, entsprechend der Bewegungsrichtung (vorwärts, rückwärts, seitwärts mit Drehung oder alles zusammen) und Lage des Körpers.

    Ich würde gerne den 2) Ansatz verfolgen, d.h. eine Bahnkurve quasi dynamisch generieren. Mittels eines Lagesensors soll der Roboter später erkennen ob er schräg steht und diese soweit möglich ausgleichen. Daraus folgt natürlich, dass sich auch die Beinstellung verändert. Ich möchte dem Roboter auch gerne Bewegungen vorgeben können wie z.B: "laufe gerade aus und dreh dich dabei einmal um 360°" für einen Hexa theoretisch ohne Probleme machbar, nur überlagern sich hier das Bewegungsmuster "nach vorn" und das "drehen". Ich brauch also eine mathematische Beschreibung die aus meiner Vorgabe errechnet wie die Fussspitzen sich bewegen müssten um die Aufgabe zu erfüllen (die Gelenkswinkel errechnen sich ja dann aus der IK).

    Ich hoffe jetzt ist es etwas klarer.

  4. #4
    Erfahrener Benutzer Roboter Genie Avatar von HeXPloreR
    Registriert seit
    08.07.2008
    Ort
    Soltau - Niedersachsen
    Alter
    46
    Beiträge
    1.369
    Leider weiß ich nun nicht wie diese Beschreibung aussehen könnte, aber kann man nicht einen beweglichen zusätzlichen Bezugspunkt setzen auf den sich dann die Fußpunkte beziehen?

    Wenn man den Buzugspunkt etwa 20cm links ins Koordinatensystem legt, dann läuft er quasi einen 40cm Kreis (mit Köpermittelpunkt) drum rum. Der Kreis wird umso größer je weiter der Punkt links oder rechts weg bewegt wird ( Am sinnvollsten wird es sein da etwas zu begrenzen z.B alles drüber = gradeaus laufen, weil sonst wird es ja nur ein recht großer Kreis)). Wenn man den Punkt wieder näher zum (normalen) Körpermittelpunkt bewegt, wird der Kreis kleiner und kleiner bis es eine Drehung um die eigene Achse wird.
    Sobald sich der Bezugspunkt auf einer Seite innerhalb der Beine bewegt, wird die Drehung eingeleitet, da sich die Beine auf der Seite nun entgegengesetzt bewegen müssten
    Dazu kann man dann noch die Bewegungsrichtung mit Schrittweite einrechen - per Kompass möglicherweise...
    Geändert von HeXPloreR (10.10.2012 um 18:56 Uhr)

  5. #5
    Erfahrener Benutzer Roboter Experte Avatar von ikarus_177
    Registriert seit
    31.12.2007
    Ort
    Grein
    Alter
    32
    Beiträge
    601
    @Hanno: als ich mich noch aktiv mit meinem Hexa beschäftigt hatte, erschien mir folgender Weg am zweckmäßigsten / einfachsten:
    Meinen Beincontrollern (die die IK für die Beine berechneten und die Servos ansteuerten) bekommen vom Master (der für die übergeordnete Bewegungssteuerung zuständig ist) nicht die absolute Wunschposition des Beines übermittelt, sondern stets ein gewisses dX / dY / dZ. Um die Datenübertragung weiter zu vereinfachen, war diese Schrittweite immer fix eingestellt (man sollte natürlich einen relativ kleinen Wert nehmen, um die Bewegung "flüssig" aussehen zu lassen); alles was der Beincontroller vom Master empfing, waren Kommandos a là "Bewege Fußspitze um 1 dX / um -1dY usw...".

    Trotz dieses einfachen Systems ließen sich damit alle Bewegungen realisieren, auch Überlagerungen von Bewegungen waren ohne weiteres möglich (z.B. um schräg zu gehen werden die Kommandos "+1dY" und "+1dX" abwechselnd gesendet, die Häufigkeit der beiden Befehle zueinander bestimmt, wie "schräg" gegangen wird; Drehungen während Bewegungen funktionieren ähnlich). Die Stärke des Konzepts ist aber auch gleichzeitig seine Schwäche: alle Bewegungen der Beine werden in einem roboterfesten Koordinatensystem gemessen, dessen Ursprung im Montagepunkt der Beine am Roboterkörper liegt. Das macht es extrem einfach, den Roboter etwa fernzusteuern, da alle Kommandos stets "aus Sicht des Roboters" ausgeführt werden, und er sich nicht in einem absoluten - ortsfesten - Koordinatensystem bewegt.

    Das Problem ist, dass der Master (bzw. deine Instanz, die den Pfad bestimmt) bei überlagerten Bewegungen, die Drehungen beinhalten, seehr viel zu rechnen hat, wenn du Manöver wie deine 360°-Drehung während des Geradeauslaufens ausführen willst - schließlich läuft der Roboter (aus seiner Sicht) am Ende "rückwärts".

    Der "Königsweg" für einen IK-Bewegungsapparat - aus meiner heutigen Sicht - würde ein globales, ortsfestes Koordinatensystem haben, in dem sich der Roboter bewegt. Aus dem Robotermittelpunkt und seinen Drehungswinkeln in den drei Achsen (quasi den Parametern, mit deren Hilfe der Roboter gesteuert werden kann) werden die globalen Positionen der Befestigungspunkte berechnet, diese fließen zusammen mit den Bodenpunkten der Beine (die - während das Bein am Boden ist - im globalen System konstant bleiben!) in die Berechnung der eigentlichen IK ein.

    Zum Thema Neigungsausgleich: willst du die Neigung eines konstant schiefen Bodens ausgleichen, oder auf unregelmäßig unebenem Gelände laufen? Ersteres würde wahrscheinlich einfach über eine Winkelmessung (im Optimalfall mit Gyroskopen + Beschleunigungssensoren und einem Kalmanfilter zur Datenfusion) und entsprechende Korrektur möglich sein (ein geschlossener Regelkreis wäre denkbar). Zweiteres benötigt Sensoren, die feststellen können, ob ein Bein nun tatsächlich am Boden ist (Ich habe festgestellt, dass es bei Tastern das Problem gibt, dass diese eventuell nicht sicher schließen, wenn das Bein schief am Boden aufkommt). Die Anpassung an das Gelände erfolgt dann bei den Schritten, indem sich die Beine solange absenken - aber auf keine feste Höhe - bis ein fester Bodenkontakt hergestellt ist. Neigungsmessungen wären wohl auch hier notwendig, um eine absolute Referenz zu haben.

    Schöne Grüße

  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
    Das Konzept hab ich bisher auch verfolgt bei meinem Phoenix². Da habe ich dem Roboter vorgegeben "laufe x schritte gerade aus oder Schräg" oder "drehe dich um 270°" allerdings war gerade aus laufen ein unterschiedlicher Algorithmus als drehen. Ich habe damals keine Überlagerung hin bekommen. Für den Vinculum wollte ich nun die Überlagerung von "gerade, schräg usw" und "drehen" schaffen und noch den Höhenausgleich. Auch diesmal wird es wieder ein ortsfestes Roboterkoordinatensystem geben und ausgehend von diesem werde ich die Fussbewegung berechnen lassen. Vermutlich wird es auf ein Koordinatensystem hinaus laufen, welches immer nach Norden ausgerichtet ist, aber sich mit dem Roboter bewegt. D.h. Drehungen verändern das Koordinatensystem nicht und bei translatorischen Bewegungen wandert das Koordinatensystem mit.

    Mein erster Ansatz ist nicht so weit weg von euren Ideen - was mich sehr beruhigt.

    Zum Neigungsausgleich: Erst mal geht es mir nur um "schiefen Boden" die Option mit dem "unregelmäßig unebenen Gelände" kommt irgendwann später, denn hier muss die Höhe jede einzelnen Beins individuell angepasst werden. Hier wäre aber eine Rückmeldung von den Beinen sehr hilfreich und die hab ich nicht implementiert. Der Lageausgleich lässt sich aber recht gut über ein Gryo+Beschleunigungssensor+Kalmanfilter erschlagen.

    Erst mal muss der Roboter auf "eigenen Füßen" stehen und da mir immernoch die letzten 4 Servos - dank der deutschen Post - fehlen geht es nicht weiter.

  7. #7
    Erfahrener Benutzer Roboter Genie Avatar von HeXPloreR
    Registriert seit
    08.07.2008
    Ort
    Soltau - Niedersachsen
    Alter
    46
    Beiträge
    1.369
    Ohne eine Rückmeldung der Fußspitze wird es schwierig, denke ich. Allein dadurch das der Roboter seine Lage verändert, die vom Sensor gemessen wird, würde ich nicht machen. Denn dann drückt dieses eine Bein kurzfristig ein mehrfaches des Gewichts, für das möglicherweise nicht ausgelegt ist. Das kann nicht gut sein, und hat mir schon einen AX-12 Getriebe zerlegt.

    Ich plane etwas ähnliches wie diesen Fühler vom catapilar...nur etwas verstärkt und in der Bewegung begrenzt.
    Etwas ähnliches würde der Analogstick von einem Play_statio_pad wohl auch leisten. Allerdings wird dafür das Gewicht dann bei Dir schon kritisch sein?
    Geändert von HeXPloreR (11.10.2012 um 13:37 Uhr)

  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
    Oh beim Phoenix² ging es ganz prima ohne Rückmeldung der Servos. Im Prinzip vertrau ich einfach darauf, dass die Beine da ankommen wo sie nach Vorgabe sein sollten. Die Rückmeldung würde mir ja nur ermöglichen zu prüfen ob sie da angekommen sind und falls nicht einzugreifen. Für die ersten Schritte wird es so gehen müssen, später implementiere ich vielleicht eine geeignete Art der Rückkopplung, wobei ich hier wohl eher auf DMS Streifen als auf Potis zurück greifen würde.

Ä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