Autor Beitrag
wdbee Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 628
Erhaltene Danke: 1



BeitragVerfasst: Do 11.01.07 19:01 
Da hast du natürlich recht. Der Grund ist, dass ich alle Stellen, an denen ich etwas abweichend von den C++-Quellen definieren musste auf diese Weise markiert hatte.
Die ursprüngliche Version war für TORCS_1.2.4, das ist nun überall im ELSE-Zweig gelandet.
Wenn kein ELSE-Zweig da ist, war in 1.2.4 nichts erforderlich.
Statt nun "optimale" Bedingungen für jeden Fall zu definieren, verwende ich überall das Schema "If TORCS-Version" und kopiere die Blöcke, weil das schneller geht, mir besser in Erinnerung bleibt, zur Laufzeit nicht stört, ohne Überschneidungen immer machbar ist und nur einen "Define" an zentraler Stelle erfordert.

Dank deines Problems habe ich noch eine Nachlässigkeit gefunden:

Die Property InfoTeamName gibt es erst ab V1.3.0, da gehört also auch noch eine Bedingung drum, so wie dort, wo oInfoTeamName definiert wird.

Wenn du nun etwas mit dem Roboter experimentierst, solltest du wissen, das er sein "Schicksal" speichert. Das sind die *.KARMA-Dateien im Verzeichnis ..\drivers\delphin\X\qualifying, wobei X für die Roboter-Nr. steht. Die *.txt-Versionen enthalten die selben Werte, aber als Delphi-Code-Zeile. Ich habe das anfangs benutzt um Abschnitte von Rennstrecken direkt im Roboter zu beeinflussen.
Da das "Schicksal" aber mit den Einstellungen in den *.XML-Dateien der Rennstrecke zusammenhängt, sollte man das "Schicksal" löschen, wenn man mit anderen Einstellungen fährt.

Gedacht ist das so:
Du trainierst im Practice-Mode, bis du gute Einstellungen hast. Der Roboter speichert jedesmal sein "Schicksal", wenn es dir nicht gefällt, löscht du es.
Wenn du zufrieden bist, lässt du die Dateien stehen. Dann verwendet der Roboter die gelernten Werte im Qualifying und im Rennen.
Hatte er eine Datei eingelesen, gibt er keine neue aus. Das ist beim Delphin anders als beim aktuellen bt ab V1.3.0, der speichert immer wieder, lernt also ständig weiter.
Das steht allerdings im Widerspruch zur Forderung, dass Rennen wiederholbar sein sollen, also z.B. keine Zufallszahlen verwendet werden dürfen (Regeln der TORCS-Meisterschaft).
Dafür lernt der Delphin viel schneller. Meist schafft er es so, im Rennen vor den bts zu starten.

Außerdem tauschen sich Delphine während eines Rennen untereinander aus, was das Lernen angeht! Kann einer vorne starten und hat freie Bahn, dann lernt er schon, während andere noch durch Rivalen gestört werden. Nach einer Runde sieht jeder Delphin nach, was bisher die beste Rundenzeit ergeben hat. War er besser, speichert er seine Werte, ansonsten übernimmt er die Erfahrung eines anderen.

Das mit dem Lernen ist nicht ganz unproblematisch, weil das Gewicht des Fahrzeugs vom Tankinhalt abhängt, und deshalb im Laufe der Runden abnimmt. Werte die gegen Ende des Trainings passen, können bei voll betanktem Wagen (am Anfang des Rennens oder nach einen Boxenstopp) dazu führen, das du aus der Kurve fliegst!

Ich habe deshalb versucht, da eine gewisse Kompensation zu finden. Details kannst du dir im Quellcode ansehen.

Viel Spass!


Zuletzt bearbeitet von wdbee am Fr 12.01.07 22:51, insgesamt 1-mal bearbeitet
GTA-Place
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
EE-Regisseur
Beiträge: 5248
Erhaltene Danke: 2

WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
BeitragVerfasst: Do 11.01.07 19:48 
Die lernen auch noch untereinander? Das ist interessant. Ich muss mir mal Zeit nehmen, den ganzen Source zu studieren, um denn Rennwagen zu verbessern.

_________________
"Wer Ego-Shooter Killerspiele nennt, muss konsequenterweise jeden Horrorstreifen als Killerfilm bezeichnen." (Zeit.de)
wdbee Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 628
Erhaltene Danke: 1



BeitragVerfasst: So 14.01.07 23:20 
Auf der TORCS-Homepage ist nun auch ein Link hierher zu finden. Damit sollten sich auch Interessenten für eine Windows/Delphi-TORCS-Meisterschaft hier einfinden, die die TORCS-Site besuchen.

