Carrera autos schneller machen

Aus der mandico.net Artikelsammlung, mit Beiträgen verschiedener autoren (siehe Versionsgeschichte)
*

... Steht wie Projekttitel für das Realisierung eines autonom fahrenden Fahrzeugs auf einer spurgebundenen Spielzeugrennbahn. Es soll ein auto entwickelt werden, das in einer Carrerabahn möglichst schnelle Rundenzeiten fährt. Dabei sind Eingriffe an die Strecke heu Steuerbefehle von außen tabu.

Du schaust: Carrera autos schneller machen


2 Konzept2.3 Sektorerkennung: Streckenaufteilung an Sektoren zur Datenverdichtung2.4 Positionsbestimmung/Synchronisierung4 Software
*

Die legendäre Carrerabahn das ende Kindheitstagen ist vielen noch einer Begriff. Ns Hauptmerkmale zu sein steckbare Schienenteile mit Führungsschlitz an der mitte und zwei Spannungsschienen, das die für den Elektromotor nötige energie liefern. Weil das manuell gesteuerte autos wird weil einen Handregler der Schienensstrom (Analogbahn) oder ein PWM-Datenwort (Digitalbahn) vorgegeben und zum die Fahrgeschwindigkeit gesteuert. Für Digitalbahnen zeigen es by Carrera unter dem Begriff Ghostcar sogar automatisch fahrende Fahrzeuge. Diese fahren mit einen konstanten Geschwindigkeit, die manuell an die langsamsten Stelle in der route eingerichtet wird. Aber erst wenn das Fahrzeug auch auf Geraden schneller fährt und rechtzeitig vor Kurven abbremst, verhält sich das Ghostcar zusammen ein realer Gegner. Genau dies soll das Gcp-Fahrzeug (hier dann zusammen Abkürzung für GhostCar Protoyp) leisten können.


Konzept

Grundprinzip


*

Heruntergeklappte Antriebsachse mit Reflexkoppler und Teilungsscheibe

Der entscheidende anzeige um schnell fahren zu können ist das Wissen by den Streckenverlauf und das Position des Autos auf der Strecke. Hierzu wurde ns Carrera-Auto mit ein Gyrosensor und einer Reflexkoppler-Lichtschranke in der Hinterachse ausgestattet. Ns Gyrosensor misst das Winkelgeschwindkeit (in Milligrad zum Sekunde ), oder anders formuliert, er liefert ns Wert, das aussagt, zusammen schnell sich das Fahrzeug um seine Hochachse dreht - im folgenden als GyroZ bezeichnet. Misst einer sehr häufig und summiert jedermann Zahlenwerte auf, deshalb ergibt sich davon der zurückgelegte Kurvenwinkel (oder mathematisch ausgedrückt: der überstrichene Winkel ist ns Integral der Drehrate).

Mit das Reflexkoppler-Lichtschranke, die einer Scheibe mit schwarz und weißen Teilungsstrichen abtastet, erlauben sich (Teil-)Umdrehungen das hinteren Antriebsräder messen. Verstehen die gezählten "Wheelticks" durch eine (Tor-)Zeit dividiert, so erhält man in die Raddrehzahl (gemessen in RPM). Sofern kein Schlupf bei den Rädern auftritt, ist ns Fahrzeuggeschwindigkeit proportional kommen sie Raddrehzahl.

Wie können die aufgenommenen Messwerte bewerten werden?

Die nachfolgende animation zeigt ein aufgezeichneten GyroZ-Verlauf einen kompletten runde (plus etwas Zugabe).

*
Animation: Streckenmodell

Diese route besteht ende 14 Rechts- und 9 Linkskurven unterschiedlicher Kurvenradien und -längen. Ein hoher GyroZ-Wert weg (bei konstanter Geschwindigkeit) einer hohe Drehrate und damit einen engen Kurvenradius. Weniger GyroZ-Werte durchschnitt weniger enge Kurven. Ns plateauartigen Passagen Teilstücke, die einer konstante Drehrate von eine längere Zeit (bzw. Weg) haben, z.B. Langgezogene Kurven heu Geraden. Kurze Kurven heu kurze Geraden werden aufgrund kurze Peaks abgebildet.

Normiert man das GyroZ-Wert oben eine Geschwindigkeit von z.B. 1000RPM (=> GyroZNorm = Rohwert / Drehzahl * 1000), so erhält einer eine von der Momentangeschwindigkeit unabhängige ausdruck über ns Kurvenradius.

Die dargestellten zahlen sind schon umgerechnet in den zurückgelegten straße (anstatt das GyroZ-Verlauf by der mal darzustellen). Dies hat den Vorteil, das man deshalb immer ns gleichen Kurvenverlauf erhält - egal, ob man langsam heu schnell fährt. Dies Kurvenverlauf ist so ein charakteristischer Verlauf ns Strecke und nicht das momentanen Fahrweise. Die folge ist ist der genaue Verlauf der Strecke bekannt, das liegt quasi ns Streckenmodell vor - bitte in Gedanken an Karton ausdrucken.

