2022-02-26 13:50:53 +01:00
2022-02-21 22:21:13 +01:00
2022-02-26 13:50:53 +01:00
2021-07-02 13:41:17 +02:00

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 (and should) process all tracks at once at location 0 with:

python src/expert_data.py --all-tracks

You can then train a default behavior cloning policy with the following. Be sure to check help for main.py for running options.

python src/main.py --train

You can run tensorboard by running the following and opening localhost:6006 (or alternatively port-forwarding 6006 from the remote server)

tensorboard --logdir output/

You can then test the learned policy with the following, and see the animation file in output/:

python src/main.py --test

You can load the experts actions manually

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[...]
Description
No description provided
Readme MIT 76 MiB
Languages
Python 98.1%
Shell 1.9%