comparison python/prediction.py @ 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 124f85c6cfae
children 72aa44072093
comparison
equal deleted inserted replaced
349:e3f910c26fae 350:7e9ad2d9d79c
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): 83 def __init__(self, maxSpeed, nPredictedTrajectories, maxAcceleration, maxSteering):#, useFeatures = False
84 PredictionParameters.__init__(self, 'normal adaptation', maxSpeed) 84 PredictionParameters.__init__(self, 'normal adaptation', maxSpeed)
85 self.nPredictedTrajectories = nPredictedTrajectories 85 self.nPredictedTrajectories = nPredictedTrajectories
86 self.maxAcceleration = maxAcceleration 86 self.maxAcceleration = maxAcceleration
87 self.maxSteering = maxSteering 87 self.maxSteering = maxSteering
88 self.accelerationDistribution = lambda: random.triangular(-self.maxAcceleration, 88 self.accelerationDistribution = lambda: random.triangular(-self.maxAcceleration,
105 maxSpeed = self.maxSpeed)) 105 maxSpeed = self.maxSpeed))
106 return predictedTrajectories 106 return predictedTrajectories
107 107
108 class PointSetPredictionParameters(PredictionParameters): 108 class PointSetPredictionParameters(PredictionParameters):
109 # todo generate several trajectories with normal adaptatoins from each position (feature) 109 # todo generate several trajectories with normal adaptatoins from each position (feature)
110 def __init__(self, maxSpeed): 110 def __init__(self, nPredictedTrajectories, maxSpeed):
111 PredictionParameters.__init__(self, 'point set', maxSpeed) 111 PredictionParameters.__init__(self, 'point set', maxSpeed)
112 self.nPredictedTrajectories = nPredictedTrajectories
112 113
113 def generatePredictedTrajectories(self, obj, instant): 114 def generatePredictedTrajectories(self, obj, instant):
114 predictedTrajectories = [] 115 predictedTrajectories = []
115 features = [f for f in obj.features if f.existsAtInstant(instant)] 116 features = [f for f in obj.features if f.existsAtInstant(instant)]
116 positions = [f.getPositionAtInstant(instant) for f in features] 117 positions = [f.getPositionAtInstant(instant) for f in features]
117 velocities = [f.getVelocityAtInstant(instant) for f in features] 118 velocities = [f.getVelocityAtInstant(instant) for f in features]
118 for initialPosition,initialVelocity in zip(positions, velocities): 119 for i in xrange(self.nPredictedTrajectories):
119 predictedTrajectories.append(PredictedTrajectoryConstant(initialPosition, initialVelocity, 120 for initialPosition,initialVelocity in zip(positions, velocities):
120 maxSpeed = self.maxSpeed)) 121 predictedTrajectories.append(PredictedTrajectoryConstant(initialPosition, initialVelocity,
122 maxSpeed = self.maxSpeed))
121 return predictedTrajectories 123 return predictedTrajectories
122 124
123 class EvasiveActionPredictionParameters(PredictionParameters): 125 class EvasiveActionPredictionParameters(PredictionParameters):
124 def __init__(self, maxSpeed, nPredictedTrajectories, minAcceleration, maxAcceleration, maxSteering, useFeatures = False): 126 def __init__(self, maxSpeed, nPredictedTrajectories, minAcceleration, maxAcceleration, maxSteering, useFeatures = False):
125 if useFeatures: 127 if useFeatures:
150 positions = [obj.getPositionAtInstant(instant)] 152 positions = [obj.getPositionAtInstant(instant)]
151 velocities = [obj.getVelocityAtInstant(instant)] 153 velocities = [obj.getVelocityAtInstant(instant)]
152 for i in xrange(self.nPredictedTrajectories): 154 for i in xrange(self.nPredictedTrajectories):
153 for initialPosition,initialVelocity in zip(positions, velocities): 155 for initialPosition,initialVelocity in zip(positions, velocities):
154 predictedTrajectories.append(PredictedTrajectoryConstant(initialPosition, 156 predictedTrajectories.append(PredictedTrajectoryConstant(initialPosition,
155 initialVelocity, 157 initialVelocity,
156 moving.NormAngle(self.accelerationDistribution(), 158 moving.NormAngle(self.accelerationDistribution(),
157 self.steeringDistribution()), 159 self.steeringDistribution()),
158 maxSpeed = self.maxSpeed)) 160 maxSpeed = self.maxSpeed))
159 return predictedTrajectories 161 return predictedTrajectories
160 162
161 class SafetyPoint(moving.Point): 163 class SafetyPoint(moving.Point):
162 '''Can represent a collision point or crossing zone 164 '''Can represent a collision point or crossing zone
163 with respective safety indicator, TTC or pPET''' 165 with respective safety indicator, TTC or pPET'''