Stellt man sich derzeit weiter vor, das das automobil schon ein längeren Weg oben dieser strecke zurückgelegt hat und sich nur irgendwo mitten bei der runden befindet, könnte man den aktuellen GyroZ-Verlauf bis zu hierhin an ein (ggf. Sehr) breites Stück Transparentpapier drucken. Würde man dies Transparentpapier beliebig by den Karton von dem Streckenmodell legen, dafür könnte man aufgrund hin- und herschieben des Transparentpapiers, beide Kurvenverläufe zur startseite bringen. Dort wo der rechte Rand des Papiers ist, dort standort man sich gerade (bezogen in das Streckenmodell). Um zu wissen wenn beschleunigt werden darf hagen ob gebremst verstehen muss, kam man nur auf von Streckenmodell (Karton) einig nach müssen schauen (also quasi an die zukunft blicken) und kann sein sich so in den etc Streckenverlauf einstellen. Das nachfolgende animation soll das prinzipielle vorgehen verdeutlichen.

*
Animation: Positionsermittlung

In das Signalverarbeitung läuft das Verfahren des Übereinanderschiebens unter dem Begriff Autokorrelation. Liegen alle Messwerte zur selben zeit vor, so kann nach viel Rechenschritten gelobt werden, zusammen die beiden Papiere zueinander geschoben importieren müssen, um herum deckungsgleich zu sein, sprich, woher sich das Momentanposition in dem Streckenmodell befindet.

Allerdings liegt an dieser Stelle auch das Problem: Es weder jedermann Messdaten gleichzeitig(!) vorrätig (mangels RAM), still steht genügend Rechenzeit zur Verfügung, um alle Verschiebungen durchrechnen kommen sie können.

Abschätzung das anfallenden Datenmenge: Messrate 1kHz; Rundenlänge 20s => 40kByte jeden Runde

Abschätzung ns Rechenzeit: Näherungsweise einer Addition und eine Multiplikation (je 16bittig) pro Millisekunde UND zum Durchgang => 500ns * 20s * 1000<1/s> * 20.000 = 200s.

Um das Position fortlaufend bestimmen kommen sie können, macht man diese Rechnung mehrmals pro Sekunde abschließen können. Deswegen lässt sich dies Verfahren so nicht realisieren - das muss effizienter geführt werden.

Übertragung des Grundprinzips in eine ressourcenschonende Implementierung

Dieser Abschnitt gibt zeigen einen kurz Überblick über die basic Verarbeitungsschritte innerhalb Fahrzeug. Alle verwendeten Algorithmen und Ideen importieren danach genauer darunter die Lupe genommen.

Das nachdem Diagramm soll ns Ablauf grob skizzieren:

*

Sektorerkennung: Streckenaufteilung an Sektoren kommen sie Datenverdichtung


*

*

Wenn man sich die GyroZ-Verläufe genau ansieht stellt man fest, dass sich immer Abschnitte befanden lassen, in denen der GyroZ-Wert für einer gewisse times stabil ist. Genau genommen ist das Verlauf fast eine Rechteckkurve. Das liegt in den Carrera Schienenteilen, ns konstante Kurvenradien jawohl (es gibt keine parabelförmigen Kurven o.ä.). Dies lässt sich fein ausnutzen, um Abschnitte bzw. Sektoren zu bilden. Eingeschränkt gilt dies sogar für frei verlaufende, "organische" Bahnverläufe.

Ein Sektor ist deshalb ein Streckenabschnitt, dessen GyroZ-Verlauf nahezu konstant ist. Zusammen Sektorparameter voll es also aus, wenn nur der charakteristische GyroZ-Wert und ns Sektorlänge gespeichert wird, um später daraus ein weiterer den eigentlichen GyroZ-Verlauf rekonstruieren kommen sie können. Dies gilt sowohl für Kurven, wie auch zum Geraden (bei an diejenigen der GyroZ-Wert ~0 ist). So lässt wir unsere Beispielstrecke "GcpShort1" in ca. 31 Sektoren zerlegen, siehe bild rechts. (Hinweis: das Farben kennzeichnen den Kurvenradius und sollen das Strecke nicht an einzelne Sektoren teilen). Das benötigte Speicherbedarf ist mit weniger wie 400Bytes (=MaxAnz Sektoren * 4Parameter kommen sie je 16Bit; einzelheiten später) eher µC-tauglich.

Wie lassen sich ende dem kontinuierlichen Messdatenstrom Sektoren bestimmen?

Stellt man sich ns virtuelles horizontales band um ns GyroZ-Verlauf bevor und legen fest, das ein Sektor endet, sobald das GyroZ-Wert (für eine gewisse Zeit) die Bandgrenzen überschreitet, dann erhält man automatische eine Stückelung in Abschnitte/Sektoren, die wie Gemeinsamkeit einer ähnlichen GyroZ-Wert haben.


Wenn man das Bandhöhe (also die Höhe des gewählten Bandes) so wählt, dass nicht zu viele Kleinstsektoren hagen nichtaussagekräftige Großsektoren entstehen, hat man automatisch eine gute Annäherung in den tatsächlichen (kontinuierlichen) GyroZ-Verlauf und muss nur ein Bruchteil ns anfallenden daten vorhalten.

Aber zusammen und wann legt einer sich auf die Bandmitte fest, um die finale das eis gelegt wird? das Praxis zeigt, dass sich der GyroZ-Wert nach kurzer Zeit oben sein neues stabiles Plateau einpendelt - und zwar relativ unabhängig von der Lage/Höhe ns Plateaus. Man nimmt z.B. 75ms nach Sektorbeginn einfach den GyroZ-Wert heraus, ns gerade anliegt und definiert diesen zur aktuellen Bandmitte für ns gerade aktiven Sektor. Pranise verbessert sich die Sektorqualität still etwas, einmal man nicht das letzten Rohwert nimmt, sondern einer leicht gefilterten GyroZ-Wert heranzieht (PT1-Filter mit 100ms Filterzeit).Ignoriert man nachher noch kurze Ausreißer ende dem Band, ns z.B. Da Messfehlern/-schwankungen vorkommen, dann erhält man relativ saubere Sektordaten, die das physikalischen Gegebenheiten in langsamer reisen ziemlich korrekt entsprechen.

