Mercurial Hosting > traffic-intelligence
diff scripts/safety-analysis.py @ 483:30b3455978d9
Corrected issues with safety-analysis script, variable names are changed and tracking.cfg accordingly
author | Nicolas Saunier <nicolas.saunier@polymtl.ca> |
---|---|
date | Wed, 02 Apr 2014 17:25:50 -0400 |
parents | f6415f012640 |
children | a5847c0ca27c |
line wrap: on
line diff
--- a/scripts/safety-analysis.py Wed Apr 02 16:12:24 2014 -0400 +++ b/scripts/safety-analysis.py Wed Apr 02 17:25:50 2014 -0400 @@ -2,7 +2,7 @@ import utils, storage, prediction, events, moving -import sys, argparse +import sys, argparse, random import matplotlib.pyplot as plt import numpy as np @@ -11,7 +11,7 @@ # add computation of probality of unsucessful evasive action parser = argparse.ArgumentParser(description='The program processes indicators for all pairs of road users in the scene') -parser.add_argument('--cfg', dest = 'configFilename', help = 'name of the configuration file') +parser.add_argument('--cfg', dest = 'configFilename', help = 'name of the configuration file', required = True) parser.add_argument('--prediction-method', dest = 'predictionMethod', help = 'prediction method (constant velocity (vector computation), constant velocity, normal adaptation, point set prediction)', choices = ['cvd', 'cv', 'na', 'ps']) parser.add_argument('--display-cp', dest = 'displayCollisionPoints', help = 'display collision points', action = 'store_true') args = parser.parse_args() @@ -25,28 +25,29 @@ else: predictionMethod = params.predictionMethod +accelerationDistribution = lambda: random.triangular(-params.maxNormalAcceleration, params.maxNormalAcceleration, 0.) +steeringDistribution = lambda: random.triangular(-params.maxNormalSteering, params.maxNormalSteering, 0.) + if predictionMethod == 'cvd': predictionParameters = prediction.CVDirectPredictionParameters() elif predictionMethod == 'cv': predictionParameters = prediction.ConstantPredictionParameters(params.maxPredictedSpeed) elif predictionMethod == 'na': - predictionParameters = prediction.NormalAdaptationPredictionParameters(params.maxPredictedSpeed, + predictionParameters = prediction.NormalAdaptationPredictionParameters(params.maxPredictedSpeed, params.nPredictedTrajectories, - params.maxAcceleration, - params.maxSteering, + accelerationDistribution, + steeringDistribution, params.useFeaturesForPrediction) elif predictionMethod == 'ps': predictionParameters = prediction.PointSetPredictionParameters(params.nPredictedTrajectories, params.maxPredictedSpeed) -else: - print('Prediction method {} is not valid. See help.'.format(predictionMethod)) - sys.exit() +# no else required, since parameters is required as argument # evasiveActionPredictionParameters = prediction.EvasiveActionPredictionParameters(params.maxPredictedSpeed, # params.nPredictedTrajectories, -# params.minAcceleration, -# params.maxAcceleration, -# params.maxSteering, +# params.minExtremeAcceleration, +# params.maxExtremeAcceleration, +# params.maxExtremeSteering, # params.useFeaturesForPrediction) objects = storage.loadTrajectoriesFromSqlite(params.databaseFilename,'object') @@ -58,7 +59,7 @@ interactions = events.createInteractions(objects) for inter in interactions: inter.computeIndicators() - inter.computeCrossingsCollisions(predictionParameters, params.collisionDistance, params.predictionTimeHorizon, params.crossingZones) + inter.computeCrossingsCollisions(predictionParameters, params.collisionDistance, params.predictionTimeHorizon*params.videoFrameRate, params.crossingZones) storage.saveIndicators(params.databaseFilename, interactions)