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

Thema: RC-Auto ohne RC-Monstertruck autonom

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Robotik Einstein Avatar von Rabenauge
    Registriert seit
    13.10.2007
    Ort
    Osterzgebirge
    Alter
    56
    Beiträge
    2.213
    Wenn man ungefähr weiss, was kommt (oder nich kommen kann), kann man PulseIn bedeutend beschleunigen, indem man ein knappes Timeout setzt.
    Das Problem ist, wenn nix kommt, wartet der Arduino bis zum "eingebauten" Timeout- ich glaub, ne volle Sekunde. In der wartet er wirklich nur, das ist also genauso böse wie delay()...
    Da klappt dann halt nix anderes mehr.
    Zusätzlich kann man Servos oft entkoppeln (myServo.detach()), grad bei Servos, die nur nen Sensor schwenken oder so geht das ohne weiteres, die bleiben dann einfach in der letzten Stellung stehn. Fahrtregler allerdings könnten dann ins failsave fallen, in der ersten Version des Monsters hatte ich das genutzt, um den Antrieb per Software zu entkoppeln: Lenkung geradeaus stellen, Fahrtregler auf stop, und dann beide abschalten.
    Wenn das Monster dann seine aktuelle Aufgabe kannte, wurden beide mittels myServo.attach() wieder zugeschalten, und die Fahrt konnte losgehen. So kann man z.B. in Ruhe erst mal irgendwelche Parameter übergeben, oder die Betriebsart auswählen, ohne um die Finger fürchten zu müssen.
    Das baue ich ganz sicher auch wieder ein, wobei es mir noch besser gefiele, wenn ich das BEC (was ja Lenkservo und Regler versorgt) direkt per Programmierung abschalten könnte. Nen Relais in das BEC-Schalterkabel wäre ne Möglichkeit, aber mit nem Transistor müsste das doch eleganter (und vor allem: weniger anfällig) gehn?
    Grüssle, Sly
    ..dem Inschenör ist nix zu schwör..

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    24.06.2004
    Ort
    Berlin
    Alter
    60
    Beiträge
    540
    du hast ein klassische frequenz von 50hz, das heißt man könnte das timeout auf 2 perioden legen. das wären dann maximal 40ms, ich muß mir das noch mal anschaun.
    ein servo für Sensoren habe ich nicht, nur lenkung und esc.
    das leben ist hart, aber wir müssen da durch.

  3. #3
    Erfahrener Benutzer Robotik Einstein Avatar von Rabenauge
    Registriert seit
    13.10.2007
    Ort
    Osterzgebirge
    Alter
    56
    Beiträge
    2.213
    50 Hz?
    Servo-Pwm läuft schon bissel schneller.
    Standard ist z.B. myServo.writeMicroseconds(1500).
    Das sollte die Neutralstellung sein. Probiers aus, myServo.writeMilliseconds() kennt die IDE gar nicht.
    Der übliche Bereich liegt zwischen 1000 und 2000 Mikrosekunden. Je nach konkretem Servo geht auch bissel mehr.
    Beim abschalten von Servos muss man übrigens auch aufpassen, dass man dem Servo Zeit lässt, um die Soll-Position überhaupt anzufahren. Die kleinen Rechner sind ja doch nen bissel flinker als die olle Servomechanik.
    Grüssle, Sly
    ..dem Inschenör ist nix zu schwör..

  4. #4
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    24.06.2004
    Ort
    Berlin
    Alter
    60
    Beiträge
    540
    grins ich meinte die wiederholfrequenz der servoimpulse, mich nicht ganz klar ausgedrückt.
    das timeout für das servosignal sollte also bei 40ms (2 signale) liegen.
    das leben ist hart, aber wir müssen da durch.

  5. #5
    Erfahrener Benutzer Robotik Einstein Avatar von Rabenauge
    Registriert seit
    13.10.2007
    Ort
    Osterzgebirge
    Alter
    56
    Beiträge
    2.213
    Trotzdem sind Interrupts entschieden effektiver. Da weiss der Rechner nämlich, wann etwas passiert ist, und muss nicht dauernd erst nachgucken gehn. Ab und zu gibts ja noch ein paar andere Dinge zu erledigen.
    Willie Klaas hat das in seiner Bibliothek schon eingebaut, und es funktioniert hervorragend.

    Und: auch die Servobibliothek hat ihre Tücken. Unter Umständen belegt sie nämlich, ohne zu fragen, bestimmte Timer, die dann anderswo plötzlich nicht mehr arbeiten. Das ist aber dokumentiert. Irgendwann will ich mal Servos "zu Fuss" programmieren, aber nicht hier- die Software für das Monster wird mir auch so anspruchsvoll genug.

    Jetzt werd ich doch mal versuchen, ob ich den Fahrtregler nun doch überreden kann, vernünftig zu bremsen- ich find das wichtig, weil die Fuhre ja doch _bisselwas_ wiegt.
    Selbst im Leerlauf, also aufgebockt, laufen die Räder schon mindestens ne Sekunde nach, wenn die Motoren gestoppt werden, und da ist noch nich viel Schwungmasse im Spiel.

    - - - Aktualisiert - - -

    Es ist gelungen.
    Vowärts fahren, bremsen (max. ne halbe Sekunde, das sollte aber auch genügen), rückwärts fahren-alles klappt.
    Notfalls kann man auch mehrere Bremszyklen nacheinander aufrufen, schätze ich.

    Hab das gleich mal ordentlich gemacht: es gibt ne globale Variable namens sollSpeed. Deren Wert ist die gewünschte Geschwindigkeit in % !
    Somit kann das Auto leicht sowohl proportional vor-als auch rückwärts fahren. Der Wert von sollSpeed wird einfach immer auf den jeweiligen Geschwindigkeitsbereich gemappt.
    Und natürlich werden die Sollwerte nicht einfach eingestellt, sondern rampenartig aus dem Stand hochgefahren. Schont die Antriebsstränge nen bissel-obwohl die mit sowas klar kommen. Das Auto verträgt so einiges...aber auch dem Akku wird das sicherlich eher gut tun.
    Wenn ich mal ganz viel Lust hab, und nix besseres weiss, kann ich da womöglich noch die Fahrströme messen, und dann "wirtschaftlich" beschleunigen. Aber das steht gaanz weit hinten auf der "Kür"-Liste mit.
    Grüssle, Sly
    ..dem Inschenör ist nix zu schwör..

  6. #6
    HaWe
    Gast
    Zitat Zitat von Rabenauge Beitrag anzeigen
    Es ist kein Timer-Problem. Der Mega 2560 packt lässig mehr als nen Dutzend Servos. Bis zu 48 Stück, glaube ich.
    der Mega hat max. 15 pwm pins, aber hier muss man sehr aufpassen, dass man nicht mit Timern in Konflikt kommt für programmierte, verwendete Interrupts - sonst funktionieren nämlich weder die betr. Timer IRQs, noch die betr. pwms:

    timer - pwm pins
    0 ( pin 13, 4)
    1 ( pin 12, 11)
    2 ( pin 10, 9)
    3 ( pin 5, 3, 2)
    4 ( pin 8, 7, 6)
    5 ( pin 44,45,46)

  7. #7
    Erfahrener Benutzer Robotik Einstein Avatar von Rabenauge
    Registriert seit
    13.10.2007
    Ort
    Osterzgebirge
    Alter
    56
    Beiträge
    2.213
    Und was willst du damit sagen?
    Dass du die Servo-Bibliothek _nicht_ kennst?
    Mit der isses nämlich überhaupt nicht nötig, PWM-Pins zu benutzen (im übrigen sehe ich selbst gar kein Problem drin, an _irgendeinem_ Pin selber ne PWM raus zu schicken, nur muss ich das dann eben selber machen, wie es die Servobibliothek wohl auch tut).

    Details: https://www.arduino.cc/en/Reference/Servo
    Grüssle, Sly
    ..dem Inschenör ist nix zu schwör..

  8. #8
    Benutzer Stammmitglied Avatar von MEgg
    Registriert seit
    20.09.2015
    Beiträge
    30
    Zitat Zitat von Rabenauge Beitrag anzeigen
    [...]
    Jetzt werd ich doch mal versuchen, ob ich den Fahrtregler nun doch überreden kann, vernünftig zu bremsen- ich find das wichtig, weil die Fuhre ja doch _bisselwas_ wiegt.
    Selbst im Leerlauf, also aufgebockt, laufen die Räder schon mindestens ne Sekunde nach, wenn die Motoren gestoppt werden, und da ist noch nich viel Schwungmasse im Spiel.

    - - - Aktualisiert - - -

    Es ist gelungen.
    Vowärts fahren, bremsen (max. ne halbe Sekunde, das sollte aber auch genügen), rückwärts fahren-alles klappt.
    Notfalls kann man auch mehrere Bremszyklen nacheinander aufrufen, schätze ich.
    [...]
    Das mit dem Bremsen und dem Nachlauf ist beim Dagu 5 sogar ohne Räder ein kleines Problem.
    Der Encoder meldet immer noch ein paar Ticks, nachdem ich gestoppt habe.
    Mit diesen Rädern:
    Klicke auf die Grafik für eine größere Ansicht