Wer Interesse hat, kann ja mal posten, auch wenn ein eigener bzw. modifizierter Roboter natürlich etwas Zeit braucht. Aber es wäre da auch einiges vorzubereiten und der nächste Teil des Tutoriums fehlt ja auch noch.

Auf meiner TORCS-Homepage kann man sich registrieren lassen. Nach Aktivierung des Kontos durch mich bekommt man dann Zugriff auf weitere Infos für Teilnehmer und Zuschauer.

Viel Spaß

wdbee
GTA-Place
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
EE-Regisseur
Beiträge: 5248
Erhaltene Danke: 2

WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
BeitragVerfasst: Mo 15.01.07 16:33 
Auch wenn das ganze meine mathematischen und physikalischen Kenntnisse übersteigt, würd ich gern mein Glück bei nem Wettbewerb probieren.

_________________
"Wer Ego-Shooter Killerspiele nennt, muss konsequenterweise jeden Horrorstreifen als Killerfilm bezeichnen." (Zeit.de)
Saubäär
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 376



BeitragVerfasst: Mo 15.01.07 17:12 
Hi Leute,

ich hab mal zwei Screenshots von meinem CLK DTM hochgeladen. Habt ihr das Aussehen euer Wagen auch modifiziert?

Gruß

Saubäär
Einloggen, um Attachments anzusehen!
GTA-Place
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
EE-Regisseur
Beiträge: 5248
Erhaltene Danke: 2

WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
BeitragVerfasst: Mo 15.01.07 17:33 
Ich hab ja noch nicht mal am Source was geändert. Das Design kommt am ende, sobald mein Porsche GT1 die Spur nicht mehr verliert.

_________________
"Wer Ego-Shooter Killerspiele nennt, muss konsequenterweise jeden Horrorstreifen als Killerfilm bezeichnen." (Zeit.de)
wdbee Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 628
Erhaltene Danke: 1



BeitragVerfasst: Mo 15.01.07 18:13 
Aber du denkst daran, dass für die erste Meisterschaft alle mit dem CLK DTM fahren?
Später können wir uns auf andere Wagen einigen.
GTA-Place
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
EE-Regisseur
Beiträge: 5248
Erhaltene Danke: 2

WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
BeitragVerfasst: Mo 15.01.07 18:15 
Achso, OK ^^.

_________________
"Wer Ego-Shooter Killerspiele nennt, muss konsequenterweise jeden Horrorstreifen als Killerfilm bezeichnen." (Zeit.de)
GTA-Place
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
EE-Regisseur
Beiträge: 5248
Erhaltene Danke: 2

WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
BeitragVerfasst: Mo 15.01.07 20:23 
Wo finde ich die DLL von BT 2004, bzw. dem neuen BT? Weil ich es grad geschaft hab, dass mein Auto schneller E-Track 3 schafft.

_________________
"Wer Ego-Shooter Killerspiele nennt, muss konsequenterweise jeden Horrorstreifen als Killerfilm bezeichnen." (Zeit.de)
wdbee Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 628
Erhaltene Danke: 1



BeitragVerfasst: Mo 15.01.07 20:41 
Alle Roboter, die mit TORCS mitgeliefert werden, sind in eigenen Verzeichnissen unter dem TORCS-Verzeichnis (z.B. C:\Programme\TORCS)\Drivers und die Verzeichnisse heißen immer so wie der Roboter.
GTA-Place
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
EE-Regisseur
Beiträge: 5248
Erhaltene Danke: 2

WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
BeitragVerfasst: Mo 15.01.07 21:03 
Schon, aber ich brauch ja einen anspruchsvollen Gegner und die sind ja alle (mit Mercedes) langsam.

_________________
"Wer Ego-Shooter Killerspiele nennt, muss konsequenterweise jeden Horrorstreifen als Killerfilm bezeichnen." (Zeit.de)
wdbee Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 628
Erhaltene Danke: 1



BeitragVerfasst: Mo 15.01.07 21:35 
Welche Rundenzeiten sollte ein würdiger Gegner denn etwa haben?
GTA-Place
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
EE-Regisseur
Beiträge: 5248
Erhaltene Danke: 2

WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
BeitragVerfasst: Mo 15.01.07 21:43 
So 1:20:00 für E-Track 3 sollte er können. Bin knapp hinter der Zeit.

_________________
"Wer Ego-Shooter Killerspiele nennt, muss konsequenterweise jeden Horrorstreifen als Killerfilm bezeichnen." (Zeit.de)
wdbee Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 628
Erhaltene Danke: 1



