- fchao-Sinus-Wechselrichter AliExpress         
Ergebnis 1 bis 10 von 14

Thema: Joystick Fernsteuerung für Differentialantireb ("Panzer")

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    HaWe
    Gast

    Joystick Fernsteuerung für Differentialantireb ("Panzer")

    hallo,
    ich wollte mich an die Programmierung einer Joystick Fernsteuerung für einen Differentialantireb ("Panzer") machen, stoße aber auf ein Programmierproblem:

    Der Joystick hat ein Sattelgelenk, d.h. zwei Potentiometer übereinander, die im rechten Winkel zueinander stehen.
    Die Schrägstellung ist also die Resultierende aus den Einzelauslenkungen (wenn ich mich nicht irre):

    (1) Winkel: tan(alpha) = Gegenkathete/Ankathete <=> alpha = atan2(Gegenkathete, Ankathete)
    (2) Auslenkung = 1/2 (SQRT (Ankathete² + Gegenkathete²) )

    Gedacht ist die Funktion so, dass natürlich bei schräger Joystickstellung die Innenkette langsamer dreht als die andere: soweit logisch.
    Aber:
    bei voller 90° Seitenbewegung des Joysticks soll nicht die Innenkette still stehen, sondern mir gleicher Geschwindigkeit aber gegenläufig, so dass der Roboter nicht "über die Innenkette schiebt", sondern auf der Stelle wie ein Kreisel um seinen Mittelpunkt dreht ("spinning").
    Bei schräg nach vorn mit 45° soll dann der Stillstand der Innenkette erreicht sein, ab 45-90° ihr Rückwärtslauf beginnen.

    Bei Drücken des Joysticks nach hinten ist das ganze dann spiegelverkehrt.

    Wie fasst man jetzt die ganze Sache trigonometrisch an?
    Ich kenne Winkel und Auslenkungsweite, und daher den Ausschlag nach Stärke und Richtung (s. (1)+(2) ),
    aber wie kriegt man jetzt daraus die gegenläufige Kettenbewegung zwischen 45-90° ?

    Hat das schon mal wer gemacht oder kennt einen Link?

    (wenns per Formel nicht klappt muss notfalls eine Lookup-Tabelle her, das finde ich aber SEHR hässlich!)
    Geändert von HaWe (28.02.2016 um 21:09 Uhr)

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    07.04.2015
    Beiträge
    901
    Keine Ahnung, ob das hilft, probiers einfach aus:

    Code:
    // Calculate joystick data to tank mixed control 
            private void CalculateTankCoordinates()
            {
                double d = 0;
                int A = 0, B = 0;
                d = ((MaxY - System.Math.Abs(ValueY)) * (System.Math.Abs(ValueX) / MaxX));
                if (ValueX >= 0)
                {
                    A = (int)(ValueY + d);
                    B = (int)(ValueY - d);
                }
                else
                {
                    A = (int)(ValueY - d);
                    B = (int)(ValueY + d);
                }
                ValueLeft = A;
                ValueRight = B;
                
            }
    Mit ValueX/Y: Eingangswerte
    MaxX/MaxY: Maximalausschläge
    ValueLeft/Right: Ausgangswerte als int konvertiert (so ne PWM kann ja mit doubles nix anfangen)

  3. #3
    HaWe
    Gast
    hallo,
    ganz vielen Dank! Das muss ich wirklich mal ausprobieren und gucken was rauskommt, vielleicht sogar mal mit Excel simulieren.
    Überraschend ist, dass A und B nur aus ValueY abgeleitet werden, und ValueX gar nicht dabei vorkommt, aber mal gucken...

    danke nochmal! 8-)

    - - - Aktualisiert - - -

    ps,

    deine Stichwörter waren aber gar nicht schlecht - klar, nach "tank" muss man suchen....
    habe damit nochmal gesucht und jetzt zusätzlich gefunden:

    http://home.kendra.com/mauser/Joystick.html

    Get X and Y from the Joystick, do whatever scaling and calibrating you need to do based on your hardware.
    Invert X
    Calculate R+L (Call it V): V =(100-ABS(X)) * (Y/100) + Y
    Calculate R-L (Call it W): W= (100-ABS(Y)) * (X/100) + X
    Calculate R: R = (V+W) /2
    Calculate L: L= (V-W)/2
    Do any scaling on R and L your hardware may require.
    Send those values to your Robot.
    Go back to 1.


    und der noch:

    http://electronics.stackexchange.com...al-motor-drive


    muss ich beide auch mal durchprobieren!

  4. #4
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    07.04.2015
    Beiträge
    901
    Zitat Zitat von HaWe Beitrag anzeigen
    Überraschend ist, dass A und B nur aus ValueY abgeleitet werden, und ValueX gar nicht dabei vorkommt, aber mal gucken...
    Das ist nicht richtig. ValueY gibt hier die Vorwärts/Rückwärts-Geschwindigkeit (auf dem Bildschirm ist das Vorwärts/Rückwärts in Y-Richtung) für beide Ketten an. Je nach Seitenausschlag wird dann auf die eine Kette d aufgeschlagen und auf der anderen Seite d von dieser Geschwindigkeit subtrahiert. d ist sehr wohl von ValueX abhängig.

  5. #5
    HaWe
    Gast
    hallo,
    da ich den Code für einen Arduino brauche und der Arduino-Link
    http://electronics.stackexchange.com...al-motor-drive
    bereits auch alle Skalierungen für analogRead und pwm-out hatte, und er wirklich gut funktioniert, habe ich mich für diesen entschieden.

    In jedem Fall aber vielen Dank nochmals für deinen Tipp!

  6. #6
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    07.04.2015
    Beiträge
    901
    Keine Ursache.

    Als ich damals 'nen virtuellen Joystick für C# programmieren wollte, hab ich allerdings auch erst mal ne Stunde blöde geguckt.
    Erst dann fiel mir auf, dass ich einfach den Seitwärtsausschlag auf die Vorwärts-/Rückwärts-Geschwindigkeit auf der einen Seite subtrahieren muss und auf der anderen Seite addieren.

    Manchmal hilft nur festes Nachdenken, auch wenn's weh tut.

Ähnliche Themen

  1. Antworten: 10
    Letzter Beitrag: 01.11.2017, 13:53
  2. Panzer/Raupe mit 2-Achs Joystick
    Von goerdy im Forum Software, Algorithmen und KI
    Antworten: 5
    Letzter Beitrag: 17.07.2012, 21:02
  3. Antworten: 2
    Letzter Beitrag: 15.06.2011, 22:18
  4. Panzer-/ Raupenketten "Links"
    Von squelver im Forum Mechanik
    Antworten: 34
    Letzter Beitrag: 17.05.2007, 17:47
  5. SnugTerm (aka "Winterm") - serielle Fernsteuerung
    Von Andree-HB im Forum Vorstellungen+Bilder von fertigen Projekten/Bots
    Antworten: 12
    Letzter Beitrag: 16.04.2007, 15:09

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Labornetzteil AliExpress