Möchte man ns Sektordaten dann nutzen, ca die privatgelände Position in der Strecke kommen sie berechnen, und zeichnet davon einen GyroZ-Verlauf, deshalb lässt sich theoretisch genauso vorgehen wie oben mit den (quasi)kontinuierlichen Messwerten beschrieben (Stichwort: Autokorrelation; Verschieben der Papiere). Praktisch würde man nachher die aktuellen Sektordaten mit vergangenen Sektordaten vergleichen und in einer erkannten, identischen folge könnte man oben die aktuelle position schließen. Doch leider funktioniert dies deswegen nicht ausreichend genau, da die Sektorgrenzen no immer in gleichen physikalischen Ort in der Strecke lüge (also z.B. Nicht genau in Kurveneingangspunkt), weil das "Vorgeschichte" ns GyroZ-Verlaufs in die Wahl der Bandmitte einfließt und wir somit das Zeitpunkt (und auch Ort) von Bandverlassens verschiebt => Bremspunkt verschiebt wir => Abflug garantiert. Hinzufügen ändern sich das Sektordaten deutlich, wenn sich das Fahrzeuggeschwindigkeit ändert. Das kommt bei höheren Geschwindigkeiten zu Drifts und Überschwingern. Dies führt kommen sie "zufällig" auftauchenden Sektoren, das die Positionsbestimmung zusätzlich erschwert. Überschwinger treten z.B. Bei der Kurvenausgang auf, wenn das Fahrzeug außerdem seiner Kurvenbahn folgen möchte, obwohl das Strecke bereits bei die gerade übergegangen zu sein (Massenträgheit). Ns führt dann dazu, das die Sektordaten suggerieren, das die Kurve länger erscheint zusammen sie es tatsächlich ist. Ns Kurvenausgangspunkt verschiebt sich so vermeintlich. An S-Kurven ist ns Sache noch extremer. Hier hängen das Sektordaten noch stärker by der Fahrzeuggeschwindigkeit ab. Praxisbeispiel: unsere Beispielstrecke ist bei langsamer geschwindigkeit (1.5m/s = 1285RPM) Über 30.4m lang. An leicht höherer raser (2m/s = 1700RPM) ist ns vom fahrzeug gemessene Streckenlänge schon 31m! (Die Reproduzierbarkeit der Streckenlänge an konstanter specter beträgt unter 10cm). Ns Abweichung kommt durch die angesprochenen Drifts zustande, aber auch durch "Abkürzen" von S-Kurven an langsamer Fahrt.

Alles in allem also keine gut Voraussetzungen für einer schnelle und sichere Fahrt. Noch liefern diese Sektordaten einen wichtigen Beitrag zu Streckenmodell und werden deswegen unaufgeklärt benötigt. Das Länge aller Geraden ich werde ausreichend zuverlässig ermittelt, auch die Länge und Radien das Kurvenstücke ist groß genug, um davon eine max mögliche Fahrgeschwindigkeit abzuleiten. Lediglich ns Reproduzierbarkeit bzw. Ns genaue physikalische Ort der Sektorgrenzen ist verbesserungswürdig.

Was sind weiße/schwarze Sektoren und zusammen kann das Qualität der Sektordaten verbessert werden?

Um die Reproduzierbarkeit zu erhöhen, muss zusätzlich in ein weiteres prozessen zur anfrage von Sektorkenngrößen der satz werden. Um sprachlich hier nicht die beide Konzepte kommen sie vermischen, nennen wir die beiden Verfahren zum Sektorerkennung:

Konzept "Band verlassen" hagen "weißer Algorithmus bzw. Weiß Sektordaten"Konzept "Charakteristische Stellen" oder "schwarzer Algorithmus bzw. Schwarze Sektordaten"

Das idee "Band verlassen/weiße Sektoren" ist oben bereits beschrieben. Im nächste wird ns schwarze Algorithmus näher betrachtet. Übrigens, das Begriffe willkürlich gewählt und sollen rein zur Unterscheidung dienen.

Ziel des schwarzen Algorithmus zu sein es das Sektorgrenzen in einen feste Ort kommen sie binden. Das wagen muss wir darauf belässt können, das der Bremspunkt korrekt sitzt. Kurvenradien kommen sie erfassen oder außergewöhnliche gute Abbildung des GyroZ-Verlaufs sind hier so nicht gefragt.


