Servobewegung mit Runge-Kutta glätten? Wie?
LTD 02.04.2011 - 23:41 2041 9
LTD
frecher fratz
|
Abend,
ich bastel gerade an einem Servo herum, dass ich über einen Ultraschall-Entfernungsmesser ansteuere:
Fällt die Distanz unter 60mm, fängt sich das Servo mit (60/verbleibende mm) an zu bewegen (wird also schneller sobald man ihm näher kommt.
Mein Problem ist jetzt, dass die Bewegung nicht kontinuierlich, sondern sehr ruckartig abläuft. Ich komme dem Servo näher - es bewegt sich, ich folge, es bleibt stehen und nimmt erneut Fahrt auf.
Ich habe gelesen (und in einem anderen Code gesehen) dass man die Bewegung durch Trapez- oder Runge-Kutta Integration flüssig hinbekommt. Nur leider scheitert es an der Anwendung für meine Bedürfnisse. Wie genau schreibe ich zb. ein Runge-Kutta-Verfahren zweiter Ordnung? Oder ein Trapez - oder was auch immer mir helfen könnte? Ich hoffe jemand kennt sich da aus ;/
Vielen Dank für eure Hilfe!
|
watchout
Legendundead
|
Die Frage ist doch: was willst du erreichen
Weil sobald du die Geschwindigkeitskurve abflachst, reduziert sich natürlich auch die Reaktionsgeschwindigkeit des Servos.
|
LTD
frecher fratz
|
Ich möchte, dass das Servo sich flüssig bewegt und nicht vor sich hin zuckelt...
|
watchout
Legendundead
|
so viel hast du schon in deinem ersten Post geschrieben ![;)](/images/smilies/wink.gif) Die Frage ist was bewegst du mit dem Servo und welchen Parameter kannst du beeinflussen - also Position, oder Geschwindigkeit Nebenbei ist sicher auch interessant auf welchem Prozessor du die Berechnungen/Steuerung machst, dabei ist wichtig hat er eine FPU oder nicht? E: War ja wohl nicht so wichtig
Bearbeitet von watchout am 06.04.2011, 13:10
|
Viper780
ElderEr ist tot, Jim!
|
Interessantes Thema deshalb schreib ich auch noch dazu.
Hast du denn schon einen Integrator drinnen? Runge-Kutta braucht halt viele Daten und einiges an Rechenleistung und würde nur Sinn machen wenn du genauere Daten brauchst.
Ich glaub eher dass du ein Dämpfungsglied und einen etwas trägeren Regelmechanismus brauchst
|
böhmi
AdministratorSpießer
|
Schon mal einfach mit einem Kondensator zwischen Regler und Motor probiert?
|
LTD
frecher fratz
|
Sorry für die späte Antwort.
Ich benutze den Arduino Uno und möchte mein Servo einfach über ° ansteuern. Das gleiche Problem hatte ich bei der Ansteuerung über eine Wiimote, wobei ich bei diesem Problem einen vorgefertigten Source-Code gefunden habe, der eben diesen Runge Kutta Algorithmus drinnen hatte.
|
böhmi
AdministratorSpießer
|
Also ist die Positionsregelung im Servo integriert?
|
Viper780
ElderEr ist tot, Jim!
|
poste einfach mal die 2 code stücke - ich kann mir da nicht viel vorstellen wie du das steuerst
|
watchout
Legendundead
|
Also so wie ich das versteh sind die Runge-Kutta Methoden nur ein Werkzeug um Differentialgleichungen numerisch (aka schnell) zu approximieren. Dazu brauchst du aber erstens erst mal die Gleichung, und zweitens macht das imho in deinem Fall keinen Sinn weil du die Gleichung per Hand auch vorher lösen kannst und das Ergebnis verwenden und damit den eh relativ schwachen ATMega der auf deinem Board (wenn es das ist: http://arduino.cc/en/Main/ArduinoBoardUno ) drauf sein dürfte nicht überforderst. Du hast ja doch eine Real-Time Anwendung. Die Frage ist, "MUSST" du es berechnen? (aka, is es für Uni, Wissenschaftl. Projekt, ö.Ä. oder einfach für "Daham"?)
|