Name:	20150831_028.jpg
Hits:	12
Größe:	63,6 KB
ID:	30897
    und der Masse des Aufbaus wird der Nachlauf wohl mehr werden.
    Da Beschleunigung und Encoderticks relativ linear sind, war meine Idee, daraus auszurechnen, wieviel früher ich bremsen muss, um
    mit dem Nachlauf auf eine halbwegs genau Bremsung zu kommen.
    Mit der finalen Masse des Rovers und Aufbaus, mit den Rädern dran und ein paar Messpunkten sollte die daraufgelegte Gerade der Abbremsung
    berechenbar sein.

    Oder hab ich da einen Denkfehler drin?

  9. #9
    Erfahrener Benutzer Robotik Einstein Avatar von Rabenauge
    Registriert seit
    13.10.2007
    Ort
    Osterzgebirge
    Alter
    56
    Beiträge
    2.213
    Die Reifen sehn meinen verdächtig ähnlich... Vermutlich aber sind meine etwas schwerer: ich hab Einlagen drin, weil sie mir sonst schon im RC-Modell zu weich waren.
    Ist logisch, dass die Geschichte auch mit dem Füsschen in der Luft noch nachläuft: die Motoren alleine haben ja schon ne gewisse Massenträgheit. Und die laufen _vorher_ mit einigen hundert oder gar tausend U/min...

    Bremskraft dynamisch berechnen? Hm, klingt schon cool, aber ob das so klappt? Bedenke die -kaum berechenbare, weil nie genau bekannte- Traktion der Reifen, bergauf-oder ab-Fahrt usw.
    Da du aber Encoder hast, könntest du die Bremse recht leicht gezielt dosieren. Im einfachsten Falle immer nur ganz kurze Bremsimpulse rauf geben, wie bei nem ABS, so ungefähr.
    Wäre auf Glatteis sicher gar keine üble Sache...
    Die Option hab ich auch, auch ohne Encoder (ich wüsst nicht recht, wie ich die ran bekommen sollte, und verfolg es auch nicht allzu akribisch, da ich im Grunde nicht unbedingt welche brauch), denn ich hab ja noch ne MPU6050-Platine (Kombi aus dreiachsigem Beschleunigungsmesser und dreiachsigem Gyro) an Bord. Die hab ich bisher noch nie genutzt, das aber schon vor. Auf Asphalt nämlich konnte ich das Monster mit RC seinerzeit mühelos umkippen-voller Lenkeinschlag bei Höchstgeschwindigkeit ergibt ne Rolle.
    Im RC-Modell hatte ich dann einfach nen übriggebliebenen Kreisel aus nem RC-Heli eingebaut, wenn die seitliche Neigung zu stark wurde, hat der einfach die Lenkung aufgemacht.
    Auch konnt man damit selbst in grobem Gelände Vollgas schnurgerade fahren, und das mit _diesen_ Rädern.
    Mit nem bissel Gebastel sollte sich der Beschleunigungssensor durchaus nutzen lassen, um optimal zu bremsen. Aber damit hab ich es nicht besonders eilig, immehin hab ich ja die Truck-Motoren drin jetzt, so schnell wird das Auto damit nicht (ich schätze, nich mehr als 8-10 km/h), das ist beherrschbar.
    Da eher nutze ich das Gyroskop erstmal als Geradeausfahr-Regelung. Später dann vielleicht auch als Kippsicherung, mal gucken.
    Grüssle, Sly
    ..dem Inschenör ist nix zu schwör..

