Ok dacht ich mir, wir reden vom gleichen nur unterschiedlich formuliert.
Aber kommen wir zurück zur Aufgabenstellung oder besser gesagt meinem aktuellen Problem:
Nochmal der Selbstversuch: zur Türe laufen und sich dabei in der Vorwärtsbewegung um die eigene Achse drehen. Diese Bewegung enthält, dass man ein paar Schritte rückwärts läuft, dann seitwärts dann wieder gerade aus. Soweit kann das jeder Mensch durchführen, da er seine Füße auf die entsprechenen Punkte am Boden stellt die Beine dazu passend bewegt.
Ein Hexabot kann diese Bewegung genauso ausführen, allerdings muss die Bewegung vorher berechnet werden. D.h. diese spezielle Bewegung gliedert sich in eine Bewegung Richtung Türe = translatorisch und eine Bewegung um die eigene Mittelachse = rotatorisch. Beide Bewegungen werden gleichzeitig ausgeführt und überlagern sich damit.
Beschreibt die Fußspitze von der minimal Position zur maximal Position eine Gerade auf dem Boden ist diese Bewegung nicht möglich, dann wäre es nur eine gerade Bewegung in eine Richtung. Keine Frage eine Kreis oder Kurvenbewegung lässt und muss hier in viele kleine Geradenstückchen unterteilt werden. Die Bewegung ist also eine abfolge von kleinen Geradenstückchen. Die Frage ist also, A: wie müssen die einzelnen Teilstücken der Bewegung von min zu max aussehen, damit sich der Körper nach vorn bewegt und gleichzeitig dreht und B: wie kann diese Bewegung rechnerisch dargestellt werden?
Vorüberlegung:
Zeichnet man sich beide Bewegungen auf, sieht man eine Gerade von min zu max (für die Bewegung nach vorn) und eine Tangente auf dem Kreisbogen um den Roboter zu drehen. Summiert man beide Bewegungen auf, erhält man eine Bewegung dazwischen die der gewünschten entsprechen sollte. Nur nach jeder kleinsten Teilbewegung des Roboters ändert sich seine Ausrichtung:
Ansatz 1: Roboter Koordinatensystem
Ich habe kein globales, ortsfestes Koordinatensystem sondern ein Roboterkoordinatensystem, welches fest auf dem Roboter ist (y- zeigt immer nach vorn). Bei einer translatorischen Bewegung ohne Drehung bleibt das Koordinatensystem wie es ist und wird im Raum verschoben (+5m zur Tür in Y-Richtung). Die Fussspitze beschreibt eine Gerade definiert durch einen Vektor V1( x=1, ymin = 5) zu V2(x=1 und ymax =. Bei einer Drehung entsteht ein Winkel zwischen dem ursprünglichen und dem Zielkoordinatensystem: Daraus folgt, dass die Bewegung V1 (1 5) und V2(1
im ersten Koordinatensystem in das neue Koordinatensystem übertragen werden muss und dort korrekt darzustellen ist. Meine Versuche die alte Bewegung von oben nach ins neue, gedrehte Koordinatensystem umzurechnen haben soviele Rechenschritte erzeugt, dass ich es aufgegeben habe, da es nicht praktikabel im Code umgesetzt werden kann.
Bei diesem Ansatz ist übrigens egal ob man nur ein infinitisimal kleines Wegstück betrachtet oder die ganze Bewegung von min zu max, denn die Umrechnung ins neue Koordinatensystem muss auch bei kleinen Wegstrecken korrekt sein.
Ansatz 2: Globales Koordinatensystem
Ein globales Koordinatensystem mit Ausrichtung Nord bleibt unverändert nur der Roboter in diesem Koordinatensystem verändert sich. Auch hier muss die Trajektorie laufen angepasst werden, da sich die Position des Roboters ändernt und damit auch die Abstände von Global X und Y. Es läuft immer darauf hinaus, dass die Positionsänderung des Roboters in der Bahnkurve der Füße berücksichtigt werden muss; was mit Trigonometrie nur sehr schwer zu beschreiben ist.
Ansatz 3: Bisher und bei Phoenix² implementiert
Zerlegen der Bewegung in zwei Teilbewegungen: Drehen um den Mittelpunkt und dann gerade aus laufen. Sehr trivial aber möglich, insbesondere sieht man an der Rechnung oben, dass ich damals schon "Drehen um einen beliebigen Punkt im Raum" implementiert habe. D.h. es muss gar nicht der Mittelpunkt sein um den sich der Roboter dreht, die daraus entstehenden Bahnkurven sind in meiner Berechnung dargestellt und wie man sieht auch nur Geraden, die in der Summe dann eine Kreisbewegung ergeben.
Meine Problemstellung ist also weniger, wie es übergeordnet aussieht, sondern mehr die reine, banale Mathematik um die Theorie der Bewegung in die Praxis der Bahnkurve einer Fußspitze umzusetzen. Es wird bei diesen komplexen Bewegungen immer auf eine individuelle Bahnkurve für jedes Bein hinaus laufen (was übrigens viel einfacher ist als man denkt), ist bei uns ja nicht anders wenn wir die oben beschriebene Bewegung ausführen.
Lesezeichen