Servobewegung mit Runge-Kutta glätten? Wie?

Seite 1 von 1 - Forum: Coding Stuff auf overclockers.at

URL: https://www.overclockers.at/coding-stuff/servobewegung-mit-runge-kutta-glaetten-wie_223283/page_1 - zur Vollversion wechseln!


LTD schrieb am 02.04.2011 um 23:41

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 schrieb am 03.04.2011 um 16:01

Die Frage ist doch: was willst du erreichen

Weil sobald du die Geschwindigkeitskurve abflachst, reduziert sich natürlich auch die Reaktionsgeschwindigkeit des Servos.


LTD schrieb am 03.04.2011 um 20:53

Ich möchte, dass das Servo sich flüssig bewegt und nicht vor sich hin zuckelt...


watchout schrieb am 03.04.2011 um 23:54

so viel hast du schon in deinem ersten Post geschrieben ;)

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 :p


Viper780 schrieb am 28.04.2011 um 13:07

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 schrieb am 28.04.2011 um 13:18

Schon mal einfach mit einem Kondensator zwischen Regler und Motor probiert?


LTD schrieb am 28.04.2011 um 14:13

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 schrieb am 28.04.2011 um 14:19

Also ist die Positionsregelung im Servo integriert?


Viper780 schrieb am 28.04.2011 um 15:04

poste einfach mal die 2 code stücke - ich kann mir da nicht viel vorstellen wie du das steuerst


watchout schrieb am 29.04.2011 um 11:02

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"?)




overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025