Schaut man sich das GyroZ-Verlauf bei einem Kurveneingang an, deswegen fällt auf, dass dieser zunächst nahe 0 lügen und sich anschließend rampenförmig hagen schon schon fast sprungförmig ändert. Kein Wunder, bis zum ende geht es ja über einer Geraden bei eine Kurve über. von Erinnerung, das Carrera Schienenteile jawohl keinen erweichen stetigen Übergang by Gerade an Kurve, sondern eine "unstetige Stelle". Noch selbst in weichen Übergängen wäre ns Knick bzw. Steiler Anstieg ns GyroZ-Wertes vorhanden. Wenn man wir den indikation merkt, bei dem der GyroZ-Wert ns gedachtes Nullband verlässt (auch hier anderer ein virtuelles band um die Nulllinie vorstellen), dann sollte dieser Punkt in jeder runden örtlich genau bei der gleich Stelle liegen. In Ende einen (langen) Geraden bewegung das automobil immer schnurgeradeaus. Ca aber nicht Messrauschen oder kurzzeitige Schläge (z.B. Weil die Stoßstellen das Schienen) fehlzuinterpretieren, ich werde verlangt, dass nach Abbiegen sogar mindestens einer Kurve über 3° gefahren werden muss, wenn nicht wird ns Kurveneinlenkpunkt verworfen. Wurden aber die 3° "angesammelt", dafür gilt das Einlenkpunkt wie Beginn eines neuen Sektors. Dieser Sektor endet erste wieder, wenn ns GyroZ-Wert anderer ins Nullband zurückfällt UND es erneut verlässt (dabei natürlich ein weiterer mehr zusammen 3° überfährt).

Dadurch sind die schwarze farbe Sektoren nicht im geringsten mit das weißen Sektoren vergleichbar. Vereinfacht gesagt, start und enden ns schwarzen Sektoren immer in einem Übergang von Gerade bei Kurve oder bei S-Kurven. Dazwischen können dennoch beliebig viele andere Kurvenabschnitte liegen. Dies trifft auch für Kurven zu, das Kurvenradius sich durch Aneinanderreihung von z.B. Immer enger werdenden Schienenteilen ändert. Weiße Sektoren würden kommen sie jeden einzelnen Schienenabschnitt ns Sektor liefern, ns schwarze Sektor auf der anderen seite fasst dies alle zusammen.

Speichert man ns weißen und schwarz Sektordaten in zwei voneinander getrennten Listen, deswegen erhält man für die Beispielstrecke folgende (idealisierte!) Tabellen:

Weiße SektorenSektorNrSektorlängeSektorwinkelBandmitteWegpunktAbs00.00m0°00.00m12.00m0°02.00m
20.70m-90°-22002.70m30.30m-60°-35003.00m40.25m+60°38003.25m51.00m0°04.25m60.90m-90°-17005.15m70.60m0°05.75m80.30m-15°-16006.05m92.10m0°08.15m10...Schwarze SektorenSektorNrSektorlängeSektorwinkelKurvenlageWegpunktAbsBezogen in "weiß"
00.00m0.00mInitialsektor
12.00m2.00mS1
21.00m-150°-150°3.00mS2+S3
31.25m+60°-90°4.25mS4+S5
41.50m-90°-180°5.75mS6+S7
52.40m-15°-195°8.15mS8+S9
6...

Die weißen Sektoren angebot fortan ausschließlich wie Streckenmodell. Das schwarzen Sektoren werden zur Synchronisierung/Positionsbestimmung verwendet. Deshalb kombinieren sich das Vorteile beider Sektorarten.

Positionsbestimmung/Synchronisierung


Unsere zuerst Idee (die sich später allerdings als Sackgasse herausstellte), war es, zu Beginn einer Referenzrunde kommen sie fahren. Die weißen Sektoren sollten ns Streckenmodell (Referenzsektorliste) bilden. Später ich muss dann nur noch erkennung werden, wo wir uns momentan (bezogen in die Referenzrunde) befinden. Dort sich das Sektoren noch stark an Abhängigkeit ns Fahrzeuggeschwindigkeit ändern, war ns Streckenmodell schon veraltet, vor es gar genutzt bekomme konnte. Außerdem müsste angeblicher erkannt verstehen können, wann die Referenzrunde zu Ende soll. Auch musste das gerade erfahrene Livesektor eindeutig einem Referenzrundensektor zuordenbar sein, einer man ns Synchronität no verlieren.Das Vorgehen hätte dann deswegen ausgesehen: das Referenzfahrt liegt zusammen komplette Liste vor und beinhaltet alle Sektoren ns Runde. Der zuletzt gemeldete Sektor wird in der Referenzsektorliste gesucht. Das wäre keine Liste mit aktuellen Sektordaten notwendig gewesen. Nachteil: wille auch zeigen eine Synchronisierung fehlschlagen, dann müsste die komplette Referenzfahrt erneut ausführen werden, da drüben keine Infos by die letzte aufgelaufenen Sektoren vorlägen.

Als bedeutende geeigneter erwies sich das fortlaufende Aktualisieren zeigen einer Sektorliste nach zum FIFO-Prinzip. Nur einer Bedingung: das Runde ermöglichen nicht mehr Sektoren liefern, zusammen die Liste aufheben kann. Was natürlich die maximale Rundenlänge begrenzt, aber sogar sicherstellt, das immer das aktuellsten antragszahlen vorliegen. Ns Fahrt beginnt so mit ns Lernphase, wer einziger Zweck das ist, das Sektorliste zu füllen. Sobald dies erreicht ist, geht die Fahrt nahtlos an die eigentliche Ghostcarfahrt by und das Positionsbestimmung can mit ihrer arbeit beginnen. Ab jetzt wird schnell gefahren. (Derzeit umfasst ns Liste 30 schwarze farbe Sektoren, was auch für länger Strecken ausreicht).

