Kreis durch Tangentensteigungen definieren |
15.07.2009, 00:06 | dux | Auf diesen Beitrag antworten » | |||||
Kreis durch Tangentensteigungen definieren Ich stehe vor einem ziemlich komplizertem Problem, aber ich werde es so kurz und einfach wie möglich beschreiben! Ich habe mir aus Lego einen Plotter gebaut und bin gerade dabei, ihn zu programmieren! Einfache Sachen wie gerade Linien sind perfekt, aber nun stehe ich vor Kurven (ich möchte genau gesagt einen Kreis zeichnen)! Das Problem dabei ist, dass ich die Motoren, die das ganze Teil in x- und y-Richtung bewegen nur durch Geschwindigkeit steuern kann! Dazu habe ich mir überlegt, dass ich die Geschwindigkeiten durch die Steigung der Tangente des Kreises festlege und zu jedem Zeitpunkt ändere, sodass die Steigung immer größer/kleiner wird und dadurch ein Kreis entsteht! Dadurch ergibt sich wieder ein kleines Problem, weil die Steigung irgendwann unendlich ist und der Motor sich aber nicht unendlich schnell drehen kann. Dazu habe ich mir überlegt, dass ich den Kreis in 8 Abschnitte Teile und je nach dem, wie der Kreis gekrümmt ist ein Motor konstant schnell läuft und der andere seine Geschwindigkeit ändert. Also quasi wie eine Funktion y(x)! Durch viel herumdenken bin ich dazu gekommen, dass die Steigung einer Tangente im Allgemeinen (durch ableiten) ist (ich gehe davon aus, dass der Mittelpunkt im Koordinatenursprung ist) und ich kann mir aus der Kreisgleichung das y herausrechnen (). Somit habe ich die Steigung (Geschwindigkeit des einen Motors) in Abhängigkeit der Position/des zurückgelegten Wegs des anderen Motors (dessen Geschwindigkeit konstant ist): also . Leider zeichnet mein Plotter keinen Teil eines Kreises, sondern immer nur Hyperbel ähnliche Kurven. Ich habe keine Ahnung, wo der Fehler liegt. Ich hoffe, meine Beschreibung ist verständlich und ihr könnt was damit anfangen und mir helfen! Für Fragen stehe ich bereit und ich werde versuchen alles so gut wie möglich zu erklären, hauptsache ich komme zu meinem Kreis! Ich bedanke mich schon im Vorhinein für Unterstützung! lg |
|||||||
15.07.2009, 10:23 | Huggy | Auf diesen Beitrag antworten » | |||||
RE: Kreis durch Tangentensteigungen definieren Für dein Problem emphiehlt es sich, die folgende Parameterdarstellung des Kreises zu benutzen: Den Parameter t kannst du als Zeit interpretieren. Die erforderliche Geschwindigkeit der Motoren in x- und y-Richtung ergibt sich durch Ableiten nach t: Den Wert von bestimmst du über die maximale Geschwindigkeit der Motoren: Das führt zu: |
|||||||
15.07.2009, 12:20 | dux | Auf diesen Beitrag antworten » | |||||
RE: Kreis durch Tangentensteigungen definieren Danke für den verdammt guten Vorschlag! Sobald ich die Möglichkeit habe, werde ich das probieren und wieder posten! lg |
|||||||
15.07.2009, 13:07 | dux | Auf diesen Beitrag antworten » | |||||
RE: Kreis durch Tangentensteigungen definieren Sooo, ich habs doch schon jetzt testen können! Leider gibts aber keinen 100%igen Erfolg. Ich muss jetzt leider ein bisschen aufs Programm selbst eingehen, ich hoffe das macht nichts! Das Programm läuft eine Schleife durch und bei jedem Durchlauf wird die Geschwindigkeit der Motoren verändert! Leider kann ich immer nur Viertelkreise zeichnen, weil ich die Drehrichtung der Motoren inzwischen ändern muss. Ich habe die Variablen so festgelegt, dass die Zeit t (aus den Formeln von Huggy) von 0 bis Pi/2 läuft (also bei jedem Durchlauf erhöht wird und nur ein Virtelkreis gezeichnet wird), die maximale Geschwindigkeit v=100 ist und der Radius r=10 ist.
Wenn ich das Programm so ausführe, dann entsteht nur ein kurzer leicht gekrümmter Bogen. Kann mir dabei irgendjemand helfen? Ich bin mir nicht sicher, wie weit t wirklich laufen soll. lg |
|||||||
15.07.2009, 13:52 | Huggy | Auf diesen Beitrag antworten » | |||||
RE: Kreis durch Tangentensteigungen definieren Für einen Viertelkreis muss von 0 bis laufen, also t von 0 bis . Außerdem müssen , r und t in zueinander konsistenten Einheiten angegeben werden, z. B. in mm/s, r in mm und t in s. Edit: Die Winkelfunktionen sind im Bogenmaß zu berechnen. |
|||||||
15.07.2009, 22:26 | dux | Auf diesen Beitrag antworten » | |||||
RE: Kreis durch Tangentensteigungen definieren Ich hätte es mir nicht gedacht, aber es funktioniert! Zwar kein 100% perfekter Kreis (aber 95%), weil Lego nicht die Genauigkeit bringt, aber von der Berechnung her ist es so wie ich es mir erwünscht habe! Vielen vielen Dank an Huggy! Echt super! Trotzdem verstehe ich noch nicht, warum meine Idee nicht funktioniert hat... lg |
|||||||
Anzeige | |||||||
|
|||||||
16.07.2009, 08:37 | Huggy | Auf diesen Beitrag antworten » | |||||
RE: Kreis durch Tangentensteigungen definieren Dein Weg ist prinzipiell auch gangbar. Man müsste sich näher ansehen, wie du das umgesetzt hast. Aber der Weg über die Parameterstellung erscheint mir einfacher. Möglicherweise lässt sich die Genauigkeit noch verbessern. Da die Motoren ihre Geschwindigkeit nicht stetig ändern können, besteht jede Kurve aus kleinen Geradenstücken. Da kann man auch gleich diese Geradenstücke programmieren. Beim Kreis würde das bedeuten, man programmiert ein n-Eck mit genügend großem n. Die Eckpunkte bekommt man wieder aus der Parameterdarstellung, indem man durch den Winkel ersietzt. Ob das wirklich besser wird, muss man ausprobieren. Man sollte dann zunächst mal n-Ecke mit kleinem n zeichnen, um zu sehen, wie gut der Endpunkt mit dem Anfangspunkt übereinstimmt. |
|||||||
16.07.2009, 10:53 | dux | Auf diesen Beitrag antworten » | |||||
RE: Kreis durch Tangentensteigungen definieren Danke für den Tipp, ich werds ausprobieren! Falls ich Probleme bei den Berechnungen habe, werde ich mich melden! lg |
|||||||
16.07.2009, 13:03 | tigerbine | Auf diesen Beitrag antworten » | |||||
Leserbrief
Aus den Steinen? Kann man da mal ein Bild sehen? |
|||||||
16.07.2009, 13:46 | dux | Auf diesen Beitrag antworten » | |||||
RE: Leserbrief Ich habe den Plotter aus allem zusammengebaut, was ich so gefunden habe! Aber hauptsächlich Lego Technics vom Mindstorm Set. Programmiert wird der NXT mit Java (leJOS). Wenn ich zu Hause bin und kurz Zeit habe, werde ich Dir ein Bild reinstellen! lg |
|||||||
16.07.2009, 13:48 | tigerbine | Auf diesen Beitrag antworten » | |||||
RE: Leserbrief Super. Da freu ich mich drauf. |
|||||||
16.07.2009, 22:08 | dux | Auf diesen Beitrag antworten » | |||||
RE: Leserbrief Hab jetzt ein paar Fotos: 1 2 3 4 5 Ich hoffe, man kann sich was vorstellen! Das Teil wird mit 3 Motoren angetrieben und vom NXT gesteuert. 2 Motoren bewegen den Stift in X- und Y-Richtung und der 3. Motor bewegt den Stift auf und ab. Zusätzlich sind noch 2 Touchsensoren dabei, die für die Ausrichtung sorgen. Der NXT ist wie gesagt in Java programmiert. Die große Arbeit am Plotter ist natürlich nicht das Bauen, sondern das Programmieren. Man muss genau testen, wie weit sich der Stift bewegt wenn man den Motor mit verschiedenen Geschwindigkeiten und verschieden lange drehen lässt. Das kann schon einmal eine Weile dauern. Mein Plotter kann jetzt perfekte gerade Linien in alle Richtungen und mit ziemlich guter Genauigkeit. Mit diesen Grundfunktionen kann er mittlerweile das ganze Alphabet schreiben. Jetzt kommt noch dazu, dass er Kreise zeichnen kann. Ich bin jetzt dabei, ihn mit dem PC kommunizieren zu lassen. Dann kann ich nämlich via Bluetooth senden, was er machen soll. Also im Großen und Ganzen kann ich zufrieden mit dem Plotter sein. lg |
|||||||
16.07.2009, 22:15 | tigerbine | Auf diesen Beitrag antworten » | |||||
RE: Leserbrief Was soll ich sagen.... Find ich echt klasse! |
|
Verwandte Themen
Die Beliebtesten » |
Die Größten » |
|
Die Neuesten » |