BeitragVerfasst: Mo 15.01.07 22:55 
Da weiß ich im Moment nur den berniw two 9 und 10. Die fahren den McLaren F1, was natürlich unfair ist, aber damit hast du einen etwas schnelleren Gegner.
wdbee Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 628
Erhaltene Danke: 1



BeitragVerfasst: Mi 17.01.07 13:54 
Um die eigenen Zeiten etwas besser einordnen zu können, hier mal ein paar Zahlen aus der letzten Linux/C++-TORCS-Meisterschaft.

Ergebnisse der Qualifikation auf E-Track 3 (Schnellste Runde):

1:15.538 (Team CTD Racing)
1:15.489 (Team Control)
1:17.113 (Team The Rat Race)
1:21.334 (Team SpeedyBots)
1:21.798 (Team Berniw Racing)
1:32.103 (Team TORCSPlayer Racing)

gefahren mit Mercedes CLK DTM oder Viper GTS-R.

Der Sieger beendete das Rennen (105 Runden) nach 2:17:57.43 (h:m:s) mit nur zwei Boxenstopps. Das entspricht einer durchschnittlichen Rundenzeit von etwa 1:19!
Mit einer mittleren Rundenzeit von 1:24 liegt man im Mittelfeld und mit 1:30 wäre man nicht der Letzte!
Horst_H
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1652
Erhaltene Danke: 243

WIN10,PuppyLinux
FreePascal,Lazarus
BeitragVerfasst: Mi 17.01.07 14:58 
Hallo,

dann habt Ihr ja gute Chancen wdbee und Gta-Place.
Wieviel Speicher darf man eigentlich zum lernen belegen?
Ich kann mir vorstellen, dass man die Strecke komplett einliest oder während der ersten Runde und dann alle interessanten Sachen in records zusmmenfaßt, um schneller rechnen zu können.
Wenn die Bremswegberechnung anschaue, fehlt mir die Änderung des Pedaldruckes in den verschiedenen Abschnitten, es wird einfach der kleinste Wert der Haftreibung in den maximal zu betrachteden Abschnitten genommen.
Bei einem Zeitschritt von 0,02 Sekunden kommt man ja nur 1.76 m weit bei 88 m/s (Vmax), da kann man sicher von Abschnitt zu Abschnitt die Bremskraft modulieren.
Ich versuche überhaupt die Bremsberechnung zu verstehen. Wird diese nur einmal pro Abschnitt berechnet?

Gruß Horst
wdbee Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 628
Erhaltene Danke: 1



BeitragVerfasst: Mi 17.01.07 16:31 
Hallo Horst,

bezüglich des Speichers habe ich noch keine Festlegung gelesen bzw. getroffen. Grundsätzlich sollte jeder davon ausgehen, dass er maximal 5% (1/20tel) der Resourcen (Speicher, Rechenleistung usw.) pro Fahrzeug verwenden kann, denn es sollen bis zu 20 Fahrzeuge (10 Teams a zwei oder 2 Teams a zehn als Matchrace jedes Team gegen jedes andere) gegeneinander antreten können. Sollten es wirklich einmal mehr werden, dann wird in Gruppen gefahren.
Im Tutorial von Berhand Wymann gibt es Hinweise bezüglich der Rechenleistung. Der verfügbare Speicher hängt aber vom PC ab.

Eine TORCS-Meisterschaft wird folgendermaßen ausgetragen:

1. Alle laden ihre Roboter (Quelltexte, keine binären Dateien) und Steuerdateien auf den Server
2. Wenn alle da sind, wird der Download für die Teilnehmer freigegeben. Jeder von ihnen kann dann alle Roboter herunterladen und das Rennen bei sich austragen.
3. Jeder, der ein Rennen durchgeführt hat, kann die Ergebnisse auf den Server hochladen. Dafür gibt es zusätzliche Punkte, denn es ist Arbeit!
4. Wenn der festgelegte Termin erreicht ist, werden alle Ergebnisse zusammengefasst. Da Rennen auf einer Strecke von verschiedenen Teilnehmern durchgeführt werden, ist eine Kontrolle gegen Manipulation möglich!

Wegen dieses Prinzips lässt sich schwer sagen, wieviel MB jeder bekommt.

