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):