# InteractionImitation Imitation Learning with the INTERACTION Dataset ## Getting started Clone InteractionSimulator and pip install the module. ``` git clone https://github.com/sisl/InteractionSimulator.git cd InteractionSimulator pip install -e . cd .. export PYTHONPATH=$(pwd):$PYTHONPATH ``` Install additional requirements ``` pip install -r requirements.txt ``` Copy INTERACTION Dataset files: The INTERACTION dataset contains a two folders which should be copied into a folder called `./InteractionSimulator/datasets`: - the contents of `recorded_trackfiles` should be copied to `./InteractionSimulator/datasets/trackfiles` - the contents of `maps` should be copied to `./InteractionSimulator/datasets/maps` ## Processing, saving, and loading expert demos Once the repository has been set up, you can process and save expert track demonstrations with: ``` python src/expert_data.py --loc [LOCNUM] --track [TRACKNUM] ``` You can then load the experts actions and observations using ``` from src import expert_data observations, actions = expert_data.load_expert_data(loc = [LOCNUM], track = [TRACKNUM]) for (s, a) in zip (observations, actions): # do some imitation learning ``` ## Package Structure ``` InteractionImitation |- demos |- algorithms |- BC |- AdVIL |- nets |- Encoder |- DeepSet |- Decoder |- policies |- discriminators |- demo_generators ``` ## Type Definitions ``` Demo: List[Trajectory] Trajectory: List[Tuple[Observation, Action]] # single expert Observation: Dict[ 'own_state': [x, y, v, psi, psidot], 'relative_states': List[[xr, yr, vr, psir, psidotr]], 'own_path': List[[xr, yr]], # fixed length, constant dt 'map': Map, # relative ] Action: Range[0, 1] Policy: Union[ Callable[[Observation], Action], Callable[[Observation, Action], probability], ] Discriminator: Callable[[Observation, Action], value] Map: Dictionary[...] ```