Aber es sollte kein Problem sein, die Strecke vorab auszuwerten und aufbereitet im RAM zu speichern. Dateizugriffe (während eines Rennens) sollten nicht vorgesehen werden. Alles was zum Einlesen und zur Vorauswertung dient kann im NewRace/NewTrack-Teil untergebracht werden, alles was zum Speichern gehört in ShutDown. Ein Beispiel für einen Roboter, der das macht ist der berniw two. Er berechnet eine "optimale" Fahrspur (Trajektorie, Ideallinie) und speichert die für das Rennen im RAM. Während des Rennens korrigiert es diese Ideallinie abschnittweise, um ausweichen und überholen zu können oder in die Box zu fahren.

Zum Bremsen muss ich folgendes sagen. Im Tutorial ist die Gleichung angegeben, die mit gewissen Vereinfachungen beschreibt, wie lang der Bremsweg ist, um vom von einer Anfangsgeschwindigkeit auf die Endgeschwindigkeit abzubremsen. Der Delphin berechnet vor dem Start für jeden Abschnitt, wie schnell gefahren werden darf. Dabei wird der Kurvenradius des Abschnitts aus benachbarten Abschnitten berechnet.

Dadurch ist die maxmimal zulässige Geschwindigkeit für jeden Abschnitt bekannt. Bei diesen vorberechneten Werten wird aber jeder Abschnitt nur für sich betrachtet, eine folgende Kurve nach einer Geraden (Radius unendlich) beeinflusst nur den letzten Abschnitt vor der Kurve (durch die Schätzung des Kurvenradius). Abschnitte (des Delphins) sind etwa 1m lang und entstehen durch Zerlegung der längeren Segmente mit variabler Länge von TORCS.

Vor einer Kurve nach einer langen Geraden muss aber viel früher gebremst werden. Deshalb wird in jedem Zeitschritt (50 mal pro Sek.) geprüft, ob gebremst werden muss.

Dazu wird zunächst der aktuelle Abschnitt betrachtet. Ist der Wagen schneller als zulässig wird sofort gebremst.
Wenn nicht werden alle vorausliegenden Abschnitte bis zum Ende des Anhaltewegs betrachtet. Wird ein Abschnitt gefunden, dessen zulässige Geschwindigkeit unter der aktuellen liegt, wird berechnet, wie weit der Bremsweg einer Vollbremsung wäre, um den Geschwindigkeitsunterschied auszugleichen. Ist der Weg bis zum maßgebenden Abschnitt länger als der Bremsweg, wird weitergesucht, maximal bis zum Ende des Anhaltewegs (Geschwindigkeitsunterschied = aktueller Geschwindigkeit). Tatsächlich gebremst wird erst, wenn der Bremsweg länger wird als der Weg bis zum maßgebenden Abschnitt, dann aber mit maximalem Bremsdruck.

Soweit der Algorithmus. Eine Vereinfachung ist, dass angenommen wird, das die Haftreibung auf dem ganzen Bremsweg gleich (dem Minimum) ist. Außerdem werden Kuppen und Neigungen nicht berücksichtigt! Eine verbesserte Berechnung könnte das abschnittsweise betrachten und lokale Besonderheiten wie Neigung, anderer Belag usw. berücksichtigen. Außerdem könnte dabei der sich mit der abnehmenden Geschwindigkeit ändernde Einfluß des aerodynamischen Abtriebs und des Luftwiderstands besser erfasst werden.

Dabei ist aber zu bedenken, dass die Berechnung in jedem Zeitschritt vollständig durchgeführt werden muss, da sich die aktuelle Geschwindigkeit ständig ändert!

Der Reiz der Formel von Bernhard Wymann ist eben die Schnelligkeit der Abschätzung.
GTA-Place
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
EE-Regisseur
Beiträge: 5248
Erhaltene Danke: 2

WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
BeitragVerfasst: Mi 17.01.07 16:57 
Wie kann ich prüfen, ob gelenkt wird? Weil BetterSteering ja scheinbar immer einen Wert <> 0 ausgibt.

_________________
"Wer Ego-Shooter Killerspiele nennt, muss konsequenterweise jeden Horrorstreifen als Killerfilm bezeichnen." (Zeit.de)
wdbee Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 628
Erhaltene Danke: 1



BeitragVerfasst: Mi 17.01.07 17:03 
Ich verstehe deine Frage nicht ganz, denn es wird ja auch immer gelenkt. Notfalls geradeaus.
GTA-Place
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
EE-Regisseur
Beiträge: 5248
Erhaltene Danke: 2

WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
BeitragVerfasst: Mi 17.01.07 17:29 
Ich mein jetzt allgemein, ob das Auto zur Seite lenkt. Links und rechts, das ist für mich lenken ;-).

_________________
"Wer Ego-Shooter Killerspiele nennt, muss konsequenterweise jeden Horrorstreifen als Killerfilm bezeichnen." (Zeit.de)