Ziel: es muss ausgehend vom aktuellen Sektor, das Vergleichssektor gegründet werden, der kommen sie dem Streckenabschnitt vor genau ns Runde passt. Kurzum: "Der Vorrundensektor muss aufgefunden werden". Das Positionsbestimmung wille immer dann ausgeführt, wenn ns neuer Sektor über der Sektorerkennung angeliefert wird.Wenn ns Positionsbestimmung zustandslos arbeitet, d.h. Nein Infos das ende vorangegangenen Synchronisationen für ns aktuelle Rechnung benötigt, dann kann es auch nicht zu unheilbaren Fehlsynchronisationen kommen. Wille man in dem Wissen das ende den SyncRechnungen aus den vorherigen Sektoren aufbauen, dafür könnte einer sich bei eine Sackgasse manövrieren, ende der man (algorithmisch) anzeigen schwer anderer heraus kommt.

Auf der suchen nach kommen sie Vorrundensektor wird nicht einfach anzeigen die das gleiche ähnliche Abfolge ns letzten angefallenen Sektoren in der Sektorliste suchte - da drüben dies voraussetzen würde, das die genaue Reihenfolge ohne distanz und zusätzlichen Sektoren bereit so bei der aufführen steht. Zu sein auch nur ein Sektor (z.B. Wegen Überschwingern) hinzugekommen, dann käme ns Algorithmus das ende dem Tritt. Die finden suchen muss deshalb robust gegen ausfallende bzw. Zusätzliche Sektoren sein. Aufgrund eine Ähnlichkeitssuche/Heuristik ich werde nicht ns Reihenfolge ns angefallenen Sektoren bewertet, sondern das wird versucht das Vorrundensektor von unabhängige Wahrscheinlichkeiten kommen sie finden. Und das ist durchaus ohne Sonderbehandlung zusätzlicher heu ausgefallener Sektoren möglich.

Mehr sehen: Aktuelle Nachrichten Der Faz Zum Thema Garzweiler 2 Aktueller Stand

Heuristik: wie lässt sich der Vorrundensektor angeblicher aufspüren?

Getreu zum Motto "Wir können zwar nicht ausrechnen woher wir genau sind, dafür schätzen wir dennoch recht gut", der satz wir für das Positionsbestimmung ns heuristisches prozess ein. Einer statistische bewerten der bei Frage kommenden Vorrundensektoren ziel uns inbegriffen helfen. Alle nachfolgenden Berechnungen finden ausschließlich mit den eigens hierfür eingeführt schwarzen Sektoren statt.

Das Verschieben das Transparentpapierverläufe wird ersetzt aufgrund numerisches aufsehen von "ähnlichen" Sektoren.

Dabei wird bei folgenden Schritten vorgegangen:

Ähnlichkeitsmatrix aufstellenHäufigkeitsverteilung ermittelngewichtete family member Wahrscheinlichkeiten errechnen

Am aus steht das Sektor mit der höchsten Wahrscheinlichkeit als der gesuchte Vorrundensektor fest.

Doch ns Reihe nach:

Was ist die Ähnlichkeitsmatrix?


Die Ähnlichkeitsmatrix beschreibt, ob sich zwei Sektoren ähnlich sind. "Ähnlich" bedeutet, das sich ns Sektordaten bis auf eine niedrig Abweichung gleichen. ("Eine enge 50cm lang 90° Rechtskurve ist einer etc 48cm lang engen 94° Rechtskurve ähnlich - dennoch nicht einer 130cm lang Geraden"). Aufgrund der reinen Zahlenvergleiche kann noch nicht bestimmt zwischen von echten Vorrundensektor und einem bei anderer stelle liegenden ähnlichen Sektor unterschieden werden, was hier aber sogar noch nicht der Fall sein muss. Hierfür kommt später dann die Gewichtung der deshalb gefundenen Kandidaten ins Spiel.

Bei dieser Ähnlichkeitsbetrachtung wird jedermann Sektor der Sektorenliste mit jedem ist anders Sektor vor verglichen. Die Ergebnisse kann sein man sich wie Matrix notiert vorstellen.

Die rechts gezeigte Ähnlichkeitsmatrix basiert auf zeigen sechs Sektoren pro Runde. Das wurde so gewählt, zum die Tabelle hier in der darstellung noch handlich bleibt. Die Werte zu sein frei erfunden und dienen zeigen zur Verifikation von Algorithmus. Die tatsächlich gemessenen schwarz Sektordaten sind anscheinend reproduzierbarer. Ns Zahlenreihe ist also ein Extrembeispiel weil das schlechte Sektordaten. Noch soll auch hiermit das Positionsbestimmung noch möglich sein.(Die Zahlenwerte sind: 353, 208, 400, 479, 627, 125, 358, 207, 186, 211, 479, 619, 481, 207, 186, 214, 477, 607, 482, 207, 185, 210, 477, 585, 453, 206; ns Ähnlichkeitskriterium hier sei ausschließlich der reine Zahlenwert; Toleranz +-10).

Lesebeispiel: der aktuelle Sektor (hier: 25) wird vergleich mit allen seine Vorgängersektoren (also von 0..24). Daraus entsteht dann die unterste Zeile (Zeile 25). Zum jeden Sektor, der zum Sektor 25 ähnlich ist, wird ein Kreuz gesetzt. So wie das wird zum alle andere Sektoren/Zeilen verfahren. Nach rechts wird nicht das Vergleichssektornummer aufgetragen, jedoch die nummer der Zeilen, ns die beiden Sektoren an der liste voneinander trennen (also ns "Abstand" bzw. Das Delta der Sektornummern). Ns Kreuz in Zeile25/Spalte4 (=Z25S4) bedeuten somit: Sektor 25 ist dem Sektor ähnlich, das einen Abstand/Delta von 4 kommen sie ihm hat - also Sektor 21 (25-4=21). => "Sektor 25 und Sektor 21 zu sein sich ähnlich". Diese darstellung hat ihr Vorteil darin, das sich die Rundenlänge (in Sektoren) mit einem aussicht ablesen lässt. In vielen Zeilen ist in Spalte 6 einer Kreuz => eine komplette Runde bestehen wahrscheinlich ende 6 Sektoren.Übrigens, uns interessiert ja eigentlich das Vorrundensektor. Wenn wir noch wissen wie groß ns (momentane) Rundenlänge ist, dann können wir daraus natürlich sogar den Vorrundensektor errechnen.

