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)