🏁 Welcome to the race! 🏁
The tmrl
competition is a fun way of benchmarking vision-based autonomous car racing approaches.
Competitors solve Real-Time Gym environments featuring snapshots from the real TrackMania 2020
video game, with no insider access, to test their self-racing policies.
Regardless of whether you want to participate, you will also find that the competition tutorial script is a must if you wish to design your own advanced training pipeline in TrackMania 😉
Note: The superhuman target on the tmrl-test.Map.Gbx
benchmark is currently about 32s, held by Gwen.
In the official tmrl
competition, participants solve tracks with the real-world-like Full
environment:
they only have access to real-time camera images (screenshots) along with usual car metrics (speed, gear, RPM).
- Track:
tmrl-test.Map.Gbx
(provided inC:\Users\YourUsername\TmrlData\resources
.) - Environment:
Full
environment, 20FPS (see rules for details.)
Winners | Team | Time - mean (std) | Description | Resources |
---|---|---|---|---|
🐉 1️⃣ | Baseline | ? (?) | SAC, CNN, Full environment, camera 1 (canada skin), grayscale, tmrl default |
code, weights |
🐎 2️⃣ | Baseline | 47.176 (0.769) | SAC, MLP, LIDAR environment, tmrl default |
code, weights, video |
🐆 3️⃣ | ||||
🐅 4️⃣ | ||||
🐈 5️⃣ | ||||
🐇 6️⃣ | ||||
🐪 7️⃣ | ||||
🐢 8️⃣ | ||||
🐌 9️⃣ | ||||
🌴 🔟 |
The Full
environment of the official tmrl
competition is designed for real-world car applicability.
TrackMania being a video game, it is nevertheless possible to directly access much more, potentially unrealistic low-level game information via, e.g., the OpenPlanet API, and even to pause the simulation for computations.
In this section, we feature results from participants who solved the tmrl-test.Map.Gbx
benchmark with their own custom environments.
These submissions are typically not as realistic in the context of real-world robotics, but they can target, e.g., the video game industry.
- Track:
tmrl-test.Map.Gbx
(provided inC:\Users\YourUsername\TmrlData\resources
.) - Environment: Custom environments
Winners | Team | Time - mean (std) | Description | Resources |
---|---|---|---|---|
🐉 1️⃣ | Laurens Neinders | 38.737 (0.398) | SAC, based on Sophy (discussion) | video, repo, paper, replays |
🐎 2️⃣ | ||||
🐆 3️⃣ | ||||
🐅 4️⃣ | ||||
🐈 5️⃣ | ||||
🐇 6️⃣ | ||||
🐪 7️⃣ | ||||
🐢 8️⃣ | ||||
🐌 9️⃣ | ||||
🌴 🔟 |
If you wish to participate in the "off" competition, please create a thread in the discussions section, describing your project. We choose whether to accept your entry based on reproducibility and novelty.
The tmrl
competition is an open research initiative, currently in its first iteration 🐣
In this iteration, competitors race on the tmrl-test
track (plain road) by solving the Full
version of the TrackMania 2020 Gymnasium environment (the LIDAR
version is also accepted).
- The
action space
is the default TrackMania 2020 continuous action space (3 floats between -1.0 and 1.0). - The
observation space
is a history of 4 raw snapshots along with the speed, gear, rpm and 2 previous actions. The choice of camera is up to you as long as you use one of the default. You are allowed to use colors if you wish (set the"IMG_GRAYSCALE"
entry tofalse
inconfig.json
). You may also customize the actual image dimensions ("IMG_WIDTH"
and"IMG_HEIGHT"
), and the game window dimensions ("WINDOW_WIDTH"
and"WINDOW_HEIGHT"
) if you need to. However, the window dimensions must remain between(256, 128)
and(958, 488)
(dimensions greater than(958, 488)
are not allowed). - The
control frequency
is 20 Hz.
An entry to the competition simply needs to be a working implementation of the ActorModule interface. How to implement this module is entirely up to you, it does not have to be a neural network, nor to be trained though RL.
Nevertheless, we encourage deep RL approaches, and provide a fast-track tutorial in this direction for your convenience.
📢 Hardware constraint: your ActorModule
needs to be lightweight enough to run at 20Hz on a Windows 11 machine with i7-12700H
CPU and RTX3080-Ti (laptop)
GPU in parallel to TrackMania 2020
, as this is what we will be using to evaluate your submission.
For this first iteration of the competition, we take any submitted entry, at any time, and we evaluate it over 10 runs (see how to submit an entry in the next section).
If the mean time achieved by your policy on the tmrl_test
track over those 10 runs is amongst the current 10 best entries, your entry will appear in the leaderboard.
📢 CAUTION: if the car crashes (i.e., the episode auto-resets due to failure of moving forward), we don't count the episode but we add a penalty of 10 seconds to the next episode. After 3 crashes the submission is eliminated.
In this iteration, your score is evaluated on the tmrl-test.Map.Gbx
track, provided in C:\Users\YourUsername\TmrlData\resources
.
(In the future, we may host 1-month sessions on one of the "tracks of the month" if we find enough participants 😉 Note that this is a Beta and we don't want you to feel restricted. If you wish to get creative and solve a problem that doesn't fit in the current rules, you are encouraged to do so. Use the discussions section to propose your project.)
We evaluate your submission using our evaluation script.
The "SLEEP_TIME_AT_RESET"
entry in config.json
(C:\Users\YourUsername\TmrlData\config
) is set to 0.0 to avoid wasting time at the beginning of the episode (but we recommend leaving this to the default 1.5 for training).
The competition tutorial script will help you quickly set up a custom RL training pipeline for the Full
TrackMania Gymnasium environment.
An entry to the competition comprises:
- a python script providing a working implementation of the ActorModule interface,
- the
config.json
file you used for the environment config (please remove all personal information), - optional human-readable data files (typically a
json
file). - a name for your team, and all the supporting information you wish to provide (description, video, repo...)
Please create a dedicated discussion in the discussions section to submit your entry, and attach your files to the first post.
json
files.
In practice, this means you probably need to code your own deserializer as part of your ActorModule.load
implementation.
See the competition tutorial script for an example of how to do so with PyTorch.
Questions and suggestions to improve the competition are welcome! Feel free to use the discussions section for this purpose.
We are looking for volunteers to help us "officialize" and popularize the tmrl
competition, find sponsors for prizes, and make this into an ML/robotics conference competition.
Please reach us if interested!