PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Joystick auswerten um Motoren zu steuern



Coleone
29.10.2010, 15:15
Um meinen Roboter fernzusteuern, möchte ich einen Joystick verwenden (Wii Classic Controller). Die X und Y Werte liegen jeweils zwischen 10 und 50, wobei 30 die Nullstellung ist. Als Motortreiber benutze ich RN-Motorcontrol mir RN-VN2 Dualmotor. Diese Werden über I2C angesteuert und im wesentlichen muss ich die information Drehrichtung und Geschwindigkeit übertragen.

Jetzt ist meine frage wie ich das realisiere, dass aus X und Y wert, die Werte für Richtung und Geschwindigkeit gebildet werden.
Zum geradeaus Fahren, müssen natürlich beide Motoren vorwärts bzw rückwärts drehen, und zum wenden auf der Stelle entgegengesetzt und das ganze je nach Joystick Ausschlag mit unterschiedlicher geschwindigkeit.
Problematischer wird lenken während der Fahrt, denn dazu muss dann eben eine Seite langsamer werden.

Ich erwarte keinen fertigen Code, aber ein paar Denkanstöße wären hilfreich, ich will dabei ja auch was lernen und es auch verstehen^^

gruß

Sascha

stefan_Z
29.10.2010, 23:46
Naja da würde ich mir ein brauchbares Gerüst bauen wo Faktoren für die "Abweichung" benutzt werden.

Y-Achse über Nullpunkt -> beide drehen gleichmäßig nach vorne
Y-Achse unter Nullpunkt -> beide drehen gleichmäßig nach hinten
X-Achse nach links -> rechtes Rad dreht schneller
X-Achse nach links -> linkes Rad dreht schneller

Am einfachsten wird es, wenn du anfangs die Werte erstmal normalisierst.
Aus 10-30 wird dann also -20 bis 0, aus 30-50 wird 0 bis +20 . Als Beispiel.
Wichtig ist, dass du Werte bekommst, die du einfach in Aktionen umrechnen kannst.

Die normalisierten Werte wirfst du dann in eine Auswertungs-Routine, die erst die Y-Achse berücksichtigt (also gemeinsame Bewegung beider Räder) und dann dazu eine Abweichung entsprechend der X-Achse errechnet.

Die Abweichung ergibt sich per Formel aus den normalisierten X-Achsen-Werten - hier solltest du dir ein paar Konstanten definieren, die du einfach ändern kannst - das macht das Leben leichter. Oder leg den Faktor zur Umrechnung auf die Wii-Knöpfe, dann ist die Reaktionsstärke einstellbar :-)

Was du auch bedenken musst: Schaltschwellen - die Wii-Joysticks zentrieren sich nicht immer ganz genau, dann würde die Karre schräg fahren. Außerdem ist es recht schwer, den Joystick gerade zu drücken - ähnlicher Fall.

Und wo ich jetzt grad in die Doku vom Treiber reinschaue: Der nimmt doch sogar Drehzahlen in U/min an - das macht recht einfach sage ich mal...

Coleone
30.10.2010, 07:34
Danke schonmal für die Vorschläge, und so ähnlich habe ich es gestern auch schon angefangen. Die Joysticks des Controllers werden bei jedem anschließen neu Kalibriert und der Nullpunkt auf 30 gelegt. Außerdem werde ich in der auswertung alles zwischen 28 und 32 als keine bewegung des joysticks ansehen, da sonst die motoren manschmal schon was machen, wenn ich nichts bewege.

Seit gestern habe ich aber das Problem, das die MotorControl über I2C nichts mehr macht, werde heute mal RS232 probieren...das hat mich gestern wieder meine nerven gekostet....