Häufigkeitsverteilung

Die Häufigkeitsverteilung lizenziert eine aussage darüber, welches das wahrscheinlichste Rundenlänge ist. Sie ist die Summe aller Kreuze bei einer Spalte. Weil das Spalte 6 geben sie sich somit einer Häufigkeit by 13. D.h. 13 ns 25 Sektoren denen ähnlich, die an der aufführen 6 Sektoren vor stehen. Ns Häufigkeitsverteilung fließt an die Berechnung das gewichteten relativen wahrscheinlichkeit ein.

Was hat das mit ns gewichteten relativen Wahrscheinlichkeit auf sich?


Da das Ähnlichkeitsmatrix alle Sektoren liefert, das sich ähnlich sind, dennoch keine Bewertung/Gewichtung für ns wahren Vorrundensektor einführen kann, muss diese Information von ein unterschiedlich Verfahren erkannt werden.

Die für ns Vorrundensektor relevant Zeile bei der Ähnlichkeitsmatrix zu sein immer die letzte Zeile, deshalb hier Zeile 25. Alle mit einem Kreuz versehenen Sektoren sind die Kandidaten, ns für ns Vorrundensektor in Frage kommen. Im beispiel rechts sind ns die Sektoren 21 (=25-4), 19 (=25-6), 13 (=25-12), 9 (=25-16), 7 (=25-18) und 1 (=25-24).Doch welcher davon ist das richtige? das Frage laub sich mit ns "gewichteten relativen Wahrscheinlichkeit" beantworten. Dies lässt sich dafür bestimmen:Die Wahrscheinlichkeit, dass der jeweilige Kandidat dem gesuchte Vorrundensektor entspricht, verhält sich wie die Verteilung der Häufigkeit das Kandidaten (in der betrachteten Spalte) zum Gesamthäufigkeit.Oder sonstiges gesagt: wenn häufig einer Kreuz in der Spalte für Rundenlänge=6 erkennung wurde, dann ist die Wahrscheinlichkeit hoch, das die wahre Rundenlänge tatsächlich 6 beträgt ("Mehrheitsentscheid"). Deswegen wird ns Rundenlänge=6 auch am Positionsbestimmung für ns aktuellen Sektor durch die loved one gewichtete wahrscheinlichkeit bevorzugt (=> "höherer Prozentwert").

Der Prozentwert berechnung sich das ende dem Wert ns Häufigkeitsverteilung * 100% dividiert aufgrund die Sektorhäufigkeitssumme. Die Sektorhäufigkeitssumme ist ns Summe aller bei dieser Zeile verbunden Häufigkeiten. Zum Zeile 25 zu sein dies: 4+13+6+1+2+1 = 27.Für Zeile/Sektornr. 25 und Rundenlänge=4 (also weil das Vergleichssektornr. 21) erhält einer 4*100/27 = 14%. Für einer Rundenlänge=6 gibt sich ein Zahlenwert von 13*100/27 = 48%. Ns restlichen kandidaten haben eine relative gewichtete Wahrscheinlichkeit von 22%, 3%, 7%, 3%.

Hinweis: das Matrix (rechts) ist beendet mit Wahrscheinlichkeitswerten ausgefüllt. Für das Bestimmung des Vorrundensektors würde es auch ausreichen, wenn nur die unterste Zeile berechnet/dargestellt wäre.

Der kandidat mit der höchsten wahrscheinlichkeit soll zusammen Vorrundensektor ich gab zu werden. in diesem fall ist dies der Sektor 19 mit Rundenlänge/Delta=6. Einer Blick bei die Liste der Zahlenwerte (im text oben) ergibt: Sektor25 hat einer Zahlenwert by 206, Sektor19 hat einer Zahlenwert von 207 => passt.

Für etwas Zeilen erlauben sich nur ein bisschen keine kandidat finden, d.h. Das kann kein Vorrundensektor sicherlich werden. => Infolge zulässig das Auto zeigen mit verringerter specter weiterfahren, bis die Position an dem Streckenmodell wieder feststeht (=wieder einen Vorrundensektor ermittelt werden kann). Das nächste beim event hierzu bietet wir dann, wenn der nächste schwarze Sektor gemeldet wird.

Aber selbst wenn einen Kandidat mit ns hohen Prozentsatz (oder überhaupt mit 100%) fehler, falsch, irreführend ist, namens dies nicht zwangsläufig, das dies sogar der wahre Vorrundensektor ist. Tatsächlich könnten es auch sein, dass dieser aufgrund besondere Ereignisse (z.B. Räder drehen für längere zeit durch) beendet "versteckt" ist und nicht mehr dem wahren Vorrundensektor ähnlich ist (evtl. Noch jetzt zufällig einem anderen).

