Mercurial Hosting > traffic-intelligence
changeset 350:7e9ad2d9d79c
added new parameters in safety analysis script
author | Nicolas Saunier <nicolas.saunier@polymtl.ca> |
---|---|
date | Thu, 27 Jun 2013 00:18:39 -0400 |
parents | e3f910c26fae |
children | 891858351bcb |
files | python/prediction.py python/utils.py scripts/safety-analysis.py |
diffstat | 3 files changed, 39 insertions(+), 30 deletions(-) [+] |
line wrap: on
line diff
--- a/python/prediction.py Thu Jun 27 00:07:44 2013 -0400 +++ b/python/prediction.py Thu Jun 27 00:18:39 2013 -0400 @@ -80,7 +80,7 @@ maxSpeed = self.maxSpeed)] class NormalAdaptationPredictionParameters(PredictionParameters): - def __init__(self, maxSpeed, nPredictedTrajectories, maxAcceleration, maxSteering): + def __init__(self, maxSpeed, nPredictedTrajectories, maxAcceleration, maxSteering):#, useFeatures = False PredictionParameters.__init__(self, 'normal adaptation', maxSpeed) self.nPredictedTrajectories = nPredictedTrajectories self.maxAcceleration = maxAcceleration @@ -107,17 +107,19 @@ class PointSetPredictionParameters(PredictionParameters): # todo generate several trajectories with normal adaptatoins from each position (feature) - def __init__(self, maxSpeed): + def __init__(self, nPredictedTrajectories, maxSpeed): PredictionParameters.__init__(self, 'point set', maxSpeed) + self.nPredictedTrajectories = nPredictedTrajectories def generatePredictedTrajectories(self, obj, instant): predictedTrajectories = [] features = [f for f in obj.features if f.existsAtInstant(instant)] positions = [f.getPositionAtInstant(instant) for f in features] velocities = [f.getVelocityAtInstant(instant) for f in features] - for initialPosition,initialVelocity in zip(positions, velocities): - predictedTrajectories.append(PredictedTrajectoryConstant(initialPosition, initialVelocity, - maxSpeed = self.maxSpeed)) + for i in xrange(self.nPredictedTrajectories): + for initialPosition,initialVelocity in zip(positions, velocities): + predictedTrajectories.append(PredictedTrajectoryConstant(initialPosition, initialVelocity, + maxSpeed = self.maxSpeed)) return predictedTrajectories class EvasiveActionPredictionParameters(PredictionParameters): @@ -152,10 +154,10 @@ for i in xrange(self.nPredictedTrajectories): for initialPosition,initialVelocity in zip(positions, velocities): predictedTrajectories.append(PredictedTrajectoryConstant(initialPosition, - initialVelocity, - moving.NormAngle(self.accelerationDistribution(), - self.steeringDistribution()), - maxSpeed = self.maxSpeed)) + initialVelocity, + moving.NormAngle(self.accelerationDistribution(), + self.steeringDistribution()), + maxSpeed = self.maxSpeed)) return predictedTrajectories class SafetyPoint(moving.Point):
--- a/python/utils.py Thu Jun 27 00:07:44 2013 -0400 +++ b/python/utils.py Thu Jun 27 00:18:39 2013 -0400 @@ -452,6 +452,15 @@ self.firstFrameNum = config.getint(self.sectionHeader, 'frame1') self.videoFrameRate = config.getfloat(self.sectionHeader, 'video-fps') + self.maxPredictedSpeed = config.getfloat(self.sectionHeader, 'max-predicted-speed')/3.6/self.videoFrameRate + self.predictionTimeHorizon = config.getfloat(self.sectionHeader, 'prediction-time-horizon')*self.videoFrameRate + self.collisionDistance = config.getfloat(self.sectionHeader, 'collision-distance') + self.crossingZones = config.getboolean(self.sectionHeader, 'crossing-zones') + 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 + ######################### # sqlite #########################
--- a/scripts/safety-analysis.py Thu Jun 27 00:07:44 2013 -0400 +++ b/scripts/safety-analysis.py Thu Jun 27 00:18:39 2013 -0400 @@ -8,7 +8,7 @@ import numpy as np parser = argparse.ArgumentParser(description='The program processes indicators for all pairs of road users in the scene') -parser.add_argument('configFilename', help = 'name of the configuration file') +parser.add_argument('--cfg', dest = 'configFilename', help = 'name of the configuration file') #parser.add_argument('--maxspeed', dest = 'maxSpeed', help = 'maximum speed when predicting future motion (km/h)', default = 50, type = int) #parser.add_argument('--time-horizon', dest = 'maxSpeed', help = 'maximum speed when predicting future motion (km/h)', default = 50, type = int) args = parser.parse_args() @@ -19,30 +19,28 @@ params = utils.TrackingParameters() params.loadConfigFile(args.configFilename) -# configuration parameters # TODO from command line -maxSpeed = args.maxSpeed/3.6/params.videoFrameRate # speed limit 50 km/h for urban envt, 90km/hr = 25 m/sec for highways -timeHorizon= params.videoFrameRate*5 # prediction time Horizon = 1.5 s (reaction time) (5 second) -collisionDistanceThreshold= 1.8 # m -computeCZ = False +# parameters for prediction methods +constantVelocityPredictionParameters = prediction.ConstantPredictionParameters(params.maxPredictedSpeed) -# display = False +normalAdaptationPredictionParameters = prediction.NormalAdaptationPredictionParameters(params.maxPredictedSpeed, + params.nPredictedTrajectories, + params.maxAcceleration, + params.maxSteering) -# parameters for prediction methods -constantVelocityPredictionParameters = prediction.ConstantPredictionParameters(maxSpeed) - -normalAdaptationPredictionParameters = prediction.NormalAdaptationPredictionParameters(maxSpeed, 100, 2./frameRate**2, # m/s2 - 0.2/frameRate) # rad/s +featurePredictionParameters = prediction.PointSetPredictionParameters(params.maxPredictedSpeed, params.nPredictedTrajectories) -featurePredictionParameters = prediction.PointSetPredictionParameters(maxSpeed) - -evasiveActionPredictionParameters = prediction.EvasiveActionPredictionParameters(maxSpeed, 100, -9.1/frameRate**2, # m/s2 - 4.3/frameRate**2, # m/s2 - 0.5/frameRate, # rad/s +evasiveActionPredictionParameters = prediction.EvasiveActionPredictionParameters(params.maxPredictedSpeed, + params.nPredictedTrajectories, + params.minAcceleration, + params.maxAcceleration, + params.maxSteering, False) -featureEvasiveActionPredictionParameters = prediction.EvasiveActionPredictionParameters(maxSpeed, 10, -9.1/frameRate**2, # m/s2 - 4.3/frameRate**2, # m/s2 - 0.5/frameRate, # rad/s +featureEvasiveActionPredictionParameters = prediction.EvasiveActionPredictionParameters(params.maxPredictedSpeed, + params.nPredictedTrajectories, + params.minAcceleration, + params.maxAcceleration, + params.maxSteering, True) @@ -53,7 +51,7 @@ interactions = events.createInteractions(objects) for inter in interactions: inter.computeIndicators() - inter.computeCrossingsCollisions(constantVelocityPredictionParameters, collisionDistanceThreshold, timeHorizon, computeCZ) + inter.computeCrossingsCollisions(constantVelocityPredictionParameters, params.collisionDistance, params.predictionTimeHorizon, params.crossingZones) storage.saveIndicators(params.databaseFilename, interactions)