Autonomes Slotcar

  • Weiß jetzt irgendwie nicht, wo ich das posten soll - hat aber ziemlich viel mit Elektronik zu tun - daher poste ich mal hier.


    Hoffe das interessiert irgend jemanden...


    Ich wollte schon immer mal ein autonomes Slotcar haben, das mir entweder meine Strecke sauber fährt (mit Drift!) oder auch als Gegner taugt.


    Hatte da ja schon mal was auf Basis und mit Scorpius entwickelt: Scorpius Ghostcar


    Scorpius finde ich ja echt geil, aber inzwischen fahre ich mehr analog auf Holz und will das eigentlich nicht missen.


    Ich habe mir also überlegt, ein autonomes Slotcar in 1:24 zu bauen. Nachdem das zwischenzeitlich so rudimentär funktioniert, traue ich mich, das mal zu posten...


    Anforderungen sind wie folgt:

    • Maßstab 1:24
    • Holzbahn (keine Magneten) mit Moosies
    • Verwendung handelsüblicher Elektronik-Komponenten (ich kann zwar löten, habe aber kein Elektronik-Know-how)
    • Halter für die Komponenten entstehen im 3D-Druck (das kriege ich so leidlich hin)
    • Minimale Änderungen an der bestehenden Rennbahn (Maximal ein Magnet zur Rundenerkennung)
    • Elektronik muss von außen unsichtbar in ein Auto Maßstab 1:24 reinpassen.
    • Montage auf ein handelsübliches Metall-Chassis (DoSlot - die sind endgeil und ich habe eins übrig :) )
    • Steuerung über Arduino Nano
    • Stromversorgung:

      • Arduino: Über 9V Batterie oder USB Powerpack
      • Motor: SRP 'Speed-25'; Bahnstrom als Ziel konstant bei 12V; Bahnstrom über Schleifer und Fahrtenregler im Auto


    • Auto erlernt die Strecke automatisch
    • Auto synchronisiert sich jedes Mal bei der Start- und Ziellinie
    • In der Entwicklungsphase: Akustisches Feedback beim Fahren (Protokollierung über WLAN o.ä. will ich mir sparen)
    • Das Auto soll über den Driftwinkel in den Kurven gesteuert werden.
    • Das Auto muss wissen, wo es auf der Strecke ist - dazu kriegt es einen Tacho und muss Start/Ziel erkennen können.
    • Kurveneingänge werden während der Lernphase erkannt und entsprechende Bremszonen werden eingerichtet.


    Güße
    Diegu


    PS.: Falls das schon jemand gebaut hat, bitte sagen...

  • ebay Werbung
  • Für das Grund-Setup benötige ich:

    • Einen Arduino Nano
    • Einen Drehzahlmesser mit entsprechender Index-Scheibe aus dem 3D-Druck
    • Einen analogen Hall-Sensor um den Driftwinkel zu erkennen
    • Einen digitalen Hall-Sensor um die Start-Ziel-Linie zu erkennen
    • Ein Modul für die Motorsteuerung.

    Im 3D-Design sieht das dann so aus:


    Bild_2021-01-03_213301.png


    Hier mit montiertem analogen Hall-Sensor und Drehzahlmesser:


    Basic-Setup.jpg


    Der Magnethalter für den Hallsensor war - bzgl. Messbereich - ein Rohrkrepierer, sodass ich den für zwei Magneten neu designed habe. Zusätzlich wurden auf der noch freien Seite der Motorregler (oben) und der Hall Sensor für die Rundenerkennung unten montiert - der Arduino ist auf der Platine im Hintergrund:


    20210103_214004.jpg


    Bei Interesse, kann ich mal ein Fahrvideo posten :)


    Grüße
    Diegu

  • Ein interessantes und nicht ganz triviales Projekt!


    Bist du dir sicher, dass deine Sensorik schon vollständig ist? Rein auf Basis des Schwimmwinkels halte ich es für schwierig, sauber eine Strecke zu erkennen. Evtl. solltest du die Zeit doch in ein Messsystem investieren, um die Sensordaten zu bewerten, bevor du dich blind auf eine Hypothese und Messdaten in unbekannter Qualität verlässt.


    Dein Slotcar soll die Bahn säubern? Wie hast du vor, das sich rapide verändernde Streckenverhalten gepaart mit den sich häufig und sprunghaft ändernden Gripverhältnissen (Reifen abziehen) zu beschreiben?


    Was ist deine Zielsetzung? Soll das Slotcar unbedingt autonom fahren oder tut's auch ne ordentliche Automatisierung?


    Grüße


    P.S. Dieses Projekt ist dir bekannt? GhostCarProjekt – Mikrocontroller.net

  • ebay Werbung
  • Hi,


    vielen Dank für eure Antworten und hier erstmal das Video:


    Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.


    Das funktioniert zwar bereits so lala, aber wirklich schnell ist das nicht und die Positionserkennung funktioniert auch nicht zuverlässig.
    Wahrscheinlich eine schlechte Idee, den Tacho vorne zu montieren und polierte NoGrip-Reifen zu verwenden. (Das ändere ich zuerst)


    Aktuell fährt das Auto mit einem SRP25 Motor relativ stabil bei bis zu 8V - das Ziel wären 12V.



    @nodrifts:
    Das mit dem schnellen Cockpit-XP Slotcar ging mir irgendwie schleichen. Vielen Dank für den Link! Sehr interessant.
    Da werde ich mich mal reinlesen.


    Philipp:
    Sehr spannender Kommentar und vielen Dank für den Link auf das GhostCarProjekt. Das kannte ich nicht, das werde ich definitiv studieren!


    Das Schöne am Schwimmwinkel ist, dass man den auch im Trockendock testen und analysieren kann. Ansonsten hat der Ansatz wohl so seine Grenzen: Das Auto kennt zwar den Driftwinkel, es weiß aber nicht mal ob es nach links oder nach rechts fährt, was echt ein Problem ist.
    Dann driften Fahrzeuge mit Moosies generell wenig - noch ein Problem. Und dann kriege ich 4° Fehler einfach dadurch, dass der Slot deutlich breiter als der Leitkiel ist....


    Ein Gyro liegt hier rum, aber da bin ich erstmal davor zurückgeschreckt. Die Auswertung der Daten geht ja nur beim Fahren. Also muss ich die Daten drahtlos übermitteln und graphisch darstellen.
    Das wollte ich mir sparen, aber da spare ich wohl an der falschen Ecke. ?( Mit einem RF-Nano sollte die Datenübertragung relativ einfach möglich sein.
    Brauche ich halt noch ein Kommunikationsmodul auf dem PC... da ist ja sogar ein Download für ein Kommunikationsmodul unter dem von dir geteilten Link. :):)


    Na ja. Bahn säubern nicht wirklich - da reichen swiffern und ein paar Runden. Aber gerne zum Grip drauf fahren.


    Zielsetzung ist schon das autonome Fahren. Ist wohl mehr Selbstzweck als Nutzen - ich finde das Thema halt spannend. :rolleyes:


    Nochmal vielen Dank für eure Tipps.


    Cheers,
    Diegu

  • Hallo miteinander,


    ich habe mir auch so meine Gedanken für ein preiswertes Ghostcar gemacht.


    Was wäre, wenn man die händisch gefahrenen Steuerungssignale für ein beliebiges Auto einer Runde aufzeichnet und dann wieder für dieses Fahrzeug als Ghostcar abspielt.
    Mit Sensoren für Sektoren würde es noch genauer werden, da mehrere Punkte zur Synchronisation in einer Rennstrecke da wären. Dazu müßte nichts an Elektronik in ein kleines Auto "gequetscht" werden.
    Theoretisch müsste CockpitXp das als Funktion integrieren können. Hier sogar mit nachträglicher Editierfunktion in CockpitXP.


    Ok, vielleicht nicht das absolute Optimum, aber deutlich schneller als das Carrera Ghost, da nicht mehr die engste Kurve die Beschränkung wäre.


    Gruß
    Bernhard

  • @bernhard-willi: Wie @nodrifts schon geschrieben hat, habe ich eine sensorbasierte Variante unter dem Titel "Schnelle GhostCars" für Carrera Digital entwickelt (bei Interesse einfach ne PM an mich). Er hat den Fred verlinkt, da findest du die Details. Bei Bedarf ließe sich das Konzept auch einfach an eine analoge Bahn adaptieren.


    @Diegu: Der Schwimmwinkel ist zwar einfach, gibt aber auch nicht viel her. Eine 60%-Lösung ist auch ohne diesen recht schnell gezimmert, ab dann wird's viel Arbeit. Zwei Dinge solltest du asap erledigen:
    1. Erstelle ein vollständiges Funktionskonzept, wie dein autonomes Slotcar überhaupt arbeiten soll. Und das auch bis in die Detailebene, welche Daten du in welcher Qualität brauchst, mit welchen Algos dein Slotcar sein Streckenmodell ermittelt, wie du aus einer (dem Slotcar) bekannten Bahn eine schnelle Runde zauberst, etc. Das ist viel Arbeit, aber ohne Plan wird dein Vorhaben wenig Chancen haben. Und du hast dir echt etwas Großes vorgenommen! Eine Messmethode ist dabei das kleinste "Übel".
    2. Stelle einen (ehrlichen) Vergleich zu einer automatisierten Lösung an, bei der du das Slotcar über z.B. Sensoren an der Bahn steuerst. Ein guter Ansatz wäre es in meinen Augen, wenn du das Slotcar über eine Kamera (an der Decke) lokalisierst, damit die Bahn lernen kannst, diese anschließend in Sektoren unterteilst und dann eine recht einfache Rundenzeitoptimierung darüber laufen lässt.


    Grüße

  • Hi Philipp,


    es gibt tatsächlich ein Konzept. Dieses basiert auf einem PID-Regelalgorithms und einer Formel, um Bremspunkte abhängig von Kurvenbeginn und Kurveneingangsgeschwindigkeit zu ermitteln.
    In der Basis-Version (ohne lernen) werden Kurvenbeginn mit entsprechender Kurveneingangsgeschwindigkeit fest vordefiniert - damit ergibt sich der Anfang der Bremsstrecke bei fester negativer Beschleunigung. Außerhalb der Bremsstrecken ist die Führungsgröße für den Regelalgorithmus der Leitkielwinkel. Stellgröße ist die Motorspannung.


    Neben den Kurveneingangsinformationen soll das Fahrzeug also nichts über den Streckenverlauf wissen. Stattdessen wird es über den Regelkreis gesteuert.
    Solche Algorithmen sorgen auch dafür, dass ein Segway nicht umfällt.


    Definitiv ist anzuzweifeln, ob der Leitkielwinkel als Stellgröße taugt. Und ohne Live-Auswertungen wird das wohl auch nichts werden.
    In beiden Punkten bin ich voll mit der einig.


    Externe Installationen will ich keine. Da riskiere ich lieber, dass mein Konzept am Ende nicht aufgeht. In dem Fall war der Weg das Ziel :)


    Cheers,
    Diegu

  • Google Werbung
  • Ich vermute, dass die Formel den reinen Verzögerungsweg aus der Geschwindigkeitsdifferenz und dem Weg bis zum Bremspunkt berechnet. Wenn du den realen Kurvenbeginn / das reale Kurvenende noch nutzt, um die Istposition des Slotcars abzugleichen, kann damit sogar eine halbwegs schnelle Runde entstehen. Richtig gespannt bin ich auf den Ansatz, mit dem du die Bremspunkte und die Kurveneingangsgeschwindigkeit herausfahren willst.


    Wie ist eigentlich dein Ziel? Wenn deine schnellste Runde 100% ist, wie schnell soll das autonome Slotcar werden?


    Tipp: Ich würde für den "Tacho" übrigens unbedingt weiter die Vorderachse verwenden. Idealerweise versiegelst du nur eines der beiden Vorderräder, dann bekommst du eine bestmögliche Messung der gefahrenen Distanz.


    Grüße

  • Genau, die Formel ist eigentlich relativ einfach, wenn man sich noch an die Oberstufenmathe und Integrieren und Ableiten zurückerinnert. Das ist mir natürlich nicht gelungen - meinem Schwiegersohn aber schon ;) .


    Naja - das mit den Bremspunkten: Die Idee ist, diese in der Lernphase bei rundenweise steigender Spannung daran zu erkennen, dass der Leitkielwinkel einen Threshold-Wert (aktuell 22°) übersteigt.
    Ich glaube, das schminke ich mir erstmal ab und nehme mir das für eine spätere Version vor. Erstmal taugt die Vorgabe über ein Array mit jeweils Position und Zielgeschwindigkeit. Das ist implementiert.


    Bei einer ordentlichen 6-Sekunden-Runde auf meiner Bahn wäre ich mit 6.2 Sekunden mehr als zufrieden. Der Pacer ist ja echt im Nachteil. Ballast an Bord. Ein Vorderrad mit Grip (habe ich heute tatsächlich getestet) - sehe ich genau so wie du: Wenn Grip vorne schon sein muss, dann aber bitte nur an einem Rad...


    Was spricht aus deiner Sicht gegen die Hinterachse? Ich habe einfach gesagt: Kein Platz...


    Ein Problem der aktuellen Bereifung ist, dass die eh viel Grip haben. Das macht das Auto aggressiv und der optimale Driftwinkel ist ziemlich eng, was das Leitkielproblem noch erhöht und es dem Regelalgorithmus erschwert.
    Ich werde für die ersten Testfahrten wohl auf Reifen mit wenig Grip gehen. Das ist dann eher so wie fahren in Zeitlupe.


    Bezüglich Driftwinkel habe ich mal eine Messreihe mit unterschiedlichen Magnetlayouts durchgeführt. Das Design ist für die Auflösung schon ziemlich entscheidend. Gestartet habe ich mit Setup 1 - das war echt Murks - jetzt bin ich bei 3:


    Guide_Statistics.jpg


    Gruß
    Diegu

  • Was spricht aus deiner Sicht gegen die Hinterachse? Ich habe einfach gesagt: Kein Platz...

    Recht einfach: Die Antriebskräfte. Du wirst an der angetriebenen Achse immer Schlupf haben, welcher dir direkt das Integral der zurückgelegten Strecke versaut. Die Vorderachse ist hier nahezu frei von Störungen, insbesondere mit einem (!) versiegelten Rad. Das unversiegelte Rad (evtl. sogar mit einem guten Grip!) liefert damit eine saubere Referenzdrehzahl-/geschwindigkeit/-strecke und de bekommt auch wenig Störungen vom anderen Vorderrad. Vielleicht ist auch eine einseitige Freilaufachse das Optimum. Wenn der Platz an der VA nicht ausreicht, solltest du das Package anfassen.


    Grüße

  • ebay Werbung
  • Gestern sind die Kondensatoren gekommen. Ich hatte echt Probleme mit Funkentstörung. Der Aufbau hat sich immer nach ein paar Runden verabschiedet. Sieht so aus, dass ich das jetzt vernünftig entstört habe.


    Damit kann's also weitergehen...


    Eine meiner etwas gewagteren Grundannahmen war, dass ein PID-Regler auf Basis des Leitkielwinkels schon alles richten wird ?( - zumindest, wenn man mit einer vernünftigen Geschwindigkeit in die Kurven reinfährt.


    So ein PID-Regler ist ja schnell programmiert. De facto ist das ein Einzeiler. Aber wie setzt man die Regel-Konstanten für P, I und D?


    Äh, wer Regelungstechnik studiert hat, wird sich jetzt wohl mit Grausen abwenden. Für die anderen Interessenten: Es gibt echt schicke 15-Minuten-Videos auf der Tube, in denen die Grundlagen für so einen PID-Regler erklärt werden. Mir gefällt dieses Video: Einführung PID-Regler


    Wenn man also wie ich interessierter Laie ist (äh - höflich für "Wenn man keine Ahnung hat, wie man so ein Ding konfigurieren soll und was welcher Parameter bedeutet"), wie soll das dann gehen???


    Eine der ersten panischen Fragestellungen war: Erreiche ich überhaupt eine vernünftige Regelungsfrequenz - ich habe mir ja nur die Arduino-Nano-Sparversion geholt)?
    Laut Video oben sollte man schon an die 100Hz Regelungsfrequenz kommen. Im Drockendock mit Debug-Ausgaben bin ich bei gerade mal 10Hz :cursing: .


    Na ja. Nochmal den Code durchgeschaut, alle Debugausgaben bis auf ein "Ping" je Zyklus rausgebaut und...
    Mit "Ping" komme ich auf eine Regelungsgeschwindigkeit von leicht mehr als 100 Hz. Da ergibt es also Sinn, weiterzumachen :)


    Aber wegen den Parametern.... Ich habe mir gedacht, dass ich eine unendliche Kurve brauche um die Parameter einzustellen, da kann ich wenigstens ewig zuschauen, welcher Parameter sich wie auswirkt. :)
    Das ganze Thema mit Links- und Rechtskurven ist dann raus und über Bremspunkte muss ich mir auch keine Gedanken machen...


    Also die alten Ninco-Kurven vom Dachboden geholt, konzentrische Vollkreise mit R2 und R3 zusammengesteckt und alle Spuren mit 12V verbunden.


    Nach einem Tag Setup und Testreihen bin ich dann - so wie ich meine - zu einem ganz akzeptablen Ergebnis gekommen.


    Interessant war für mich, dass eine meiner Grundannahmen überhaupt nicht gestimmt hat: 8° Driftwinkel ist bei weitem nicht optimal, sondern viel zu groß. Optimal sind wohl eher Driftwinkel von so um die 2°. (Das Heck schwänzelt ja schon bei 0° ganz nett....)
    Das war zwar einfach zu konfigurieren - ist eh nur ne Konstante, hat dann aber mehrere Implikationen. Insbesondere muss das Fahrzeug unbedingt wissen, ob es aktuell eine Rechts- oder Linkskurve fährt. Der Leitkiel kann ja auch nach innen mehr als 2° gedreht sein...
    Eigentlich wäre es auch noch nett, den Kurvenradius zu wissen...


    Hier mal ein Video mit schlechten und ordentlich PID-Parametern. Hoffentlich kriegt keiner einen Drehwurm:


    Externer Inhalt
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.


    Cheers,
    Diegu


    PS.: Das Auto weiß überhaupt nichts über die Radien. Es wird ausschließlich über den Leitkielwinkel gesteuert.

  • Im Drockendock mit Debug-Ausgaben bin ich bei gerade mal 10Hz

    Benutzt du als Debug den Serial-Port? Der ist einfach irre Langsam...
    Wenn du keine seriellen Ausgaben sendest, dann sollte das um ein vielfaches schneller laufen :thumbup:


    Ansonsten sieht das doch schon sehr gut aus.


    Statt den Leitkielwinkel zu messen, könnte man nicht irgendwie auch mit einem 3-Achs Gyroskop-/Beschleunigungssensor arbeiten?

  • Benutzt du als Debug den Serial-Port? Der ist einfach irre Langsam...Wenn du keine seriellen Ausgaben sendest, dann sollte das um ein vielfaches schneller laufen :thumbup:


    Ansonsten sieht das doch schon sehr gut aus.


    Statt den Leitkielwinkel zu messen, könnte man nicht irgendwie auch mit einem 3-Achs Gyroskop-/Beschleunigungssensor arbeiten?

    Stimmt. Läuft gut Faktor 10 schneller :) hatte ich ja oben geschrieben. Bin bei gut 100 Hz.


    Leitkielwinkel fand ich eigentlich eine gute Idee, weil der eigentlich das Regeln bei (in Grenzen) unterschiedlichen Gripverhältnissen ermöglichen sollte.
    Gyro: Sehe ich auch so, aber dann muss man mit Live-Daten arbeiten. Aber das wird wohl eh notwendig. Braucht halt dann noch Zeit.

  • Lange kein Post mehr hier. Jetzt hatte ich aber mal wieder Urlaub und es ist Zeit für einen etwas ernüchternden Update.


    Ich konnte zwischenzeitlich auf Arduino Nano 33 IoT hochrüsten - Dank eines tollen Tipps hier auf dem Forum!!!
    Damit kann ich dann neben Gyrodaten insbesondere die Beschleunigungsdaten in allen drei Dimensionen mit Blynk live auf meinem Smartphone darstellen. Habe sogar mein Smartphone als Fernsteuerung verwenden können.


    Klingt auf den ersten Blick gut. Leider funktioniert das im "Trockendoch" zwar verlässlich, auf der "Strecke" nur so ein paar Sekunden und dann ist wieder ein Arduino geschrottet.


    Ich wusste ja, dass mein Ansatz ziemlich blauäugig ist, aber dass mir die Bauteile um die Ohren fliegen hätte ich nicht gedacht <X:wacko: .


    Ich habe einfach den Eindruck, dass Motorsteuerung, Geschwindigkeitsmesser, Winkelsensor und Hall-Sensor für die Rundenerkennung zu viel Leistung ziehen.
    Vernünftige Bauteile mit nachvollziehbarer Spec konnte ich aber im Web nirgends finden.


    Na ja. Vielleicht hat ja noch jemand irgendwelche Ideen, ansonsten ist hier wohl Schluss. ;(


    Cheers,
    Diegu

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!