Aus den ermittelten Kandidaten deutet die family member gewichtete wahrscheinlichkeit denjenigen heraus, ns es mit das höchsten Wahrscheinlichkeit sogar ist. (Nebenbei bemerkt: bis jetzt hat sich das Gcp fahndet noch nicht einmal verbremst und zu sein deswegen ende der Kurve geflogen, hat noch öfters niemand Kandidaten finden können und hatte deswegen bis um zum nächste Syncpunkt langsam fahren).

Da ns Rundenlänge hier ja zeigen 6 Sektoren beträgt, ns Liste dennoch 26 Sektoren aufnehmen kann, müssten aber eigentlich etliche Runden an der liste auftauchen. Wieso synchronisiert sich ns Algorithmus nicht versehentlich auf z.B. -12 Sektoren auf? ns könnte theoretisch eher passieren. In der Ähnlichkeitsmatrix sieht einer auch an Spalte Delta=12, Delta=18 (schon weniger) und Delta=24 (nur sehr theoretisch) ebenfalls Ähnlichkeitshäufungen. Das belästigung löst wir quasi von selbst, da die oberen Zeilen verklappt Kreuze beitragen können (und einmal überhaupt, dann liegen diese wegen das Dreiecksform bei den linken Spalten) und erfahren deswegen auch eine geringere Gewichtung.

Was passiert eigentlich in Zeile 9 hagen Zeile 12? hier vertut sich ns Algorithmus beendet und wählt ns falschen Kandidaten. Würde das mit echten Messwerten passieren, nachher könnte ns Fahrzeug letztendlich von der route fliegen.

Wieso beträgt an Zeile 10 und 11 die angebliche Rundenlänge = 7 Sektoren? das liegt daran, dass in der Vorrunde (von Sektor 10 und 11), sich ns Sektor in zwei Sektoren aufgeteilt verfügen über (z.B. Weil Drift). Das Positionsbestimmung liefert also (auch) bei diesem Fall einer korrekten Wert. Ns Rundenlänge muss nicht für alle Ewigkeit konstant sein, sondern kann sein sich dynamisch zur Laufzeit ändern.

Was namens eigentlich: Zwei Sektoren sich ähnlich?

Als Kriterien von Ähnlichkeitsbestimmung bedienen Sektorlänge, Sektorwinkel und Sektorlage. Die Begriffe Sektorlänge und Sektorwinkel sind aus obiger Beschreibung wunderschönen bekannt. Die Sektorlage ist die Ausrichtung ns Sektors in der Ebene (z.B. Der Sektor liegt im 270°-Winkel kommen sie Start-Ziel-Geraden). Erst einmal alle Parameter mit ihre Wert innerhalb einer erlaubten Toleranzbereiches sind, sind gültig zwei Sektoren wie "ähnlich".Für ns Sektorlänge haben sich 10 Wheelticks bewährt (das 10*17.5mm, deshalb 17.5cm), ns Sektorwinkel muss auf 5° identisch und die Lage darf um 60° abweichen. Ns liegt in dem Langzeitdrift von Gyros begründet. Nach einen Drehung (z.B. Nach einen Runde) liefert der Gyro nicht genau 360°, aber weicht ca bis zu 30° ab. Zum Strecken die mehr als 360° Rundenwinkel von (z.B. Zwei ineinander verschachtelte Schleifen), muss die Lage somit n*30° tolerieren (bei wir momentan an 60° parametriert).

Fahrprofil: zur zeit steht ns (schwarze) Vorrundensektor fest, was nun?


Der Vorrundensektor an der schwarz Sektorliste liefert uns den Punkt, oben dem uns uns bevor einer ring befanden. Und da drüben sich das Streckenführung definitionsgemäß nach genau ns Runde wiederholt, ermöglichen man ruhigen Gewissens davon ausgehen, dass der Vorrundensektor+1 derjenige Sektor ist, der als nächstes erreicht wird.

Doch die schwarzen Sektoren absender nicht die Infos, die zur Berechnung von Bremspunkt und maximaler Kurvengeschwindigkeit lebensnotwendigen sind. Einer Wechsel von weißen Sektorliste zu sein erforderlich. Ns Bindeglied zwischen ns Listen die absoluten Wegpunkte. Wegpunkte zu sein die aufaddierten Wheelticks (Reflexkoppler-Pulse) und werden in jeder reisen kontinuierlich hochgezählt - sie wiederholen sich noch nie (vergleichbar mit zum Gesamtkilometerzähler im echten Auto). Da bekannt ist, in welchem Wegpunkt ns schwarze Vorrundensektor lag, kann in der Liste das weißen Sektoren derjenige Sektor suchte werden, in dessen bereich ebenfalls dies Wegpunkt herbst (muss ja nicht zwangsläufig oben eine weiß Sektorgrenze fallen). Jetzt ist ns Abstand zur nächste (weißen) Sektorgrenze jeder weiß und sogar der charakteristische GyroZ-Wert (Bandmitte) von nächsten Sektors lüge vor.

Woher weiß ns Fahrzeug mit welcher geschwindigkeit ein bestimmter Kurvenradius gefahren werden kann?


RPM">
*

