Architecture
Package structure
gymkhana/ Main package (Gymnasium RL environment)
├── envs/
│ ├── gymkhana_env.py GKEnv — main environment class
│ ├── base_classes.py RaceCar, Simulator core classes
│ ├── observation.py Observation factory (rl, drift types)
│ ├── action.py Action types and normalization
│ ├── laser_models.py LiDAR ray-casting simulation
│ ├── collision_models.py Collision detection (TTC, Frenet)
│ ├── dynamic_models/ Vehicle dynamics models
│ ├── track/ Track loading, Frenet conversion
│ ├── reset/ Reset strategies for RL training
│ └── rendering/ Pygame/PyQt visualization
examples/ Reference implementations (Pure Pursuit, etc.)
train/ RL training scripts and configuration
├── config/ env_config.py, rl_config.yaml, gym_config.yaml
├── ppo_race.py Racing training script
├── ppo_recover.py Recovery training script
├── train_common.py Shared training workflow
└── train_utils.py Shared utilities
tests/ Test suite including model validation
maps/ Racing track definitions (git submodule)
Important files
gymkhana/envs/base_classes.py:503defines thestepmethodSee Action System for action space details
gymkhana/envs/dynamic_models/single_track_drift.py— STD model with PAC2002 tire model, recommended for drift RL traininggymkhana/envs/dynamic_models/single_track.py— basic single-track dynamics without explicit tire modelgymkhana/envs/dynamic_models/multi_body.py— most detailed model, but parameters only available for full-scale vehicles
Key dependencies
gymnasium — RL environment interface
stable-baselines3 — PPO and other RL algorithms
wandb — experiment tracking and model logging
numba — JIT compilation for real-time physics
pygame / PyQt6 — real-time visualization
numpy / scipy — control and estimation math