Mercurial Hosting > traffic-intelligence
changeset 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 | 6464e4f0cc26 |
files | python/utils.py scripts/safety-analysis.py tracking.cfg |
diffstat | 3 files changed, 31 insertions(+), 21 deletions(-) [+] |
line wrap: on
line diff
--- a/python/utils.py Wed Apr 02 16:12:24 2014 -0400 +++ b/python/utils.py Wed Apr 02 17:25:50 2014 -0400 @@ -593,6 +593,9 @@ ######################### class TrackingParameters: + '''Class for tracking and safety parameters + + Note: framerate is already taken into account''' def loadConfigFile(self, filename): from ConfigParser import ConfigParser from numpy import loadtxt @@ -617,9 +620,11 @@ self.crossingZones = config.getboolean(self.sectionHeader, 'crossing-zones') self.predictionMethod = config.get(self.sectionHeader, 'prediction-method') self.nPredictedTrajectories = config.getint(self.sectionHeader, 'npredicted-trajectories') - self.minAcceleration = config.getfloat(self.sectionHeader, 'min-acceleration')/self.videoFrameRate**2 - self.maxAcceleration = config.getfloat(self.sectionHeader, 'max-acceleration')/self.videoFrameRate**2 - self.maxSteering = config.getfloat(self.sectionHeader, 'max-steering')/self.videoFrameRate + self.maxNormalAcceleration = config.getfloat(self.sectionHeader, 'max-normal-acceleration')/self.videoFrameRate**2 + self.maxNormalSteering = config.getfloat(self.sectionHeader, 'max-normal-steering')/self.videoFrameRate + self.minExtremeAcceleration = config.getfloat(self.sectionHeader, 'min-extreme-acceleration')/self.videoFrameRate**2 + self.maxExtremeAcceleration = config.getfloat(self.sectionHeader, 'max-extreme-acceleration')/self.videoFrameRate**2 + self.maxExtremeSteering = config.getfloat(self.sectionHeader, 'max-extreme-steering')/self.videoFrameRate self.useFeaturesForPrediction = config.getboolean(self.sectionHeader, 'use-features-prediction') class SceneParameters:
--- 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)
--- a/tracking.cfg Wed Apr 02 16:12:24 2014 -0400 +++ b/tracking.cfg Wed Apr 02 17:25:50 2014 -0400 @@ -77,11 +77,15 @@ prediction-method = na # number of predicted trajectories (use depends on prediction method) npredicted-trajectories = 10 -# minimum acceleration for input distribution (m/s2) (used only for evasive action distributions) -min-acceleration = -9.1 -# maximum acceleration for input distribution (m/s2) -max-acceleration = 2 -# maximum steering for input distribution (rad/s) -max-steering = 0.5 +# maximum acceleration for normal adaptation input symmetric distribution (m/s2) +max-normal-acceleration = 2 +# maximum steering for normal adaptation input symmetric distribution (rad/s) +max-normal-steering = 0.2 +# minimum acceleration for input distribution (m/s2) (extreme values used for evasive action distributions) +min-extreme-acceleration = -9.1 +# maximum acceleration for input distribution (m/s2) (extreme values used for evasive action distributions) +max-extreme-acceleration = 4.3 +# maximum steering for input distribution (rad/s) (extreme values used for evasive action distributions) +max-extreme-steering = 0.5 # use feature positions and velocities for prediction use-features-prediction = true