Fahrtrichtungen/-geschwindigkeiten bei Kreuzmischerfunktionen

    • Offizieller Beitrag

    Hallo Roboteers,

    beim letzten Turnier ist ein kleiner Fehler in der Software von meinen Fahrtreglern aufgefallen: Es geht um die integrierte Kreuzmischerfunktion. Sobald eine kleine Geschwindigkeit (Kreuzknüppel nach vorne oder zurück) gefahren wird, fährt der Bot ganz normal. Wenn bei dieser kleinen Geschwindigkeit aber ein großer links/rechts-Ausschlag gemacht wird, dann stimmt die Fahrtrrichtung plötzlich nicht mehr.

    Ursache war ein Fehler in der Überlagerung der beiden Stellgrößen "vorwärts"/"rückwärts" mit "links"/"rechts". Sobald der Lenkeinschlag größer war als die Fahrtrichtung, wurde der Drehsinn der Motoren (=Fahrtrichtung) falsch berechnet bzw. intern falsch vorgegeben.

    Als Anlage habe ich jetzt mal eine Übersicht gemacht. Die ersten Punkte sind nur "standard", ist praktisch zum "Kennenlernen" und "Verstehen" für euch. Wichtig für mich wären die letzten vier Punkte. Liege ich da jetzt richtig? Wenn die Räder so drehen, wie das jetzt von mir vorgegeben wurde, fährt der Bot dann in die Richtung, die ihr anhand der Kreuzknüppelsteuerung vorgegeben habt?

    Hier wäre die Skizze mit der Tabelle: Kreuzmischerfunktionen

    //Edit: Mist, die html-Seite verliert irgendwie ihre Grafik. Hier also dann direkt eingebunden:


    Randbedingungen:
    Der Lenkeinschlag, also "links"/"rechts" ist auf 50% untersetzt. Heißt: bei vollem Linkseinschlag dreht der Motor nur mit 50%.

    Wo ich hinauswill:
    Bei der Knüppelposition 12) ist der Knüppel nur 25% in die Vorwärtsfahrtrichtung gedrückt. Also laufen beiden Motoren zunächst mal mit 25% vorwärts. Dann wird der Knüppel gleichzeitig (25% vorwärts bleibt!) auf Vollanschlag nach links gezogen. Also 50% nach links für eine Linkskurve.
    Nach meiner derzeitigen Berechnung muss durch die 50% Linkskurve der linke Motor 50% langsamer laufen als die Fahrtbewegung ist. Also 25 Fahrtbewegung nach vorne minus 50% langsamer ergibt dann 25% Fahrbewegung nach rückwärts.
    Der rechte Motor läuft aber weiterhin mit 25% vorwärts.

    Ist das so korrekt für euch, damit ihr damit sauber steuern könnt ? (bzw. "könntet", denn die Meisten verwenden ja die Panzersteuerung oder die Kreuzmischerfunktion der Funken)

    • Offizieller Beitrag

    interresantes Problem. Bei einer Funke werden, um einen Kreuzmischer zu erreichen, zwei Mischer programmiert.

    a: Kanal 2 (Slave) zu Kanal 1 (Master)
    b: Kanal 1 (Slave) zu Kanal 2 (Master)

    zum Teil differieren hier die Mixer....

    Ich glaube aber, dass du da nicht ganz richtig liegst.

    ich denke, dass (beispielsweise) bei der Position Nr. 12:

    das linke Rad macht 25% rückwärts (1 Mischer macht 25% vorwärts, 2 Mischer macht 50% rückwärts, in Summe 25% rückwärts)
    das rechte Rad macht 50% vorwärts (1 Mischer macht 25% vorwärts, Mischer 2 macht 50% vorwärts, in Summe 75% vorwärts (ich denke, dass man hier aber nicht positiv aufsummieren kann bzw. das das passiert) aber durch deine Randbedingung auf 50% begrenzt. Möglicherweise setzt sich der Mischer mit dem höheren Ausschlag hier durch.

    Gruß Dirk

    • Offizieller Beitrag
    Zitat

    Mischer 2 macht 50% vorwärts, in Summe 75% vorwärts (ich denke, dass man hier aber nicht positiv aufsummieren kann bzw. das das passiert)


    Das waren die ersten Ansätze, als ich den Kreuzmischer programmierte: Das Lenksignal wird beim kurveninneren Rad abgezogen und beim kurvenäußerem Rad dazuaddiert. Aber das ist zu sportlich, der Bot schlägt Haken wie ein Hase. Darum wurde die Bescheunigung des kurvenäußeren Rads herausgenommen. (Kann allerdings optional per Parametrierung gesetzt haben, wer das so haben will.)


    Zitat

    Möglicherweise setzt sich der Mischer mit dem höheren Ausschlag hier durch.


    Ok, das werde ich mal durchchecken, ob das ein brauchbares Fahrverhalten ergibt.

  • Ich würde in diese richtung denken (sehe bild).
    Weiss aber nicht wie mann das machen kann :)

    In die tabelle stehen meine %-en und deine punkten (10, 12 usw)

    Marien

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

  • //Edit: Nicht von dem Nick verwirren lassen, ich hatte gerade versucht, Probleme mit dem Chatzugang für Krümmel zu lösen. Und dabei vergessen, mich umzumelden... :rolleyes:

    Reiner / IBF

    =====================================0


    Danke für die Mühe, die Du Dir mit der Tabelle gemacht hast!

    Ganz durchschaue ich das System noch nicht. Ich muss mir die Grafik noch ein bißchen genauer ansehen.
    Die blaue Linie (gerade vor und zurück) ist klar: ±100%, wenn keine Lenkbewegung mit dabei ist. (Punkt 2)

    Bei der roten Linie wird der Bot praktisch im Stand gedreht. Also bis zu ±50%. Ok. (Punkt 4 und Punkt 5)

    Was ist Punkt 6 (?): Der Kreuzknüppel ist zunächst auf "Vollgas" nach vorne (= Punkt 2) und wird dann ganz nach links geschoben. (?) Also ist der Kreuzknüppel links oben auf Anschlag. Beim Punkt 6 würde das linke Rad jetzt ebenfalls stehenbleiben, aber das rechte Rad mit 75% nach links drehen.

    Ich versuche das jetzt auf eine Systematik umzuwandeln:
    - Kreuzknüppel ist links oben (Punkt 6): links: 0% ; rechts 75%
    - Kreuzknüppel wird links auf Anschlag gehalten, aber von "Vollgas vorne" in Gas-Mittelstellung gebracht. Also den Knüppel von vorne in die Mitte ziehen dabei aber immer links auf Anschlag lassen: Das linke Rad wird von 0% auf 50% beschleunigt, Das rechte Rad von 75% auf 50% abgebremst.
    Das ist ein guter Übergang!
    Diese Lösung ist besser als das, was ich derzeit programmiert habe.

    Wie gesagt, mit der Grafik habe ich noch etwas Probleme beim Verständnis mit den Zwischenwerten. Ich schau es noch einmal genauer an und dann überlege ich mir eine Software-Realisierung.

  • Ich hatte letzten nacht leider keine zeit mehr das näher zu erklären. Du hast es aber ziemlich gut durchschaut.
    Ich war auf die suche nach fliesende übergange. Eigentlich ist ein art ellips entstanden.

    In zweiten blick würde ich vielleicht "L-motor 0% & R-motor 75%" nicht im punkt 6, aber zwischen 10 und 6 legen.

    Ich habe übrigens keinen problemen wenn ein bot bei 4 und 5 nicht auf 50% begrenst ist. Mit 100% fahre ich auch gut. Vieleicht sollte mann das einstellen können, im program oder durch einen dritten kanal am sender (ist das dualrate?).

    Marien

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

    • Offizieller Beitrag
    Zitat

    Vieleicht sollte mann das einstellen können, im program oder durch einen dritten kanal am sender (ist das dualrate?).


    Augenblicklich kann man es über die Parametrierung einstellen, wieviel "Lenkanteil" dabei ist. (Geht auch in dem Ant-Fahrtregler, den ich Dir zum Testen geliehen habe. ;) )

    Mit dem PC-Programm kann man einstellen: 100%, 75%, 50%, 25%.

    Diese Einstellmöglichkeit macht es dann leider etwas schwierig, hier mit verschiedenen "Stufenabschnitten" zu arbeiten.

    Die Umschaltung über einen weiteren Funkkanal habe ich nicht integriert. Wäre das von Vorteil ?

    Woran ich schon gedacht hatte: Die Prozenteinstellung für die Lenkanteile "variabel" zu machen. Und zwar, ob man nur auf der Stelle dreht (Bei Dir die rote Kennlinie). Oder ob die Lenkanteile mit einer Fahrtrichtung überlagert werden. Wären dann zwei Parameterscharen im PC-Programm zum Einstellen.

    Aber ehrlich gesagt gefällt mir Deine Lösung viel besser. Denn dann hat man zwischen "langsamer Fahrt vorwärts/rückwärts" und "auf der Stelle drehen", keinen riesigen "Sprung" in der Geschwindigkeit.

  • Zitat

    Original von IBF
    Die Umschaltung über einen weiteren Funkkanal habe ich nicht integriert. Wäre das von Vorteil ?


    Ja, wenn: der arenaboden (nicht immer gleich) rutschig ist; der bot beschädigt ist; ein andere Roboteer den roboter fahrt; mann wechselt von kampf nach Rockey...

    Marien

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

    2 Mal editiert, zuletzt von Marien (28. April 2012 um 18:02)

  • Zitat

    Original von IBF


    Ich beschäftige mich gerade im Rahmen meiner Projektarbeit (Planung u. Bau einer Fernsteuerung) mit den Kreuzmischerfunktionen und möchte obige Tabelle von IBF als Referenz für meine Anmerkungen nutzen, wobei ich nachfolgend die Bez. "Kreuzknüppelstellung" kurz KS nennen werde.
    In meinen Überlegungen komme ich zu anderen Ergebnissen wie IBF und Marien (Ellipse), insbesondere beim Zeitpunkt der Drehrichtungsumkehr und Mot.-Leistung bei Kurvenfahrt.

    Zur IBF-Skizze:

    1) KS1,2,3 sind klar, aber bei KS4 u. KS5 sehe ich eine Leistungsabsenkung auf 50%. Ist das so gewollt und technisch bedingt? Ich hätte hier (beim Drehen/Rotieren) auch 100% angezogen, wer langsamer drehen möchte braucht doch den Knüppel nicht so weit auslenken, oder sehe ich da was falsch?

    2) Bei den KS-Eckpunkten (KS6,7,8,9) sehe ich das komplett anders: KS6 (links-oben) müßte m.E. bewirken, den linken Motor auf 0% zu setzen (= bremsen!) und den rechten Motor auf 100% zu belassen, wobei natürlich (wie bei den anderen Beispielen auch) die 100% dem KS-Maximum entspricht (also Vollausschlag); jeder kleinere Wert ist bei anderer KS natürlich möglich.

    Der Ablauf wäre gemäß meiner Überlegung wie folgt:

    Bei KS2 laufen beide Mot. auf 100% (max. Vorwärtsfahrt). Beim Übergang auf KS6 (Linkskurve) wird die Leistung vom L-Mot. linear auf 0% reduziert während zeitgleich die Leistung vom R-Mot. NICHT erhöht wird. Mit Erreichen KS6 ist der L-Mot. gänzlich blockiert (da kurzgeschlossen!). Es erfolgt GENAU JETZT die Richtungsumkehr am L-Mot., sofern der Knüppel weiter in Ri. KS4 bewegt wird, wobei die Leistung am L-Mot. jetzt wieder linear (und gegenläufig) angehoben wird (wobei die Kurve immer enger wird und das Fz. zunehmend untersteuert). Mit Erreichen von KS4 wäre die Linkskurve (samt Hakenschlag ab KS6) beendet, der Bot wäre 100% am Drehen (L-Mot. = -100%, R-Mot. = 100%, Minuszeichen bedeutet gegenläufig).
    Ist dieser Ablauf eine praktikable Verfahrensweise oder liegen hier mech. Risiken, Sicherheitsbedenken od. Denkfehler meinerseits vor?

    Schlußbemerkung: Kann es nicht auch sein, dass diese Werte vom Einzelfall und somit stark vom Verhältnis Radstand:Spurweite abhängen? Falls dem so ist dann müßte jeder Roboteer die o.g. drei Möglichkeiten nacheinander durchspielen um festzustellen, welche Einstellung bei seinem Fz. die beste Fahrdynamik zur Folge hat. Würde im Umkehrschluß aber auch bedeuten, dass es nicht "die eine" Verfahrensweise gibt...

    Marien: Mich würde interessieren, ob die von Dir vorgestellte Tabelle (die mit der "Ellipse") nur eine theoretische Überlegung/Berechnung ist (wie momentan bei mir noch), oder ob Du genau diese Werte mit einem Fz. umgesetzt/erprobt hast. Und hast Du auch mal dazu in direktem Vergleich die IBF-Einstellung praktisch ausgetestet oder sonstwie in Deine Überlegungen mit einbezogen?
    Und warum möchtest Du den Zeitpunkt der Richtungsumkehr "nicht im punkt 6, aber zwischen 10 und 6 legen."? Bringt Dir diese "Spreizung" in der Kurvenfahrt irgendwelche Steuerungs-Vorteile?
    .

    Einmal editiert, zuletzt von Lars (11. Juli 2013 um 16:14)

    • Offizieller Beitrag
    Zitat

    bei KS4 u. KS5 sehe ich eine Leistungsabsenkung auf 50%. Ist das so gewollt und technisch bedingt? Ich hätte hier (beim Drehen/Rotieren) auch 100% angezogen, wer langsamer drehen möchte braucht doch den Knüppel nicht so weit auslenken, oder sehe ich da was falsch?


    Die Antwort liegt im praktischen Fahrverhalten. ;) Selbstverständlich kannst Du auch mit -100%/+100% auf der Stelle drehen. Aber für eine zielgerichtete Positionierung ist das zu schnell. Auch wenn die Motoren beim "Zurückschnalzen" des Kreuzknüppels sofort bremsen, so wird der Bot doch zu schnell gedreht.

    Ja, Dein Argument, dass man den Kreuzknüppel dann nicht so weit auslenken müßte, ist theoretisch richtig. Aber Du hast da leider nicht die nötige feine Auflösung, um das exakt machen zu können.

    Zitat

    Schlußbemerkung: Kann es nicht auch sein, dass diese Werte vom Einzelfall und somit stark vom Verhältnis Radstand:Spurweite abhängen? Falls dem so ist dann müßte jeder Roboteer die o.g. drei Möglichkeiten nacheinander durchspielen um festzustellen, welche Einstellung bei seinem Fz. die beste Fahrdynamik zur Folge hat. Würde im Umkehrschluß aber auch bedeuten, dass es nicht "die eine" Verfahrensweise gibt...


    Das ist richtig.
    Es ist ein riesiger Unterschied, ob Du einen Bot mit Vierradantrieb oder mit Zweiradantrieb benutzt (wobei der Bot mit Zweiradantrieb auch tatsächlich nur zwei Räder hat).
    Der Zweiradantrieb ist viel "nervöser", während der Vierradantrieb, bedingt durch den seitlichen Abrieb der Räder bei einer Drehung, präziser zu lenken ist.

    Ich selbst bin kein guter Fahrer, das kommt erschwerend hinzu. Aber auch bei vorsichter und konzentrierter Fahrweise passiert es, dass bei einer gewollten Linkskurve der Bot einen Haken schlägt. (Einstellung beim Drehen: -50%/+50%). Die Geschwindigkeit des rechten Motors ist einfach noch zu hoch, um dann bei der Bewegung des Kreuzknüppels nach links einen so geringen Lenkeinschlag für eine saubere Kurve zu bekommen. Beim Vierradantrieb klappt das, beim Zweiradantrieb nicht.
    Darum finde ich die Idee von Marien so interessant, bei zunehmendem Radius nicht nur das kurveninnere Rad zu bremsen, sondern mit einem geringen Anteil auch das kurvenäußere Rad etwas zu verlangsamen.

    Bei meiner Parametrierungsmöglichkeit der Fahrtregler gibt es deshalb eine Stufung, in wieweit der Lenkeinschlag auf die Fahrgeschwindigkeit addiert/subtrahiert wird. Normalerweise wird nur das kurveninnere Rad abgebremst. Über eine Parametrierungsoption kann wunschweise auch das kurvenäußere Rad mit beschleunigt werden. Das ist dann für die Vierradantriebe sinnvoll. Wenn diese Einstellung fehlt, kannst Du mit dem Vierradantrieb keine brauchbare Vorwärtskurve fahren. Beim Zweiradantrieb würde der Bot Haken schlagen wie ein Hase. Also lieber ohne Zusatzbeschleunigung.
    Ebenso kann man einstellen, ob man 100%, 50% oder 33% des Lenkeinschlags haben will. 33% war früher 25%, aber das ist dann zu wenig. Die 50% sind für Vierradantriebe gut, die 33% bei den Zweiradantrieben.

    Darum ist es wirklich sinnvoll, diese Optionen im Fahrtregler parametrierbar zu machen, damit für jeden Roboter und seinen Fahreigenschaften das passene Setup erarbeitet bzw eingestellt werden kann.

    Dein Tierbeobachtungsbot gehört mit seinem Vierradantrieb ja zur gehobenen Gewichtsklasse. Kannst Du nicht einen Demoaufbau machen (z.b. zwei Akkuschraubermotoren mit Rädern auf eine Platte montieren) und dann mit vier langen Drähten über Deinen Fahrtregler ansteuern? Ich denke, diese "Fahrübung" wird Dir zeigen, wie schwierig es ist, mit -100%/+100% einen präzisen Richtungswechsel durchzuführen.

    Die Programmierer von der Spektrum DX5e haben es sich übrigens sehr leicht gemacht. Sobald der Schiebeschalter auf "Kreuzmischer" gestellt ist, laufen beide Motoren in Vorwärtsrichtung nur noch mit maximal 50%. (Bei einer Linkskurve wird das linke Rad abgebremst, das rechte Rad beschleunigt) . Dann ist es natürlich wesentlich leichter, eine Kurve zu fahren, wenn die Fuhre ohnehin nur mit halber Leistung vor sich hinzuckelt.

  • IBF, danke für die schnelle Antwort.

    Zitat

    Original von IBF
    Der Zweiradantrieb ist viel "nervöser", während der Vierradantrieb, bedingt durch den seitlichen Abrieb der Räder bei einer Drehung, präziser zu lenken ist.


    An einen Zweirad-Bot hatte ich noch garnicht gedacht. Ist schon verständlich, dass dieser recht spontan reagiert, immerhin ist der Wirkungsgrad höher da - im Gegensatz zum Vierrad-Bot - keine verlustbringende Reibung durch das "Schmieren" der Reifenflächen um die Drehebene überwunden werden muß. Diese Verluste werden beim Vierrad-Bot umso größer sein, je ungünstiger das Radstand-Spurweitenverhältnis ist.
    So wie ich das jetzt verstehe muß darauf die Ansteuerung der Motoren abgestimmt werden, wobei der größte Unterschied in der Zahl der angetriebenen Räder liegt.

    Zitat

    Original von IBF
    Darum ist es wirklich sinnvoll, diese Optionen im Fahrtregler parametrierbar zu machen, damit für jeden Roboter und seinen Fahreigenschaften das passene Setup erarbeitet bzw eingestellt werden kann.


    OK, dass verstehe ich soweit. Allerdings möchte ich einen etwas anderen Weg beschreiten: Da ich meine Steuerung selbst entwerfe (HW/SW) werde ich sämtliche diesbezüglichen Berechnungen auf dem Controller der FB durchführen; vermutlich ein ATmega16. Die Fernsteuerung berechnet demnach anhand der KS die von den Fahrtreglern einzustellende Motorleistung und überträgt diese 2 Parameter über das Funkmodul an den Bot - das war's.
    Wichtig ist es nun programmtechnisch den Aufwand möglichst gering zu halten, und trotzdem die versch. Varianten einmal am "lebenden Objekt" in der Fahrpraxis auszutesten. Vorstellbar wäre für mich an der FB einige Poti's vorzuhalten, über welche ich direkt die Regelcharakteristik manipulieren kann - sozusagen der "weitere Funkkanal", der weiter oben bereits erwähnt wurde.

    Zitat

    Original von IBF
    Dein Tierbeobachtungsbot gehört mit seinem Vierradantrieb ja zur gehobenen Gewichtsklasse. Kannst Du nicht einen Demoaufbau machen (z.b. zwei Akkuschraubermotoren mit Rädern auf eine Platte montieren) und dann mit vier langen Drähten über Deinen Fahrtregler ansteuern? Ich denke, diese "Fahrübung" wird Dir zeigen, wie schwierig es ist, mit -100%/+100% einen präzisen Richtungswechsel durchzuführen.


    Demoaufbauten habe ich schon genug, jetzt muß der Bot ran! 8)
    Ich weiß, dass Dir das Kettenrasseln in der Entwicklungsphase nicht so gefällt, aber da muß ich jetzt durch. Ich plane den Bot soweit komplett fertigzustellen und für die weitere SW-Implementierung/Testing diesen auf eine Kiste zu setzen, damit die Räder frei drehen können. Sowie das zufriedenstellend läuft bekommt der Bot festen Boden unter die Räder und dann schau'n mer mal...

    Aber den von Dir oben skizzierten Richtungswechsel mit "-100%/+100%" plane ich so auch nicht ein, dass wäre ja reines Rotieren um die Hochachse mit max. Speed. Klar, dass so keine Präzision aufkommt. Aber auch hier gäbe es einfache Möglichkeiten zur Abhilfe und Unterstützung des "Piloten": Da ich die Schritte der Motoren über induktive Initiatoren exakt mitzähle wäre es auch denkbar, auf Knopfdruck an der FB einen 180°-Turn automatisiert auszuführen, ohne die Notwendigkeit den Endpunkt der Rotation genau abpassen zu müssen. Die optionale Verwendung eines lagekompensierten (und Dank MEMS-Technik preisgünstigen) Kompassmoduls zur exakten Richtungsbestimmung fällt mir jetzt noch ein, dass sind aber natürlich keine typischen Arena-Anwendungen.
    .

    Einmal editiert, zuletzt von Lars (12. Juli 2013 um 00:51)

    • Offizieller Beitrag

    Die Lösung mit der Übertragung der Stellwerte von der Funke direkt auf den Empfänger und dann linear durchgeleitet zu den Fahrtregler bzw. Motoren hat den Vorteil, dass Du wirklich während der Fahrt Deine "optimalen" Parameter herausfinden kannst. Bei meiner Lösung muss man jedesmal mit einem USB-Kabel an den Bot ran.

    Anhand Deines Anwendungsfalles (freie Natur...) wirst Du aber eventuell auf mehrere verschiedene Einstellungen in der Funke zurückgreifen müssen. Denn: Auf einem nadelbedecktem Waldboden wird der Gripp anders sein, als wenn Du im nassen Moosboden (Waldrand) fährst. Oder ob es betaut ist (Morgenstunden) bzw. der Wald ausgetrocknet ist. Ähm... ich bin kein Biologe, aber bei meinen Ants ist es ein riesiger Unterschied, ob ich bei meiner eigenen Provisorisch-Arena fahre (lackierte Holzfläche) oder bei der GRA-Arena auf Polycarbonat fahren kann.

    Mein Gefühl sagt mir also, dass Du das Setup in der Funke mit den Potis zum Grundeinstellen und Optimieren verwenden kannst. Aber bei einem Geländewechsel werden es zu viele Potis sein, die hier dann zu verstellen sind. Ich schätze mal, dass Du Dir vier Einstellungen für vier verschiedene Geländearten erarbeiten wirst und die dann als feste Presets dann entweder in der Funke oder eventuell dann doch im Fahrtregler ablegst. Aber lass Dich durch meine Bedenken nicht beirren. Vielleicht ist doch ein Fünkchen Wahrheit dabei und Du kriegst anderweitig noch eine Lösung. ;)

    Zitat

    Da ich die Schritte der Motoren über induktive Initiatoren exakt mitzähle wäre es auch denkbar, auf Knopfdruck an der FB einen 180°-Turn automatisiert auszuführen, ohne die Notwendigkeit den Endpunkt der Rotation genau abpassen zu müssen.


    Ich glaube, das wird so nicht funktionieren. Denn je nach Untergrund hast Du unterschiedlichen Schlupf auf den Reifen. Übertrieben gesagt: Auf einem gut haftendem Teerbelagt brauchst Du weniger Räderumdrehungen als auf Schmierseife.

    Als wir vor ein paar Wochen bei der Modellbaumesse in Herne waren, hatte ein U-Boot-Bastler seine Modelle ausgestellt. Da war ein Patent dabei, das hat mich fasziniert. Und zwar die Kompassnadel-Steuerung. Im Prinzip sind links und rechts vom Kompass zwei Lichtschranken. Sobald die Kompassnadel die Lichtschranke abdeckt, wird die Steuerung aktiviert. Damit jede gewünschte Richtung eingeschlagen werden kann, ist der Kompass mit den Sensoren drehbar (über Schrittmotor) aufgebaut. (=> Wenn Du Interesse an dem Prinzip hast, dann suche ich mal den Aussteller heraus. Er hat ein Buch geschrieben, wo ich im Internet auch eine Leseprobe gefunden hatte.)

    .... => morgen noch ein paar Sätze mehr....

  • Zitat

    Da war ein Patent dabei, das hat mich fasziniert. Und zwar die Kompassnadel-Steuerung. Im Prinzip sind links und rechts vom Kompass zwei Lichtschranken. Sobald die Kompassnadel die Lichtschranke abdeckt, wird die Steuerung aktiviert. Damit jede gewünschte Richtung eingeschlagen werden kann, ist der Kompass mit den Sensoren drehbar (über Schrittmotor) aufgebaut.


    Das finde ich ja haarsträubend kompliziert. How about elektronischer Kompass (Auswertung siehe hier). Für solche Features wie drehen um 180 Grad eignet sich ein elektronischer Kompass in Kombination mit einer Closed-Loop-Control hervorragend. Die Radencoder sind, wie Reinhard bereits angemerkt hat, wegen des zweifelhaften Grips am Waldboden eher unbrauchbar. Generell: Wenn man bereits an solche Highlevel-Befehle denkt, wäre es eine Überlegung wert, sich von den µC als Hauptprozessoren zu verabschieden und diese nur mehr als reine E/A-Einheiten zu verwenden - Die Verarbeitung der Daten und Ausführung der Highlevel-Befehle übernimmt dann ein konventioneller PC unter Verwendung eines Robotic Development Environment. Hier bietet sich z.B. .ROS an.

    • Offizieller Beitrag
    Zitat

    haarsträubend kompliziert


    Naja.... ich bin halt Nostalgiker ;) (.... und ein altes Auto mit wenig Elektronik kriegt man immer zum Laufen, im Gegensatz zu dem neuen fahrenden Elektronikschrott, wo man selber nichts mehr machen kann...)

    Interessant ist die kleine Kompass-Baugruppe schon. Die Anbindung über I2C macht halt wieder etwas "Spezialarbeit" im Hauptprogramm. Vor allem wenn die Baugruppe dann abgekündigt wird und man alle zwei Jahre die Anbindung an eine neue Baugruppe implementieren muss. (=> Darum bin ich wohl mehr auf hemdsärmelige Lösungen fixiert. :D )

    Mit dem Ros-System wird's dann schon professionel. Ist nur die Frage, ob man sich das mit der ganzen Parametriererei antun will.
    Alex: Du kennst das System "KISS"? =>
    K eep
    I t
    S imple
    &
    S tupid

    Ich bau ja auch gerne immer neue Features ein, damit sich der Anwender leicht tut oder man einfach ein paar Sachen bewerkstelligen kann. (Beispiel: Per Parametrierung die Vorwärts- und Rückwärtsrichtung ändern. => Spart das Umverdrahten, wenn man den Bot von einem bewaffnetem Bot in einen rückwärtsfahrenden Rockey verwandeln will). Aber irgendwie muss man die Baugruppe noch im Griff haben. Und je mehr dass "externe" Sensoren oder Baugruppen mit dabei sind, desto störanfälliger wird das Ganze.
    Nach meiner Philosophie ist mit einer Fernparametrierung über die Funke mit verschiedenen Potis die Schwelle erreicht, wo es "undurchsichtig" werden kann, wenn mal was nicht funktioniert.

    Zitat

    Demoaufbauten habe ich schon genug, jetzt muß der Bot ran!


    Ist ok, aber irgendwie müßtest Du, bevor Du an die Programmierung gehst, mal ein paar Fahrversuche machen. Ich denke, das wird Dir beim Programmieren für die notwenigen Features mehr helfen, als wenn wir Dir hier ein Dutzend Tipps beschreiben. ;) => Nachdem die Verwendung von eigenen Aufbauten immer mehr Spaß macht, als eine geliehene Maschine zu bedienen, war ich daher auf der einfachen Variante mit zwei drahtgebundenen Akkuschraubermotoren auf Deinem Fahrtregler. (Meine Basistests mache ich mit dem Fahrtregler der Ant-Klasse auf einem Prüfstand mit zwei Mini-Motoren. Mit Akkuschraubermotoren nervt mich, dass ich ständig die Akkus laden muss und vor allem das Gerappel von den großen Motoren am Tisch. ;) Der Motorenprüfstand mit den beiden fetten Motoren kommt erst dann zum Zug, wenn es um Belastungstests für die großen Fahrtregler geht. Da fließen dann die Amperes, aber da bin ich dann nicht mehr am Schreibtisch zum Programmieren, sondern im Labor, wo ein abgefackelter MOSFET kein Problem ist. )

  • Mit KISS bin ich durchaus vertraut - ab einer gewissen Komplexitätsmenge kann man jedoch nicht mehr alles im µC abwickeln. Dann ist Reduktion der Komplexität (und damit KISS) durch Abstraktion (z.B. durch Schichtenarchitektur) das Mittel der Wahl. Ein kleines Bsp. für Schichtenarchitektur aus meiner Masterarbeit:

    Konventioneller PC (Highlevel-Funktionen: Navigation, Steuerung, Diagnostik, etc.)
    ----------
    Mikrocontroller (E/A-Schnittstelle)
    ----------
    Sensoren & Aktoren

    Jede Schicht stellt eine bestimmte Funktionalität für die darüberliegende Schicht durch defininierte Schnittstellen bereit. Die genauen Details der Ansteuerung der Sensoren und Aktoren werden vom PC durch den Mikrocontroller abstrahiert. Ohne Abstraktion wäre mein Masterprojekt undurchführbar gewesen.

    Zu ROS: Klarerweise muss man sich erst einarbeiten und Zeit investieren und die benötigte Gesamtarbeit steigt erst einmal an - Aber: Auf lange Sicht gewinnt man durch die bereitgestellte (und vielfach geprüfte) Funktionalität als wenn man sich selbst etwas zusammenschnitzt. Wie ich mitbekommen habe, so hat der Threadersteller einen Wildbeobachtungsbot im Sinn. Dabei denke ich an Kamera, Bildverarbeitung, evtl. auch Audiosensoren, uvm. Da wäre es schon zu prüfen, ob das Projekt ein wenig gepimpt werden kann/soll ;) Letzten Endes muss man seine Ziele nach der verfügbaren Zeit, Budget und Motivation stecken. In diesem Sinne wünsche ich viel Erfolg und Durchhaltevermögen beim Bauen ;)

    Zur Nostalgie muss ich sagen: Putzig finde ich das Konzept schon. Lässt mich an Steampunk denken ;)

  • Danke für eure reichhaltigen Tipps. Hilfreich sind diese in jedem Fall, so weiß ich bereits VOR der Programmerstellung, was für Probs auftreten können und welche Optionen von der SW her sinnvollerweise implementiert werden sollten. Der automatisierte 180°-Turn war ein Beispiel von mir, mein Bot ist ein Erprobungsträger wo ich - sollte hier erhöhte Präzision gewünscht od. nötig sein - jederzeit noch Beschleunigungssensor und Kompassmodul unterstützend adaptieren kann....
    Eine Zieldefinition zur Fahrdynamik habe ich gegenwärtig nicht erstellt. Es wird sich aber regelungstechnisch weit entspannter darstellen lassen, als bei einem hochdynamischen Arenaeinsatz.

    Zitat

    Original von IBF
    Ist ok, aber irgendwie müßtest Du, bevor Du an die Programmierung gehst, mal ein paar Fahrversuche machen. Ich denke, das wird Dir beim Programmieren für die notwenigen Features mehr helfen, als wenn wir Dir hier ein Dutzend Tipps beschreiben.


    Richtig. Geplant hatte ich als nächsten Schritt meine beiden H-Brücken nebst Controller-LP und den kleinen 2,4GHz-Empfänger in den Bot zu verbauen. In dieser Konstellation möchte ich die ersten Fahrtests machen, um Eindrücke von dem mech. Aufbau zu gewinnen (Berichterstattung in meinem 500W-H-Brückenthread). Parallel baue ich sequentiell meine Kreuzknüppel-Funke auf, da eine Pistolen-FB für eine Panzersteuerung m.E. eher ungeeignet ist.

  • Zitat

    Original von Lars
    Marien: Mich würde interessieren, ob die von Dir vorgestellte Tabelle (die mit der "Ellipse") nur eine theoretische Überlegung/Berechnung ist (wie momentan bei mir noch), oder ob Du genau diese Werte mit einem Fz. umgesetzt/erprobt hast. Und hast Du auch mal dazu in direktem Vergleich die IBF-Einstellung praktisch ausgetestet oder sonstwie in Deine Überlegungen mit einbezogen?
    Und warum möchtest Du den Zeitpunkt der Richtungsumkehr "nicht im punkt 6, aber zwischen 10 und 6 legen."? Bringt Dir diese "Spreizung" in der Kurvenfahrt irgendwelche Steuerungs-Vorteile?
    .


    Es ist ein theoretische Überlegung, aber basiert auf meine Erfarung mit 2 und 4 Rad-roboter und Stick-sender. IBF's Einstellung habe ich noch nicht im Praxis versucht.
    Die Richtungsumkehr mehr im richtung von 10 bedeutet ein grosseres Gebiet (ab 2) für genaueres Lenken. Unsere Roboter fahren fast nie gerade, aber das Lenken muss perfekt kontrolierbar sein (nicht zu schnell oder langsam und abgestimmt auf dem "Inertia" (Masse und Reibung) des Roboter).

    Marien

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

  • Marien: Danke für die Info. Offenbar gibt es eine grobe Voreinstellung (ich nehme mal den Mittelwert aus euren Empfehlungen) und dann eine Bot-spezifische Feinabstimmung.

    In meinem Fall kommt (vereinfachend) hinzu, dass ich langsamer fahren kann und nicht "im Kampfeinsatz" bin. Und ich bin nicht von den "Werkseinstellungen" bzw. Einstellmöglichkeiten einer Funke abhängig, sondern kann mir meine Tabellen frei definieren.
    Fortsetzung folgt...

    • Offizieller Beitrag

    Bei der letzten Modellbaumesse in Herne hatte Marien einen eigenartigen Effekt bei seinem Ant (verwendet meinen Fahrtregler_Ant2) festgestellt: Am Stand dreht der Bot bei links/rechts korrekt in die richtige Richtung. Sobald aber vorwärts gefahren wird und mit dem Kreuzknüppel eine Linksbewegung gemacht wird, fährt der Bot eine Rechtskurve.

    Zuhause konnte ich den Effekt zunächst nachvollziehen. Bis ich dann beim Debuggen der Software gemerkt habe, dass die ganzen Vorwärts-/Rückwärtsrichtungen in den Softwareparametern vertauscht sind.
    Ursache: Bei meinen Servotestern hatte ich eine andere Richtung gewählt, als die Software erwartete.

    Hieß im Endeffekt: In der Software waren die Fahrtrichtungen vertauscht. Und damit das wieder stimmte, waren die Motoren auch vertauscht angeschlossen. Das funktioniert wunderbar. Bis es an die Berechnung der Kreuzmischerfunktion geht. Dann stimmt die ganze Vertauscherei nicht mehr.


    Als Folge habe ich (zunächst nur beim Ant-Fahrtregler2, die anderen Fahrtregler werden sukzessive auch erweitert) eine Parametrierung eingebaut, mit der definiert werden kann, welche Art von Funksender dahintersteckt.
    Denn: Es ist ein gewaltiger Unterschied, ob beim Vorwärtsdrücken des Kreuzknüppels die Pulsweite am Empfänger kleiner oder (bei einem anderen Sender) größer wird.

    Bsi hierher dürfte das Problem bereits aus einem anderen Thread bekannt sein.

    Bleibt die Frage für den Anwender "welche" Funke er denn nun hat und wie sie korrekt in den Parametern eingetragen wird. Dazu möchte ich jetzt also ein paar Beispiele geben.


    Zunächst die Übersicht über die Parameter und die drei Parameterblöcke, auf die ich jetzt genauer eingehe.

    Grün umrandet ist der Parameterblock für die verwendete Senderart. Ich habe bewußt die Pulsbreite mit dargestellt, damit jeder, der eine "exotische" Funke hat, mit einem Oszilloskop feststellen kann, wie sein Sender reagiert und was er somit einstellen muss.

    Blau umrandet ist der Parameterblock für die Einstellung des linearen Kreuzmischers.
    Zur Erinnerung: Die Zahlen "-50/50" geben an, dass der Bot bei vollem Links oder Rechtsanschlag des Kreuzknüppels mit 50% PWM auf der Stelle dreht. "-50" ist für das linke Rad (dreht somit rückwärts). "+50%" für das rechte Rad, dreht somit vorwärts.
    Die beiden Zahlen "+100/+100" geben an, dass bei nach vorne gedrücktem Kreuzknüppel sowohl der linke als auch der rechte Motor mit 100% PWM angesteuert werden. Also Vollgas.
    Bleibt als besonderer Trick an dieser Programmierung das Zahlenduo "0/75". Heißt: Wenn bei voll nach vorne gedrücktem Kreuzknüppel beide Motoren auf 100% laufen und dann der Kreuzknüppel zusätzlich nach links gedrückt wird, dann läuft der linke Motor mit 0% und er rechte Motor statt mit den erwarteten 100% nur noch auf 75%. Damit wird die Kurve nicht so schnell gefahren.


    Als nächstes dann der rot markierte Parametrierungsblock, wobei dieses Feld nicht zum Parametrieren ist, sondern als reine Statusanzeige dient, was denn im Fahrtregler derzeit vorgeht.

    Es sind zwei Zeilen: "Empfänger" und "Motoren", wobei immer von links nach rechts mit "Kanal1"/"Kanal2" bzw. dann "Motor links"/"Motor rechts" gezählt wird.

    Wie sind die Empfängerkanäle angesteckt?: An Eingang 1 ist der Kreuzknüppel links/rechts eingekoppelt, also die Lenkung.
    An Eingang2 ist der Kreuzknüppel vor vorwärts/rückwärts eingekoppelt, also die Geschwindigkeit.
    Bei den Motoren ist Motor1 immer der rechte Motor, der Motor2 immer der linke Motor.

    Im o.g. Bild ist also bei den Eingängen praktisch kein Signal vorhanden. Beide Motoren sind im Ruhezustand.


    Fall 2:


    Hier ist der Eingangskanal 1 "0% (also kein Lenkeinschlag) und der Eingangskanal 2 mit +18% angesteuert. Somit muss der Kreuzknüppel nach vorne gedrückt sein und beide Motoren müssen "+" vorwärts fahren. Laut Rückmeldung von dem Ausgangssignal für die Motoren tun sie das. Also ok.


    Fall 3:


    Hier ist das Empfängersignal 1 vorhanden. Und zwar mit positivem Vorzeichen. Nachdem ein Spectrum-Sender eingestellt wurde (siehe grün umrandetes Feld) muss also der Kreuzknüppel nach links gedrückt sein. Also will der Steuermann eine Linkskurve fahren.
    Als Folge wird der linke Motor mit einem negativen Wert angesteuert (der linke Motor läuft rückwärts) und der rechte Motor bekommt den gleichen Wert, aber vorwärts.
    Der Bot dreht somit auf der Stelle.


    Fall 4:

    Hier ist kein Lenksignal eingespeist, aber ein negatives Geschwindigkeissignal. Bei einer Spectrum-Funke wäre das so, als ob der Kreuzknüppel nach hinten gedrückt worden ist. Aber nicht in diesem Fall: Es ist eine Futaba-Funke parametriert, da ist alles umgekehrt. Somit ist ein negativer Wert ("-41") bei der eingespeisten Geschwindigkeit "vorwärts". Also Folge laufen beide Motoren vorwärts ( "+69" => kein negatives Vorzeichen an den Werten)


    =============================================================

    Wie kann dieser Monitor jetzt benutzt werden und zu was ist er gut:
    Mit diesem Tool soll jeder von euch (bzw. diejenigen, die von mir einen Ant-Fahrtregler der Version2 bekommen haben) fähig sein, die lineare Kreuzmischerfunktion am Bot einstellen zu können. Ohne langes herumprobieren und Fehlersuche.
    Das Empfängersignal muss immer das anzeigen, was am Sender ausgelöst wurde. Also geben die Vorzeichen an den Werten schon einmal den Hinweis, ob eine falsche Funke ausgewählt wurde.
    Ebenso können vertauschte Kanäle (Lenkung und Geschwindigkeit) sofort erkannt werden.
    Falls mit der Trimmung beim Sender etwas nicht stimmt, dann kann das hier auch erkannt werden. (Bei losgelassenen Kreuzknüppeln wird ein Signal <>0 angezeigt.)


    Wer von mir einen "Fahrtregler_Ant2" bekommen hat und dieses neue Feature haben will, der soll mir bitte den Fahrtregler zukommen lassen, ich machen bei der Firmware einen kostenlosen Update.
    Wo ich die Annahme des Fahrtreglers aber vermeide: Wenn an der Hardware mit einem Lötbrenner schon so herumgebrutzelt wurde, dass ich die Stifte bzw. Buchsen nicht mehr benutzen kann. Sorry Jungs, ich kann nicht jedesmal erst wieder die ganzen Stifte und Buchsen anlöten bzw. austauschen, damit ich meinen Testadapter anstecken kann. (.... => ihr geht ja auch nicht mit einem halben Hähnchen vom Grillstand zum Tierarzt und fragt, ob da noch was zu retten ist.... :( )

    • Offizieller Beitrag

    Die Status Anzeige im rot markierten Bereich finde ich sehr hilfreich.
    Mein selbst verbastelter Ant-Regler scheidet aber wohl für Updates aus.
    Zudem befürchte ich dass die unkonventionelle Fahrweise von Giftzwerg verschwindet und sich der Ant womöglich seltener selbst aus der Arena schiesst weil er gezielter zu steuern ist :D