Mercurial Hosting > traffic-intelligence
comparison python/prediction.py @ 352:72aa44072093
safety analysis script with option for prediction method
author | Nicolas Saunier <nicolas.saunier@polymtl.ca> |
---|---|
date | Thu, 27 Jun 2013 01:35:47 -0400 |
parents | 7e9ad2d9d79c |
children | 41e31d8c4383 |
comparison
equal
deleted
inserted
replaced
351:891858351bcb | 352:72aa44072093 |
---|---|
78 def generatePredictedTrajectories(self, obj, instant): | 78 def generatePredictedTrajectories(self, obj, instant): |
79 return [PredictedTrajectoryConstant(obj.getPositionAtInstant(instant), obj.getVelocityAtInstant(instant), | 79 return [PredictedTrajectoryConstant(obj.getPositionAtInstant(instant), obj.getVelocityAtInstant(instant), |
80 maxSpeed = self.maxSpeed)] | 80 maxSpeed = self.maxSpeed)] |
81 | 81 |
82 class NormalAdaptationPredictionParameters(PredictionParameters): | 82 class NormalAdaptationPredictionParameters(PredictionParameters): |
83 def __init__(self, maxSpeed, nPredictedTrajectories, maxAcceleration, maxSteering):#, useFeatures = False | 83 def __init__(self, maxSpeed, nPredictedTrajectories, maxAcceleration, maxSteering, useFeatures = False): |
84 PredictionParameters.__init__(self, 'normal adaptation', maxSpeed) | 84 if useFeatures: |
85 name = 'point set normal adaptation' | |
86 else: | |
87 name = 'normal adaptation' | |
88 PredictionParameters.__init__(self, name, maxSpeed) | |
85 self.nPredictedTrajectories = nPredictedTrajectories | 89 self.nPredictedTrajectories = nPredictedTrajectories |
86 self.maxAcceleration = maxAcceleration | 90 self.maxAcceleration = maxAcceleration |
87 self.maxSteering = maxSteering | 91 self.maxSteering = maxSteering |
92 self.useFeatures = useFeatures | |
88 self.accelerationDistribution = lambda: random.triangular(-self.maxAcceleration, | 93 self.accelerationDistribution = lambda: random.triangular(-self.maxAcceleration, |
89 self.maxAcceleration, 0.) | 94 self.maxAcceleration, 0.) |
90 self.steeringDistribution = lambda: random.triangular(-self.maxSteering, | 95 self.steeringDistribution = lambda: random.triangular(-self.maxSteering, |
91 self.maxSteering, 0.) | 96 self.maxSteering, 0.) |
92 | 97 |
93 def __str__(self): | 98 def __str__(self): |
94 return PredictionParameters.__str__(self)+' {0} {1} {2}'.format(self.nPredictedTrajectories, | 99 return PredictionParameters.__str__(self)+' {0} {1} {2}'.format(self.nPredictedTrajectories, |
95 self.maxAcceleration, | 100 self.maxAcceleration, |
96 self.maxSteering) | 101 self.maxSteering) |
97 | 102 |
98 def generatePredictedTrajectories(self, obj, instant): | 103 def generatePredictedTrajectories(self, obj, instant): |
99 predictedTrajectories = [] | 104 predictedTrajectories = [] |
105 if self.useFeatures: | |
106 features = [f for f in obj.features if f.existsAtInstant(instant)] | |
107 positions = [f.getPositionAtInstant(instant) for f in features] | |
108 velocities = [f.getVelocityAtInstant(instant) for f in features] | |
109 else: | |
110 positions = [obj.getPositionAtInstant(instant)] | |
111 velocities = [obj.getVelocityAtInstant(instant)] | |
100 for i in xrange(self.nPredictedTrajectories): | 112 for i in xrange(self.nPredictedTrajectories): |
101 predictedTrajectories.append(PredictedTrajectoryNormalAdaptation(obj.getPositionAtInstant(instant), | 113 for initialPosition,initialVelocity in zip(positions, velocities): |
102 obj.getVelocityAtInstant(instant), | 114 predictedTrajectories.append(PredictedTrajectoryNormalAdaptation(initialPosition, |
103 self.accelerationDistribution, | 115 initialVelocity, |
104 self.steeringDistribution, | 116 self.accelerationDistribution, |
105 maxSpeed = self.maxSpeed)) | 117 self.steeringDistribution, |
118 maxSpeed = self.maxSpeed)) | |
106 return predictedTrajectories | 119 return predictedTrajectories |
107 | 120 |
108 class PointSetPredictionParameters(PredictionParameters): | 121 class PointSetPredictionParameters(PredictionParameters): |
109 # todo generate several trajectories with normal adaptatoins from each position (feature) | 122 # todo generate several trajectories with normal adaptatoins from each position (feature) |
110 def __init__(self, nPredictedTrajectories, maxSpeed): | 123 def __init__(self, nPredictedTrajectories, maxSpeed): |