Some News
Saturday, May 22, 2004 (22:58:51)

Posted by torcs

I'm happy to see that the TORCS page view statistics on sourceforge has turned 1,000,000
I'd like to thanks all the contributors and all the supporters, they really make the project alive.
You've certainly noted that the site is not updated very often, but the torcs-users mailing list is much more active.

The latest projects news:

  • Bernhard has started to organize a robot championship and proposed a draft for the rules (use the Read More... button to see a copy of the rules)
  • Christos is actively working on 3D simulation, graphics (cars dammage) and sound (very nice). All that is in the CVS tree.

Have Fun !
Eric.

Purpose of this document:
- Collect ideas.
- Base for discussion.

TODO:
- Structure, formulations.
- Joining the championship during the season?
- Filling gaps with stock drivers?
- ?
- web-application.


TORCS Endurance World Championship (Draft)
-----------------------------------------

Goals:
- Build up a TORCS AI racing community, enjoy the people.
- Explore various ideas.
- Fun.

Overview:
Welcome to the "TORCS Endurance World championship". The championship consists
of races over ~500km on various suitable road tracks. The robots are
rewarded with points for their rank in the races. Based on these results
the standings of the driver and team championship are computed. To run the
races TORCS-1.2.2 is used. There will be approximately one race every 3-4 Weeks.
To avoid cheating every competitor is invited to run the races on his own
system and submit the result to a web-application (name?). To get as much
results as possible the submission is rewarded with points for the team
championship.
Parallel to the official championship there will be open preparation races to
give you the opportunity to stabilize your code.
Before all this actually can happen I need to develop/set up a web-application.
To test it there will be a test-championship with 3 races to fix the rules,
process and the application.

"Gentlemen, start your processors."



Process for the Championship (supported by web-application, TODO):
------------------------------------------------------------------
Phases overview:
- Register as 'spectator' (web-application).
- Move your account into a 'racer' account (web-application) .
- Create your Team(s) (web-application).
- Sign up the team for the championship (web-application).
- Championship starts, ~every 3-4 weeks one race, a schedule will be prepared
  (TODO)
- Tracks: ERoad, CG-Track-2, CG-Track-3, Spring, Wheel-1, Alpine-1, E-Track-1,
  E-Track-2, E-Track-3, E-Track-4, E-Track-6.
- Race: Robot submission phase 1 week, race execution and result submission 1
  week, 1-2 weeks break (-->open testing races).
- Recommended: attend unofficial "test races" to discover/fix/avoid problems.



Process for one Race (supported by web-application, TODO):
----------------------------------------------------------
Phases overview:
- Robot submission.
- Installation.
- Running the race.
- Submit the results.
- The standings are computed.

Detailed:
- Submission: The team owners can upload their updated tar.bz2 of the robots
  during one Week.
- Race preparation: The team owners willing to run the race download all robots
  and install them on their system and run an endurance race according to the
  official start list.
- The team owners submit the result xml file, the submission is rewarded with 2
  points for the team championship. If it owns more than one team, the team with
  the least points get the reward. (1 Week)
- For every driver the median of the ranks of the submitted results is taken for
  the points, e. g. driver "d1" became 18,7,7,7,6 then the median is the 7 in
  the middle. If the number of submitted results is even then the median is the
  arithmetic mean of the two elements in the middle.

Driver Point System:
Rank   : 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18
Points : 18 16 15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00
- Why not FIA? --> Brain dead. It destroys gathered information below the 8th
  rank, but it is certainly better to become 11th than 17th, no? So we reward
  any place but the last.
- No points for qualifying because the reward is the position in the starting
  grid.
- Winning is good, so you get an extra point.

Team Point System:
- Sum of drivers points.
- Additional 2 points per result submission to motivate for submission (max. 1
  submission per race).

Why the median:
- With the median floor(n/2) of n (n odd) submissions can be cheated and the
  result is still reasonable.
- The median is a measured result, not a "virtual" computed value.
- Outliers (? measurements with outstanding error) do not harm like in the mean
  (e.g. arithmetic mean).

Why distributed:
- Avoid cheating.
- Different binaries can end up in different results (no joke).
- I want attend and you do not trust me:-)

Inofficial Races:
- To avoid compilation, runtime, etc. problems there is before (1-2 Weeks) the
  official race an inoffical open test race.


Rules
-----

The Rules over the Rules:
- If problems with the rules are discovered they can become adjusted during the
  championship.
- The updated rules are just applied to the upcoming races, the former results
  are not affected.
- Changes are discussed via a forum or mailing list (TODO).
- Rule changes are accepted or rejected via voting (poll), where every team
  owner has exactly one vote, independent how many teams it owns.
- A rule change must get more than the half of all votes to become accepted.


Technical Rules:

TORCS:

TORCS installation:
- Vanilla TORCS-1.2.2 on Linux.
- simuv2 is used.
- If problems are discovered fixes might be applied during the championship.
- The environment should be set up according to the robot tutorial
  ($TORCS_BASE, $MAKE_DEFAULT).

TORCS runtime problems:
- If TORCS is not able to run a race because of a TORCS bug the race is
  repeated after the last race of the championship but with the currently
  submitted robots.
