This carmodel calibration tool was developed for my student thesis. The purpose is to calibrate the Extended Intelligent Driver Model (EIDM) from dron data. The private dataset contains drone footage of vehicles driving off at an intersection, similiar to this video. The calibration tool would first find a selection of vehicles in pairs, each one containing a leader and a follower. Using SUMO to simulate the EIDM behavior, an optimization algorithm finds the best set of parameters from the dataset's trajectory. The leader's trajectory is the input and the follower's trajectory is simulated. The basis if calibration is the deviation between the follower's simulated trajectory to the real follower's trajectory.
Use carmodel-calibration --help
for help. The help updates the information displayed for different actions, e.g. carmodel-calibration --action=calibration --help
will have different options.
usage: carmodel-calibration Data-Directory Output-Directory differential_evolution [-h] [--num-workers NUM_WORKERS] [--population-size POPULATION_SIZE] [--max-iter MAX_ITER] [--models MODELS]
[--param-keys PARAM_KEYS] [--force-selection] [--no-report]
optional arguments:
-h, --help show this help message and exit
--population-size POPULATION_SIZE
Size of the populationdoes not apply to direct.
--max-iter MAX_ITER Number of max iterations.
--models MODELS Models to train as comma separated list e.g. `eidm`.
--param-keys PARAM_KEYS
comma separated list of parameters e.g. `speedFactor,minGap,...`
--force-selection If the flag is passed, then the selection is forced to be recalculateld.
--no-report Will not create reports in the output directory.
Here's an example usage using differential evolution as calibration algorithm.
carmodel-calibration --action=calibrate "path/to/input/data" "path/to/output-data/directory" differential_evolution --population-size=200 --max-iter=100 --param-keys="speedFactor,minGap,accel,decel,startupDelay,tau,delta,tpreview,tPersDrive,tPersEstimate,treaction,ccoolness,jerkmax,epsilonacc,taccmax,Mflatness,Mbegin"
sumo --version
netgenerate
PATH
environment variable, this is platform specific.
python --version
returns 3.8.*
. If not, install anaconda and create a python 3.8.* environment or install python directly without anaconda (not recommended).
$ python --version
Python 3.8.16
pip install setuptools
git clone https://github.com/stepeos/pycarmodel_calibration.git
cd pycarmodel_calibration
python3 -m pip install --upgrade build
python3 -m build
pip install ./dist/carmodel_calibration-0.1-py3-none-any.whl
carmodel-calibration --help
shows the helpFor educational purposes, InD dataset can be acquired for free from levelxdata.com/ind-dataset/. This dataset does not contain any intersection with traffic lights, however with the right configuration file, some calibration targets can still be found.
/my/dataset/path/inD-dataset-v1.0/
mkdir -p /my/dataset/path/inD-dataset-v1.0/results
wget -O /my/dataset/path/inD-dataset-v1.0/data/data_config.json https://github.com/stepeos/pycarmodel_calibration/main/ind_config.json
carmodel-calibration --action=calibrate /my/dataset/path/inD-dataset-v1.0/data/ /my/dataset/path/inD-dataset-v1.0/results/ differential_evolution --population-size=200 --max-iter=100 --param-keys=speedFactor,minGap,accel,decel,startupDelay,tau,delta,tpreview,tPersDrive,tPersEstimate,treaction,ccoolness,jerkmax,epsilonacc,taccmax,Mflatness,Mbegin
(if the path contains spaces, one can use quotes like "/my-path/with whitespaces/inD-dataset-v1.0")