-         
Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 24

Thema: Rotationsproblematik - Koordinatentransformation

  1. #1
    Erfahrener Benutzer Roboter Experte Avatar von ikarus_177
    Registriert seit
    31.12.2007
    Ort
    Grein
    Alter
    25
    Beiträge
    601

    Rotationsproblematik - Koordinatentransformation

    Anzeige

    Hallo,

    ich habe ein kleines Problem, das auf den ersten Blick zwar trivial aussieht, für mich jedoch artet es immer mehr ins Philosophische aus, je länger ich drüber nachdenke. Vielleicht hat ja einer von euch eine Idee, wie man das ganze angehen könnte.

    Ich mache derzeit für meinen Hexapod die inverse Kinematik in C neu. Ich betrachte in meinen Überlegungen stets nur ein Bein. Der Roboter soll programmtechnisch durch seinen Mittelpunkt (der sich irgendwo im 3D-Raum befindet), dem Punkt, an dem das Bein den Boden berührt, und durch 3 Winkel, die die Drehungen des Roboterkörpers im Raum angeben, bestimmt werden.
    Nehmen wir an, der Roboter befindet sich mit seinem Mittelpunkt im Ursprung des Koordinatensystems, der Bodenpunkt befindet sich irgendwo im 1. Quadranten. Der Roboter ist weiters in allen drei Achsen geneigt. Die Drehwinkel sind bekannt, sie werden ja durch die Steuerung/den Benutzer vorgegeben.
    Weiters bekannt ist der Montagepunkt des Beines am Roboterkörper, wenn sich dieser im Ursprung befindet und keinerlei Drehung aufweist, also quasi die Standardposition bei Programmstart.

    Da sich mit geneigtem Roboterkörper schwer rechnen lässt, ist mein Ansatz, die Drehungen des Körpers "auszudrehen" also den Körper in den jeweiligen Achsen um die jeweiligen (negativen) Winkel wieder in Ruhelage zu bringen. Der Bodenpunkt muss dabei natürlich mitgedreht werden, die relative Lage dieses Punktes zum Körper soll ja nicht verändert werden. Danach bräuchte ich den Montagepunkt des Roboters, der ja nun mit dem Standard-Montagepunkt gleichbedeutend ist, in den Nullpunkt zu schieben, den "verdrehten" Bodenpunkt mitzuschieben, und die Gelenkswinkel zu bestimmen.

    Aber: wie annulliere ich nun die Drehwinkel des Körpers? Sprich, mit welcher Achse fange ich an? Ich weiß ja nicht, in welcher Reihenfolge die Drehungen erfolgt sind, sodass ich sie durch Umkehrung wieder rückgängig machen könnte.
    Andererseits könnte ich ja so tun, als würde ich mir den Befestigungspunkt des Beines ausrechnen, indem ich zuerst um die x-, dann um die y- und schließlich um die z-Achse drehe, um danach den Punkt durch Umkehrung wieder zurückzubewegen. Da ja die Rotation des Bodenpunktes von der des Körpers abhängt, müsste diese Reihenfolge auch für den Bodenpunkt gelten. Dann müsste aber auch jede andere beliebige Folge gültig sein, und doch bringt jede dieser Möglichkeiten ein anderes Ergebnis zutage.

    Wo liegt der Haken, wo hab ich was entscheidendes übersehen?

    Danke fürs lesen und noch einen angenehmen Abend,
    ikarus_177

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    28.06.2005
    Ort
    DD
    Beiträge
    519
    Mach mal bitte ne Skizze von dem Problem und wie das Bein augebaut ist.
    Das hilft vl. schon sehr viel weiter.

  3. #3
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    Die Reihenfolge der Drehungen kann man nicht vertauschen.

  4. #4
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    02.05.2004
    Alter
    32
    Beiträge
    388
    Das heisst es ist egal in welcher reihenfolge, richtig?

  5. #5
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    WIr haben da auch schon herumgehirnt, vielleicht findest du was, was du brauchen kannst
    http://www.rn-wissen.de/index.php/Sp...%28Hexapods%29
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  6. #6
    Erfahrener Benutzer Roboter Experte Avatar von ikarus_177
    Registriert seit
    31.12.2007
    Ort
    Grein
    Alter
    25
    Beiträge
    601
    Hallo und guten Morgen,

    danke für die Antworten!

    Das heisst es ist egal in welcher reihenfolge, richtig?
    Das ist es eben nicht, ich habs ausprobiert

    Hier mal eine kleine Skizze:



    Der erste Teil des Bildes zeigt den Roboter, der in einer Achse gedreht ist, wenn man von vorne draufschaut. Die beiden Bodenpunkte der Beine liegen logischerweise am Boden. Um jetzt einfacher rechnen zu können, möchte ich den Körper (ggf. um alle Achsen) so drehen, dass er "parallel" zum Koordinatensystem liegt. Natürlich müssen die Bodenpunkte mitgedreht werden, deren Abstand und Ausrichtung relativ zum Körper müssen ja gleich bleiben. Das zeigt das zweite Teilbild.
    Wenn der Roboter (so wie hier) nur in einer Achse geneigt ist, ist die ganze Sache ja einfach; ich drehe einfach um den gleichen Winkel wieder zurück in die Ausgangslage. Wie aber drehe ich, wenn der Roboter in allen Achsen geneigt ist; sprich, welche Achse kommt zuerst dran?

    Viele Grüße
    ikarus_177

  7. #7
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    08.12.2005
    Beiträge
    535
    ikarus_177,

    Du hast recht: Die Reihenfolge der Drehungen ist nicht egal. (Siehe z.B. Anhang). Wenn Du aber für die Hin-Transformation eine bestimmte Reihenfolge der drei Drehungen festlegst, und für die Rück-Transformation genau die umgekehrte verwendest, dann sollte es klappen . Das Verfahren ist im Anhang auf Seite 3 auf der linken Folie angedeutet.

    Ciao,

    mare_crisium

    Edit: Anhang gelöscht wg. Upload-Quota

  8. #8
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    Wie immer man es berechnet, aber auf einer Schiefen Ebene würde man eher so eine Haltung einnehmen (um sich abzustützen)
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken schief.png  
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  9. #9
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    17.02.2006
    Alter
    48
    Beiträge
    781
    Ich habe ein ähnliches Problem und noch keine Lösung dafür.

    Was mir dazu einfällt: Für kleine Drehwinkel ist die Reihenfolge der Drehungen egal, wenn man keine mathematisch exakten Ergebnisse braucht. Man könnte also, wenn man eben keine kleinen Winkel hat, die Drehungen in Schritte zerlegen, die jeweils kleiner als z.B. 5° sind. Dann führt man abwechselnd die Drehungen um x- und y- Achse aus, bis der gewünschte Drehwinkel erreicht ist.

    Oder?

  10. #10
    Erfahrener Benutzer Robotik Einstein Avatar von vohopri
    Registriert seit
    11.09.2004
    Ort
    südlich der Alpen
    Beiträge
    1.708
    Hallo,

    das kommt jetzt nur darauf an, wie deine dir bekannten Orientierungswinkel definiert sind. Daraus kannst du eine Rehenfolge oder eine Umrechnung ableiten. Vor Allem kommts da immer drauf an, ob man Winkel zu Achsen, oder Winkel zu Ebenen hat. Das schaut oft aufs erste Hinsehen alles gleich auf, aber beim Verarbeiten zeigen sich gemeinerweise dann die Feinheiten.

    @ Dennis: der Versuchung zu so einer Näherungslösung würde ich widerstehen. Denn erstens gibt es eine exakte Lösung und zweitens wirst du die Fehler nicht mehr los (weder numerisch noch in den schwammigen Definitionen die man so einführt).

    @ Philipp: Das Verwenden eines Koordinatensystems, das am chassis ausgerichtet ist, ist einmal sicher vernünftig. Poste doch mal ganz exakt, wie die Verdrehungswinkel vorliegen und wie sie definiert sind.

    grüsse,
    Hannes

Seite 1 von 3 123 LetzteLetzte

Berechtigungen

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