Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
Autodrome is a framework and OpenAI gym environment for development of self-driving vehicles. It's built around the engine, map editor and assets of Euro Truck Simulator 2 (ETS2) or American Truck Simulator (ATS).
To simply jump into a truck and drive, run can run Autodrome interactively. Paste the following command into your console. Use
D to accelerate, brake and steer.
> python -m autodrome ATS --map indy500 # Or ETS2
You can think of Autodrome as a bridge between the ETS2/ATS game and reinforcement learning. It's possible to start the game, capture screen, and programmatically control the truck in an episodic setup with a custom reward function. The episode restarts when the truck crashes.
Key components of the project's architecture are shown on the following diagram. More details about the design choices and the overall concept can be found on the Architecture page.
Autodrome can be used not only for reinforcement learning but also for many other purposes. The API also allows easy access to the truck telemetry data like position or orientation in the game world, speed, brake, throttle and steering wheel angle and so on. All the static objects in the world map are exposed as well so one can for instance use the departure from the lane center as a penalty function. The general goal is to provide flexible tools for evaluating, experimenting with and improving algorithms that can eventually drive vehicles in the real world.
One example use case is to take advantage of the game telemetry plugin to collect data in the form of screenshots and corresponding steering wheel angles from human players. This can be used for instance to train a simple end-to-end behavioral cloning agent that mimics the action human would take.
Thanks to the built-in map editor that ships with the game one can quickly construct a set of CI unit test scenarios for agents to ensure reliability and robustness throughout the development process. A typical example of this would be a lane change scenario with surrounding vehicles and scenery or a highway exit.
This project is experimental and comes with a decent amount of "quirks". Large portion of the functionality is still work in progress and may require some fixes in order to work.