- Definition of "not able to run a race": More than the half of the
  competitors willing to run the race were no able to do so. This could be
  abused, better ideas?
- If the problem becomes not fixed till the end of the championship the
  race is canceled.


Robots/Robot Module:
- The robot module name must consist of lowercase letters, followed by _2004
  (^[a-z]+_2004$), e. g. "damned_2004" (-->portability).
- The robots names are free but must not match one of the stock robots of
  TORCS 1.2.2 (-->parallel installation).
- The robots module must be licensed under the GPL and must not contain any
  precompiled object files (-->system intrusion, cheating, copyright problems).
- The robots code must not be obfuscated.
- The robots must compile on g++ > 3.0 (namespace prefix,  instead of
  , etc).
- If you use random numbers you have to implement a generator by yourself and
  to guarantee that each robot has its own instance of the generator and start
  with a well defined seed, see appendix.
- The robots must behave nice on the host system, it is forbidden to take any
  actions which are not necessary for racing, e. g. forbidden is:
	- Replacing trackgen with a custom shell script.
	- Connect to the network.
	- Deleting, creating and manipulating files.
	- I think you get the idea.
	Allowed is e. g.:
	- Reading your robots data files.
- The robots must not manipulate any data in the simulation explicitly, except
  the car->ctrl structure and its own (the robots module) data (e. g. it is
  forbidden to get somehow a pointer to "damned 4" data and to modify it).
- The robot must compile with a simple "make" in the environment specified
  above.
- If a robot module causes problems with TORCS it gets excluded from the current
  race.
- On a system with 256MB RAM, 1GHz CPU it should be possible to run 10 of your
  robots fluently (> 20FPS).
- On a system with 256MB RAM, 2GHz CPU it should be possible to run 20 of your
  robots fluently (> 20FPS).
- Car textures size should be 512x512.
- Pit texture size should be 128x128 or 256x256.
- The compressed archive size should not exceed 500kb.


Racing Season Rules:

Team Rules:
- A team consists of one owner, one robot module and two cars of equal type.
- Each car of the team is allowed to have its own setups and behaviour.
- Teams are not allowed to share data during the race or to cooperate.
- The two cars of one team are allowed to cooperate.
- A team must not treat any other specific team or car in a special way (e. g.
 it is not allowed to try to crash into "inferno 1").
- If there are more than 9 teams the races start with one car per team.
- If there less than 10 teams the races start with two cars per team.
- If we have enough space a team owner might have more than one team per race.
- To resolve: double points with 1 car to allow joining during the season?

Cars Rules:

Allowed Cars:
Your team can choose at the beginning of the championship one of the following
cars:
- 155-DTM (Alfa Romeo 155 DTM)
- clkdtm (Mercedes CLK DTM) <-- Recommended!
- viper-gts-r (Viper GTS-R)
- 360-modena (Ferrari 360 Modena)
- porsche-gt3rs (Porsche GT3 RS)
You are not allowed to change the car during the championship. I strongly
recommend to use the clkdtm (if you want to win).

Setups:
Robot(s) are allowed to alter car settings during the "track initialization" via
- *carParmHandle = GfParmReadFile(filename, GFPARM_RMODE_STD);
- GfParmSet* calls.
Robots are allowed to alter the following car settings:
- Initial fuel.
- Front and Rear Wing angle where available.
- The gear ratios.
- The differential type and ratio.
- front-rear brake repartition and max pressure.
- Wheels:ride height, toe and camber.
- Anti rollbars: spring and bellcrank.
- Suspension: spring, suspension course, bellcrank, packers, slow/fast bump,
  slow/fast rebound.
All other car settings must not be modified!


Racing Rules:
- Robots are not allowed to hinder overlapping opponents.
- The Robots must try to avoid collisions with opponents.
- The assigned racing numbers must be clearly visible on the cars.
- It is forbidden to "park" on the race track or in the pit lane.

Penalties/Cheating/Protest:
- If someone cheats its points for the corresponding race are deleted, but the
  points of the other competitors are not altered (to simplify the process,
  perhaps we can recalculate it, we will see).
- To conclude that someone has cheated (defendant), someone (accusant) must ask
  for an investigation, voting decides if there was cheating. The defendant and
  accusant are not allowed to vote. To apply the penalty at least 2/3 of the
  votes must confirm cheating.
- The accusant must exactly specify what is wrong.


-- End of Rules

"Gentlemen Agreement":
- Do not "steal" code of the other robots during the championship.
- It is allowed to take the bt robots as base.
- The robot should behave reasonable.
- Do not cheat.
- Register just one user.



Appendix:

Definition of terms:
- Team owner: A person which represents/owns one or more teams. It is responsible for the submission of the robot
modules and for delivering its race result.
- Team: A robot module which offers two robots which drive the same type of car.
- Robot module: Shared library.
- Robot: One "instance" of a driver.

Random numbers (untested):
static int z = 123456; // seed on start, make sure every robot has its own!
float myrand(float &z)
{
	const int a = 16807;
	const int m = 2147483647;
	const int q = m/a;
	const int r = m%a;

	int gamma = a*(z%q) - r*(z/q);
	z = (gamma > 0) ? gamma : gamma + m;
	return z*(1.0/m);
}

Content received from: torcs, http://torcs.org