Autor:
|
Kommentar:
|
Stefan Falk
23.11.14 21:01
|
Sauber! Kannst Du noch ein paar Details über die Berechnungen verraten?
Gruß, Stefan
|
|
david-ftc
24.11.14 14:26
|
Das wird jetzt etwas kompliziert, aber ich kann versuchen, es zu erklären:
Man muss sich vorstellen, dass die Mittelpunkte der Drehscheiben der A, B und C Achse drei geometrische Punkte A, B und C darstellen. Um den Punkt A(0|0) malt man nun gedanklich einen Kreis mit dem Radius AB.
Punkt C stellt den "Zielpunkt" dar, die Position, die der Roboter anfahren soll (Wir gehen jetzt mal davon aus, dass es keinen Vakuumsauger gibt.) Um diesen Punkt C(x|y) mit den Koordianten der Benutzereingabe x und y zeichnet man gedanklich ebenfalls einen Kreis mit dem Radius BC.
Der Schnittpunkt der beiden Kreise ergibt die Koordinaten des Punktes B (Um zu verstehen, wie das funktioniert, sollte man sich etwas in Kreisberechnungen einarbeiten, dazu findet man im Internet viele weiterführenden Beiträge).
Zurück zum Roboter: Die Koordinaten A, B und C sind nun bekannt. Die Position der Arme des Roboters wird durch Winkel (alpha, beta und gamma) angegeben.
Ich hoffe, meine Erläuterungen waren verständlich.
Gruß, David
|
|
david-ftc
24.11.14 14:33
|
Ich hätte beinahe noch etwas vergessen: Ich hatte beschrieben, dass die Vakuumsauger stets nach unten gerichtet sind. Auch dies lässt sich berechnen: Bekannt sind die Winkel alpha und beta wie oben beschrieben. Der Winkel gamma lässt sich über die Winkelsumme im Dreieck errechnen: alpha+beta+gamma = 180°
Umgeformt bedeutet das: 180-alpha-beta = gamma.
Wie man diese Winkel genau definiert, bleibt dem Programmierer überlassen. Ich habe Winkel alpha beispielsweise so definiert, dass wenn Achse A den Endschalter berührt, alpah gleich 45° ist. Im Moment ist alpha jedoch 135°
Bei meinen Überlegungen zu dem Programm hat mir auch das Geometrie Programm GeoGebra sehr geholfen: http://www.geogebra.org/
Gruß, David
|
|
|