-
-
Neuer Benutzer
Öfters hier
Soooo,
wie ihr wisst versuche ich grade, eine Rückwärtstransformation für den Delta zu berechnen. Und es ist leider doch nicht sooo einfach, wie ich dachte. Das Problem war/ist ein Denkfehler meinerseits. Ich habe versucht, für einen gegebenen Montagepunkt des Bots und gegebene Lage des anzufahrenden Punktes den Winkel zu berechnen, den der obere Teil des Armes mit der Geraden bildet, die durch Anfang und Ende des Armes führt. Das klappt zwar, bringt aber nichts
...
Ich habe jetzt folgendes vor (mach ich aber erst morgen, weil ich da vermutlich teilweise selbsts nochmal nachlesen muss):
Gegeben ist der Montagepunkt des Bots und der Punkt, der angefahren werden soll, sowie die Maße des Bots.
1) Funktion erstellen die aus dem Montagepunkt und der Geometrie des Bots den Punkt berechnet, an dem der Arm beginnt (das ist dann genau in der Achse des Servos). Punkt = AA
2) Funktion erstellen, die aus dem anzufahrenden Punkt den Punkt berechnet, an dem der Arm enden muss. Punkt = AE
3) Um AE eine Kugel mit Radius = Länge des unteren Armteils legen
4) Um AA einen Kreisring legen mit Radius = Länge des oberen Armteils. Der Kreisring muss in der Ebene liegen, die der Obere Armteil bei seiner Bewegung aufspannt.
5) Schnittpunkte zwischen der Kugeloberfläche und dem Kreisring berechnen (Müssten 2 sein, ausser der Arm ist voll gestreckt, dann nur 1. Wenn Punkt nicht erreichbar 0)
6) Von diesen Schnittpunkten jenen identifizieren, der "Weiter aussen", also weiter weg vom Montagepunkt des Arms, liegt. Dieser Punkt ist der Gelenkpunkt des Arms = AG
7) Mit Kenntnis von AA und AG den Winkel zwischen der Ebene, auf der der Bot montiert ist und der Geraden durch AA und AG berechnen. Das ist der Winkel, den der Servo steuern muss.
Ist alles nur lineare Algebra, aber Kugeln im Raum und deren Schnittpunkte mit irgendwas anderem muss ich mir nochmal anschauen.
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen