Kreuzmischerfunktionen

    • Offizieller Beitrag

    Hallo Gemeinde,

    ich bräuchte mal eure Unterstützung. Es ist wahrscheinlich nur ein kleines Problem für euch, aber ich steh' momentan etwas daneben.

    Bei der Kreuzmischerfunktion, die ich in die Fahrtregler programmiert habe, gibt es eine Stelle, bei der ein Rad während der Fahrt die Richtung wechselt. Das muss (nach meiner Ansicht) so sein. Allerdings ist das wohl ein kleiner Haken drin, den ich jetzt erst festgestellt habe. Bei der Suche nach dem Fehler bin ich dann auf ein anderes Problem gestoßen. Kurzum... : ich wollte mal wissen, wie es standardmäßig in den Funken gemacht ist.

    Dazu habe ich die Standard-Kreuzmischerfunktion von der Spektrum DX5e untersucht. Von einem anderen Posting von BB-Dirk weis ich noch, dass hier maximal 50% bei Vollgasfahrt möglich ist.

    Ich habe die Fahrtrichtungen bzw. -geschwindigkeiten mal aufgezeichnet. (Der erste Wert ist vom linken Motor, der zweite Wert vom rechten Motor)

    An Punkt 4) ist der bereits bekannte Effekt, dass beide Motoren nur mit halber Kraft laufen.
    Wird der Kreuzknüppel ganz nach links gegeben (Stellung1), so beschleunigt der rechte Motor auf Vollgas, der linke Motor bremst komplett ab.

    Ok, damit könnte man fast noch leben, wenn auf den Geschwindigkeitsverlust bei der Vollgasfahrt hinwegsieht.


    Einige von euch haben sich die Kreuzmischerfunktion auf der Funke selbst eingestellt.

    Die Frage daher in die Runde: Wie habt ihr die Verteilung realisiert. Denn: 100% für die Lenkung ist zu viel. Der Bot schlägt Haken wie ein Hase. Aber bei 50% klappt die Aufteilung leider nicht linear.

    Ich wäre dankbar um eine kurze "Liste" von den o.g. Punkten und welche Fahrgeschwindigkeiten die Motoren dabei haben sollten. (Beispiel mit 50% bzw. welchen "Lenkanteil" ihr bei euren Funken programmiert habt.

    Danke !


    Marien: Du hattest mir mal eine Excel-Tabelle mit der Wunsch-Kreuzmischerfunktion geschickt, wenn man jeden Punkt einzeln parametrieren könnte. Leider ist die Tabelle wohl irgendwo so gut abgespeichert worden, dass ich sie nicht mehr finde. :rolleyes: Hast Du sie noch zufällig parat ?

  • Bei meiner HK-t6a ist punkt 4 und 5 jeweils 100% auf beiden Kanälen ebenso wie bei meiner 40MHz Funke mit dem analogen Mixer.

    Aber ich werde heute Mittag mal genauer nachsehen. Ich denke meine Mixer haben noch mehr unterschiede zu deiner Zeichnung. Ich denke 2 und 7 sind auch -100/100% bzw 100/-100%.

    Erfahrungen sind was sehr nützliches, leider macht man sie erst kurz nachdem man sie gebraucht hätte...

    Einmal editiert, zuletzt von Krümmel (16. April 2013 um 07:43)

  • Zitat

    Original von IBF
    Hast Du sie noch zufällig parat ?


    Die muss ich noch haben. Ich werde sie Heute Abend suchen und schicken.

    Die Einstellung so wie Krümmel die beschrieben hat, ist die normale, denke ich.

    Marien

    Scraptosaur, Midnight Oil, Lt Lee, Mecha Knights, Rockey, Race Robots, Artbots, Linefollowers.

    • Offizieller Beitrag

    Danke Jungs !

    Additional:
    Wenn ihr eine Überprüfung eurer Mixerfunktion macht, dann hätte ich noch eine Bitte: prüft auch die "Übergänge" von einer Drehrichtung in die Andere.
    Leider ist mir das jetzt erst aufgefallen, dass diese Punke in der oberen Grafik fehlen. => Werde ich heute abend nachtragen.

    Somit für o.g. Beispiel:
    - Kreuzknüppel ist in Mittelstellung
    - Kreuzknüppel vorwärts bis zur Hälfte: Motoren müßten mit +25/+25 laufen.
    - Von dieser Stellung aus ganz nach links. Also mittig zwischen 1) und 2) . Das ergibt bei den Motoren -25/75 .
    => Wenn von +25/+25 auf -25/75 gegangen wird, dann ergibt sich rechnerisch auch einmal der Wert 0/50 . Das heißt, dass der Motor bei diesem Stellungswechsel seine Drehrichtung ändern muss. Das wäre dann wieder so ein "Stolperer" bei der Motorbewegung.

    • Offizieller Beitrag
    Zitat

    Original von Marien
    Ich habe "rc mixer algorithm" in Google geworfen. Ein hoffentlich brauchbares Resultat ist:
    http://www.picaxeforum.co.uk/archive/index.php/t-13468.html

    Danke Marien !
    Hab' jetzt mal kurz angelesen.

    Ok, das ist noch einfach und lässt sich realisieren. Denn der Lenkeinschlag ist hier mit 100% festgelegt.
    Bleiben zwei Punkte:
    - Lenkeinschlag geringer, z.B. mit 50% festgelegt
    - wie sieht es mit den Mischwerten aus, wenn von "halbgas vorwärts" nach "halbgas / volle Linkslenkung" geschwenkt wird.

    => .... weitersuchen. :D

    • Offizieller Beitrag
    Zitat

    Original von Krümmel
    Rein vom logischen her von 50/50% nach 25/50%.

    Vielleicht hilft dir das weiter: http://klaas.homeip.net/ArduinoWiki/do…te:kreuzmischer

    Danke für die Tipps.

    Zitat

    /*
    Modus Soft berechnung, Werte werden jeweils halbiert und dann addiert.
    */


    Der Programmierer macht es leider so wie die Spektrum auch. Bei Vollgas-Vorwärts laufen beide Motoren nur auf 50%.
    Diese Art der Kreuzmischerfunktion ist zwar absolut leicht zu programmieren, aber eigentlich wollte man ja 100% zum Fahren ausnutzen...

    Zitat

    Weiter steht etwas von: sin und cos mit Verschiebung über 45°...


    *schluck* Die Sinus- und Cosinusfunktion ist im Prozessor natürlich nicht serienmäßig vorhanden. Ich hab's noch nie ausprobiert. Aber ich denke, dass sie benötigte Rechenleistung so viel Rechnerzeit schlucken wird, dass die anderen Funktionen zu kurz kommen.

  • Ich weiß wie einfach es für Rollstühle Mechanisch gelöst ist: die Joystick dreht 2 Poti's die unter + und - 45° von Vorwärts-Rückwärts Bewegung stehen. Aber wie das Elektronisch gemacht wird...?

    Im oben genannte Thread steht: de beide Signalen addieren / subtrahieren und bis Maximum / Minimum begrenzen.

    Marien

    Scraptosaur, Midnight Oil, Lt Lee, Mecha Knights, Rockey, Race Robots, Artbots, Linefollowers.

    Einmal editiert, zuletzt von Marien (16. April 2013 um 15:09)

    • Offizieller Beitrag
    Zitat

    Im oben genannte Thread steht: de beide Signalen addieren / subtrahieren und bis Maximum / Minimum begrenzen.


    Ja, so habe ich das derzeit auch gelöst.
    Aber es ist "Vollgas" für beide Motoren möglich.
    Das heißt (Der Lenkeinschlag ist auf 50% heruntergerechnet/gekürzt):
    1)
    Wenn der Kreuzknüppel mittig nach vorne ist, laufen beide Motoren mit +100/+100. Dann den Knüppel ganz nach links vorne. Jetzt wird der linke Motor auf 50% gedrosselt (100%-Gas minus 50%-Lenkung = 50%), der rechte Motor läuft weiterhin auf 100% (100%-Gas plus 50%-Lenkung = 100%). Also nur eine ganz leichte Kurve.
    2)
    Wenn der Kreuzknüppel mittig und 50% nach vorne ist, laufen beide Motoren mit 50%. Ok. Dann den Kreuzknüppel ganz nach links. Jetzt wird am linken Motor 50% abgezogen. Der linke Motor bleibt stehen (50%-Gas minus 50%-Lenkung). Der rechte Motor bekommt 50% dazu. Er geht auf 100% Vollgas (50%-Gas plus 50%-Lenkung). Der Bot schlägt einen Haken.

    => Das ist keine gute Steuerung, je nach Gas-Stellung reagiert die Lenkung entweder "lahm" oder "zickig".

    Darum wollte ich von euch die Erfahrungen mal "sammeln", wie ihr am Besten zurechtkommt bzw. wie eure Funken das umgesetzt haben.

    • Offizieller Beitrag
    Zitat

    Original von Marien
    IBF: you've got mail :)
    Und ein Bild auch hierzu, fürs Thema.

    Mail ist angekommen. Danke !

    Mal sehen, ob ich die Aufteilung in zwei lineare Bereiche schaffe.

    • Offizieller Beitrag

    Nachdem jetzt zwei Turniere anstehen (Antwerp-Expo und MMMV15) musste dringend eine Lösung für die Kreuzmischer-Verbesserung gefunden werden.

    Leider ist es auf die Schnelle nicht möglich, die Lösung von Marien in die Software zu integrieren. Meine Mathe-Kentnisse sind etwas eingestaubt, ich habe keine praktikable Lösung gefunden. Im Prinzip würde ich es gerne über zwei Geradengleichungen machen. Aber die Rechenzeit bei der Division für die Steigung der Gerade kostet soviel Rechenzeit im Prozessor, dass ich die Abfrage der Empfängerpulse nicht mehr richtig erwische. (Jitter).

    Es wird wohl bei der nächsten Generation der Fahrtregler darauf hinauslaufen, dass ich ein Kennlinienfeld im PC (anhand der Vorgaben beim Parametrieren des Fahrtreglers) berechne und diese einzelne Kennlinienschar dann abgespeichert wird.

    Einstweilen habe ich eine Lösung realisiert, die eine deutliche Verbesserung der bisherigen Software bedeuted. Ich denke, damit kann man (zumindest die nächsten Wochen :D ) leben.

    In der Standardparametrierung wird, wie bisher, bei einer Linkskurve der linke Motor um den Lenkeinschlag in der Geschwindigkeit reduziert. Der rechte Motor um den gleichen Beitrag beschleunigt. Soweit nichts Neues.

    Neu ist, dass ich jetzt bei der Null-Linie (also beim Übergang von vorwärts auf rückwärts) keinen Richtungs-Sprung mehr drin habe. Das war früher so. Denn der Kreuzknüppel sollte immer in die Richtung zeigen, wo der Bot auch hinfahren soll.
    Jetzt wird die Motorgeschwindigkeit ohne Richtungswechsel (zumindest bei 100% Lenkeinschlag) gemacht.
    Heißt: Kreuzknüppel ohne vorwärts/rückwärts nach links: Der Bot dreht auf der Stelle nach links. Wird jetzt der auf Linksanschlag gelegte Kreuzknüppel ein bißchen nach unten gezogen, so wird das linke und rechte Rad gleichmäßig mit einem "Offset" versehen. Nachdem das linke Rad aber schneller dreht als das rechte, wird der Bot nach rechts (zurück) fahren. Und das, obwohl der Kreuzknüppel nach links zeigt.

    Ich habe lange mit dieser Entscheidung gehadert. Aber nachdem es Spektrum bei der DX5e genauso macht und von euch offensichtlich mit der Programmierung einer Kreuzmischerfunktion in der Funke das genauso gemacht wird, habe ich mich angeschlossen. Also alle Skrupel über Bord geworfen und genauso programmiert.

    Bei 100% Lenkausschlag sieht das dann so aus:


    Nachdem der Kreuzmischer über das PC-Programm auf geringeren Lenkeinschlag parametriert werden kann, sieht das dann bei 50% Lenkausschlag so aus:

    Hier muss also schon "gefühlvoll" Gas gegeben werden. Denn im Vergleich zu der eingebauten Lösung bei der DX5e kann man jetzt durch Vollgas auch tatsächlich beide Motoren mit 100% ansteuern.

    Ein Nachteil dabei: Wenn man Vollgas geradeaus fährt und der Knüppel auf Linksanschlag gelegt wird, dann läuft der linke Motor zwar mit 50%, aber die Kurve ist eher ein kleines "Kürvchen" als ein brauchbarer Lenkeinschlag.


    Jetzt kommt der Gag, den ich neu eingeführt habe und womit ich eigentlich ganz zufrieden bin:
    Abhängig von der Höhe der Gasstellung (vorwärts/rückwärts) wird das kurveninnere Rad zusätzlich mit abgebremst. Und zwar immer 50% von der Gasstellung im Anteil von dem parametrierten maximalen Lenkeinschlag.

    Beispiel: Der Lenkeinschlag hat ein vorgegebenes Maximum von 50%. Also bei reiner lLnks-/Rechtsdrehung laufen die Motoren mit -50% und +50%.
    Die Gasstellung ist dabei 0%, also wird da auch nichts zusätzlich mit dazugemischt bzw. abgezogen.

    Wenn jetzt das Gas auf 100% gegeben wird, dann wird hier ein Anteil von 25% (wegen 50% Lenkmaximum-Parametrierung und davon noch einmal 50%) am kurveninneren Rad abgezogen. Also läuft das kurveninnere Rad normalerweise mit 100% (vom Gas) minus 50% Lenkeinschlag = 50%. Jetzt durch den "Overdrive" 25% abgezogen. Ergibt als 25%. Das rechte Rad dreht weiterhin mit 100% (wegen Gas) plus 50% (wegen Lenkeinschlag) = 150%. => Wird auf 100% limitiert.

    Mit diesen 25%/100% kann man schon brauchbare Kurven fahren.

    Sieht also dann so aus:


    Wo ich noch nicht ganz glücklich bin: Bei einer Gasstellung von 50% und vollem Linksanschlag dreht das rechte Rad schon mit 100%. Das linke Rad aber mit -25%. Das ist ein "Haken" wie ein Hase.
    Aber derzeit habe ich leider keine bessere Lösung im Ärmel.

    So wie Leo mal geschrieben hat: "Bang-Bang"-Steuerung. Damit funktioniert das optimal. :D

  • Gute Arbeit, Reiner! Das kommt doch sehr nah an meine Tabelle? Ich könnte letzte Woche auch kein einfachere Methode entwickeln.
    Im dritten Bild steht noch ein 100/0 wo ich 100/-25 erwarte.
    Ein Frage für nächste Woche: Ist es nicht möglich die Lenkhilfe an beide Motoren statt nur es Kurveninnere ab zu ziehen? Damit würde im Beispiel -25/75 entstehen?

    Marien

    Scraptosaur, Midnight Oil, Lt Lee, Mecha Knights, Rockey, Race Robots, Artbots, Linefollowers.

    • Offizieller Beitrag

    Danke Marien für die Rückmeldung und Durchsicht.

    Zitat

    Im dritten Bild steht noch ein 100/0 wo ich 100/-25 erwarte.


    Ja, Du hast recht. Das habe ich übersehen. (Copy/Paste-Fehler :D )

    Zitat

    Ein Frage für nächste Woche: Ist es nicht möglich die Lenkhilfe an beide Motoren statt nur es Kurveninnere ab zu ziehen? Damit würde im Beispiel -25/75 entstehen?


    Ja, vom programmieren her ist das "Abziehen" kein Problem.
    Ich muss das mal durchdenken, nicht dass wir uns dann an anderer Stelle einen Nachteil einfangen.

    Bei Maximalausschlag (100%/100%) und einem vollen Links-Lenkeinschlag wäre das dann:

    Linker Motor: 100%-Gas minus 50%-Lenkeinschlag minus 25%-Gasanteil = 25%. => Ok
    Rechter Motor: 100%-Gas plus 50%-Lenkeinschlag minus 25%-Gasanteil = 125%. => Limitiert auf 100%. Geht also nicht so einfach.

    Ich kann die Beschleunigung vom kurvenäußerem Rad auch nicht so ohne weiteres eleminieren. Denn sonst haben wir bei einer Gas-Neutralstellung (Bot rotiert auf der Stelle) und einem leichten Gas plötzlich einen Sprung. Das muss ich unbedingt vermeiden.

    Aber wir bleiben diesbezüglich in Kontakt! Irgendwann haben wir den Stein der Weisen. :D

    Zitat

    Ein Frage für nächste Woche:...


    Den Fahrtregler für Dich habe ich jetzt schon dabei (fahre nach der Arbeit gleich los zu Tina). Du kannst den Fahrtregler also am Sonntag in Antwerpen schon haben.
    Selbstverständlich ist in dieser Baugruppe jetzt schon der aktuelle Stand von der Kreuzmischersteuerung enthalten. ;)