Zunächst einmal hängt ns maximale Kurvengeschwindigkeit einer Fahrzeugs von seiner Bodenhaftung (u.a. Magnet innerhalb Unterboden, Fahrbahnbelag, Gewichtsverteilung, Reifenart usw.) abdominal muscle und muss weil das jedes Fahrzeug einmalig ermittelt werden. Sicherlich man diese Geschwindigkeit rechtsextremen für ns oder zwei sicher Kurvenradien, so kann man dies auf unterschiedlich Kurvenradien inter-/extrapolieren. Aus der physik wissen wir, dass sich ns maximale Kurvengeschwindigkeit bei doppeltem Kurvenradius ca Faktor Wurzel2 erhöhen darf. (Zentripetalkraft Fz = m*v²/r). Diese ausdruck wird durch praktische beobachten gestärkt. Das lässt sich deswegen ein verbinden aufstellen, der in Abhängigkeit ns GyroZ-Wertes (Betrag) eine maximal durchführbarkeit Drehzahl (=Geschwindigkeit) aufzeigt. Verpackt an einer (Lookup)Tabelle gibt sich weil das unser Fahrzeug das rechts abgebildete Kennlinie. Der hyperbelförmige Verlauf wird weil einen unteren Wert grenze (hier z.B. 1400RPM). Dies Wert stand für ns Drehzahl, das auch bei der langsamsten Streckenabschnitt noch problemlos gefahren werden kann. Weil das Geraden (GyroZ=0) wurde einer Drehzahl von 8000RPM festgelegt. Diese wird mit unserem fahrzeug auch in sehr lang Geraden noch nicht erreicht. Übrigens, wenn by "Drehzahl" ns Rede ist, ist damit immer das Drehzahl das Hinterachse gemeint. Die Motordrehzahl ist weil das Getriebe nochmals um herum den Faktor 3 höher.

Wann muss gebremst werden?

Aus ns Momentangeschwindigkeit, und der im nächste Sektor erlaubten Maximalgeschwindigkeit (ermittelt das ende der Kennlinie) lässt sich der Bremsweg berechnen. Passt das Bremsweg gerade noch an den aktuellen Sektor hinein, dann wird"s Zeit kommen sie bremsen.


Das bremse wird Über erreicht, dass die Solldrehzahl clo-retardant verringert wille (Bremsrampe). Einer sprungförmige Drehzahländerung wille zwar maximal healthy verzögern, könnten aber in Kurven auch zu Instabilitäten von Fahrzeugs führen. Wenn sich z.B. Einer schnelle Kurve "plötzlich" zuzieht, dann könnte das Fahrzeug in abrupten bremsen ausbrechen. Umgekehrt wird sogar nicht sprungförmig beschleunigt, um keine durchdrehenden Räder zu provozieren (kein Magnet in dem Fahrzeugunterboden verbaut => klein Bodenhaftung => Vollgas => durchdrehende Räder). Legen man das maximal (gewünschte) Verzögerung, zusammen auch die maximal (gewünschte) Beschleunigung zusammen Einstellparameter aus, dafür lässt sich ns Algorithmus in Fahrzeug und route anpassen. Das wäre auch denkbar, das diese Parameter in einer Kalibrierfahrt automatisch von das Software ermittelt werden.

Muss überhaupt gebremst werden?

Liefert das Bremswegberechnung quasi ein negativen Bremsweg, d.h. Die Drehzahl muss in der Sektorgrenze no verringert werden, nachher muss sie wurden getestet werden, ob no sogar beschleunigt werden darf.Beschleunigt bekomme darf immer dann, wenn die Maximalgeschwindigkeit für den aktuellen Sektor noch nicht erreicht ist. Vor der Sektorgrenze darf noch nicht beschleunigt importieren (also nicht als im echten auto bereits im Kurvenscheitel), dort ja das Carrera Schienenteile ns konstanten Radius jawohl und somit an der ganzen Kurven zeigen eine (optimale) specter erlauben. Ein früheres beschleunigen würde zu übermäßigem Drift führen und letztendlich kommen sie langsamerer Rundenzeit. Nebenbei bemerkt: Für kostenlos gefräste Holzbahnen würde einer zulaufende Kurve weil die Sektorerkennung schon in mehrere Abschnitte aufgeteilt verstehen und dies Besonderheit würde sich dort nicht ergeben.

Drehzahlregler


Die von der Sollgeschwindigkeitsberechnung ermittelte Solldrehzahl ("SollRPM") wird in den Drehzahlregler übergeben, der daraus ermittelt, mit welchen PWM-Tastverhältnissen die Motortreiber-Mosfets angesteuert importieren müssen. Es gibt ns Kanal von Ansteuerung ns "Fahr-Mosfets", das die Schienenspannung in den motiv schaltet und ein Kanal für ns "Brems-Mosfet" um zu aktiven Bremsen, der ns Motor kurzschließt. Beide darf natürlich nicht gleichzeitig angesteuert werden, dort es sonst kommen sie einem hart Kurzschluss kommt.

Der Regler ist zusammen PI-Regler ausgelegt. Ns Reglerparameter zu sein experimentell so ermittelt, dass einer möglichst schnelle Annäherung bei die Führungsgröße (SollRpm) ergab ist, ohne das der Regler (stark) überschwingt.

Die PWM-Kanäle verstehen mit 25kHz betrieben und lösen ns Tastverhältnis in 0.1%-Schritten auf.

Mehr sehen: Fleur De Sel Salz - Khoysan Meersalz Fleur De Sel


Elektronik

Als Spenderfahrzeug für das Gcp musste einen ausrangiertes Carreraauto herhalten, dessen Elektronik aufgrund eine besitzen Platine ersetzt wurde. Neben ns Sensoreingängen und den Motortreibern erwies sich oben dem Prototypen sogar eine Kommunikationsschnittstelle damit PC zum Logging/Debug-Aufgaben wie zwingend notwendig.