Ähnliche Themen

  1. Plug-Hybrid-Auto zukünftig ohne Stecker?
    Von Roboternetz-News im Forum Neuigkeiten / Technik-News / Nachrichten / Aktuelles
    Antworten: 0
    Letzter Beitrag: 08.01.2014, 19:30
  2. Autonom fahren: Ford entwickelt selbstfahrendes Auto
    Von Roboternetz-News im Forum Neuigkeiten / Technik-News / Nachrichten / Aktuelles
    Antworten: 0
    Letzter Beitrag: 16.12.2013, 11:20
  3. Auto-Lexikon - Elektro-Auto
    Von Roboternetz-News im Forum Neuigkeiten / Technik-News / Nachrichten / Aktuelles
    Antworten: 0
    Letzter Beitrag: 06.03.2012, 13:40
  4. Habe Arduino Uno,GPS Modul,RC Auto.Möchte haben:Auto,dass GPS Waypoints abfährt
    Von de8msharduino im Forum Allgemeines zum Thema Roboter / Modellbau
    Antworten: 9
    Letzter Beitrag: 07.10.2011, 21:53
  5. Produkteinführung - autonom fahrendes Auto
    Von 0140167 im Forum Allgemeines zum Thema Roboter / Modellbau
    Antworten: 8
    Letzter Beitrag: 04.05.2006, 12:43

Berechtigungen

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

12V Akku bauen