Hallo Zusammen,
ich baue für eine Studienarbeit einen roboter mit zwei Motoren.
Dieser soll je nach Steuerung durch einen Joystick gelenkt werden.
Vom Joystick bekomme ich Werte für die Auslenkung der X- sowie der
Y-Achse. Anhand dieser Werte sollen die Motoren angesteuer werden.
Nun ist das vorwärts und rückwärtsfahren sowie das auf der Stelle drehen
kein Problem. Jedoch fehlt es mir an einer Formel für das Fahren nach
z.B. recchts vorne, rechts hinten, links vorne oder links hinten.
Hatte eventuell jemand hier schon einmal das selbe Problem und hat eine
gute Formel als Lösung für das Problem des Lenkausschlags in relation
zur Geschwindigkeit gefunden?
Mit freundlichen Grüßen
Geschwindigkeit = Lenkauschlag * 42
Mehr Hilfe kanns nur mit mehr Infos geben.
Evtl suchst du funktional etwas V-Mischer ähnliches, aber das ist mehr
geraten...
Ja, ist relatif einfach : die Motoren werden normalerweise mit PWM
angesteuert. Ihre dreh Radius wird dan prozentual bei diese PWM werten
addiert :
Drehrate = 10% = 0,1
PWM-basis = basis speed
PWM_Links = PWM basis*(1+Drehrate)
PWM_Rechts = PWM basis*(1-Drehrate)
Idealerweise ergeben negative PWM-werte eine andere Drehrichtung.
Dein Problem kenne ich. Das hatte ich auch schon mal. Der Joystick hat 4
Mikroschalter, bei Rechtsanschlag dreht sich das Modell auf der Stelle
rechts rum (die Motoren drehen gegenläufig), bei Linksanschlag dasselbe
in Grün nur anders rum.
Für rechts vorne, links vorne, links hinten und rechts hinten habe ich
damals mit KV-Diagrammen eine Lösung mit mehreren Logikgattern
ermittelt. Das erschien mir aber zu aufwendig und der Roboter flog
langfristig in die Ecke.
Heute kann man das Problem leicht mit einem µC lösen. Reine Software.
Die Motoren müssen dann aber über Relais oder Transistorbrücken
angesteuert werden, weil du die Mikroschalter im Joystick für die
Eingabe benötigst!
Student schrieb:> Jedoch fehlt es mir an einer Formel für das Fahren nach> z.B. recchts vorne, rechts hinten, links vorne oder links hinten
Wieso, Panzerfahren ist die simpelste der Fortbewegungsmethoden, beide
Gleisketten folgen 2 parallelen Linien.
In einer Kurve ist die äusser Linie länger als die Innere.
Genau um diesen Betrag muss der äusserer Motor schneller laufen als der
Innere, um diese Kurve zu fahren.
Das Problem: Die Ketten rutschen in dem Moment, daher ist die Berechnung
vielleicht genau, die Bewegung eher Zufall.
Besser geht es mit 2 Rädern auf solidem Untergrund, Ballonreifen, und
einem Spornrad.
Da wirst Du wohl experimentieren müssen.
Den Ausschlag wirst DU wohl bewerten und in eine Drehzahldifferenz
umsetzen müssen.
Warum das kein anderer machen kann ist recht einfach. Es kommt auf das
Fahrverhalten und den tatsächlichen Einsatz an.
Stell Dir mal vor, bei einem Rennwagen "reißt" jemand das Steuer rum...
Hoppla!
Stell Dir mal vor, Du willst/musst ausweichen und nichts passiert...
Noch mal Hoppla!
Wird das nun ein Robotor - also etwas das weitestgehendst selbstständig
irgendeine Aufgabe erfüllen soll (z.B. von Punkt A nach B kommen), oder
"einfach" einem ferngesteuerten Fahrzeug?
Da du die Frage so stellst, gehe ich mal von ersterem aus.
Da wirst du leider zusätzliche Sensoren rbauchen (haben die allermeisten
Roboter ja nicht umsonst) um sich irgendwie zu orientieren, denn
physikalsiche Bewegung ohne fixen Referenzpunkt hat immer eine
Zufallskomponente und die SUmmiert sich desto länger der Robotor
selbstständig den einprogrammieren Weg fährt...
Berechnen kann man natürlich.
Für Kettenantrieb so wie laberkopp geschrieben hat.
Für ein Fahrzeug mit Lenkstange wäre es am sinnvollsten, den Weg der
Hinterreifen zu ermitteln mit einem Signalgeber o.ä. unabhängig vom
Motor.
Daraus kannst du wieder die Linie ableiten die die jeweiligen Räder
zurückgelegt haben und entsprechend die Kurve.
Das Problem ist leider nicht so gut erklärt. Deswegen versuche ich jetzt
mal zu raten, was du brauchen könntest.
Um Kurven zu fahren, musst du die beiden Bewegungen überlagern, d.h.
GeschwindigkeitLinkerMotor = Fahrt.LinkerMotor * Y.Auslenkung +
Drehung.LinkerMotor * X.Auslenkung.
Dabei sind Fahrt und Drehung feste Variablen für Maximalwerte. Um eine
Abhängigkeit von der Geschwindigkeit einzuführen, wäre es möglich, den
Wert GeschwindigkeitLinkerMotor zusätzlich zu begrenzen, z.B. auf
maximale Beschleunigung. Dann heißt der zweite Teil des oberen Terms,
mal linear approximiert, nun Drehung.LinkerMotor * X.Auslenkung -
Drehung.LinkerMotor * X.Auslenkung *
(Y.Auslenkung/(Y.MaxAuslenkung+MinLenkrate)) (angenommen, die Räder
drehen nicht durch und bei maximaler Geschwindigkeit lässt es sich noch
mit dem angepasstem Wert der MinLenkrate lenken).
Hoffentlich konnte ich helfen.
MfG, Viktor
Ein durchaus komplexes Problem, wenn Schlupf ins Spiel kommt..
Ich beobachte immer wieder ganz gebannt meinen Rasenmähroboter (Bosch
Indego), der trotz mit dem Auge erkennbaren einseitigem Durchdrehen fast
perfekte parallele Bahnen fährt. Wahrscheinlich eingebauter Kompass.
Und der Staubsauger fährt auf perfektem Untergrund ganz leichte Kurven
und meint er fährt geradeaus:-)
Eine eigene Frage?
Dieser Thread ist über 8 Jahre alt.
Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.