comparison python/prediction.py @ 460:55b424d98b68

change of interface, distributions are now passed to the prediction paramters constructors if needed
author Nicolas Saunier <nicolas.saunier@polymtl.ca>
date Sat, 22 Feb 2014 01:18:16 -0500
parents 91679eb2ff2c
children dcc821b98efc
comparison
equal deleted inserted replaced
459:2a4e9ef469e5 460:55b424d98b68
213 def generatePredictedTrajectories(self, obj, instant): 213 def generatePredictedTrajectories(self, obj, instant):
214 return [PredictedTrajectoryConstant(obj.getPositionAtInstant(instant), obj.getVelocityAtInstant(instant), 214 return [PredictedTrajectoryConstant(obj.getPositionAtInstant(instant), obj.getVelocityAtInstant(instant),
215 maxSpeed = self.maxSpeed)] 215 maxSpeed = self.maxSpeed)]
216 216
217 class NormalAdaptationPredictionParameters(PredictionParameters): 217 class NormalAdaptationPredictionParameters(PredictionParameters):
218 def __init__(self, maxSpeed, nPredictedTrajectories, maxAcceleration, maxSteering, useFeatures = False): 218 def __init__(self, maxSpeed, nPredictedTrajectories, accelerationDistribution, steeringDistribution, useFeatures = False):
219 '''An example of acceleration and steering distributions is
220 lambda: random.triangular(-self.maxAcceleration, self.maxAcceleration, 0.)
221 '''
219 if useFeatures: 222 if useFeatures:
220 name = 'point set normal adaptation' 223 name = 'point set normal adaptation'
221 else: 224 else:
222 name = 'normal adaptation' 225 name = 'normal adaptation'
223 PredictionParameters.__init__(self, name, maxSpeed) 226 PredictionParameters.__init__(self, name, maxSpeed)
224 self.nPredictedTrajectories = nPredictedTrajectories 227 self.nPredictedTrajectories = nPredictedTrajectories
225 self.maxAcceleration = maxAcceleration
226 self.maxSteering = maxSteering
227 self.useFeatures = useFeatures 228 self.useFeatures = useFeatures
228 self.accelerationDistribution = lambda: random.triangular(-self.maxAcceleration, 229 self.accelerationDistribution = accelerationDistribution
229 self.maxAcceleration, 0.) 230 self.steeringDistribution = steeringDistribution
230 self.steeringDistribution = lambda: random.triangular(-self.maxSteering,
231 self.maxSteering, 0.)
232 231
233 def __str__(self): 232 def __str__(self):
234 return PredictionParameters.__str__(self)+' {0} {1} {2}'.format(self.nPredictedTrajectories, 233 return PredictionParameters.__str__(self)+' {0} {1} {2}'.format(self.nPredictedTrajectories,
235 self.maxAcceleration, 234 self.maxAcceleration,
236 self.maxSteering) 235 self.maxSteering)
269 predictedTrajectories.append(PredictedTrajectoryConstant(initialPosition, initialVelocity, 268 predictedTrajectories.append(PredictedTrajectoryConstant(initialPosition, initialVelocity,
270 maxSpeed = self.maxSpeed)) 269 maxSpeed = self.maxSpeed))
271 return predictedTrajectories 270 return predictedTrajectories
272 271
273 class EvasiveActionPredictionParameters(PredictionParameters): 272 class EvasiveActionPredictionParameters(PredictionParameters):
274 def __init__(self, maxSpeed, nPredictedTrajectories, minAcceleration, maxAcceleration, maxSteering, useFeatures = False): 273 def __init__(self, maxSpeed, nPredictedTrajectories, accelerationDistribution, steeringDistribution, useFeatures = False):
274 '''Suggested acceleration distribution may not be symmetric, eg
275 lambda: random.triangular(self.minAcceleration, self.maxAcceleration, 0.)'''
276
275 if useFeatures: 277 if useFeatures:
276 name = 'point set evasive action' 278 name = 'point set evasive action'
277 else: 279 else:
278 name = 'evasive action' 280 name = 'evasive action'
279 PredictionParameters.__init__(self, name, maxSpeed) 281 PredictionParameters.__init__(self, name, maxSpeed)
280 self.nPredictedTrajectories = nPredictedTrajectories 282 self.nPredictedTrajectories = nPredictedTrajectories
281 self.minAcceleration = minAcceleration
282 self.maxAcceleration = maxAcceleration
283 self.maxSteering = maxSteering
284 self.useFeatures = useFeatures 283 self.useFeatures = useFeatures
285 self.accelerationDistribution = lambda: random.triangular(self.minAcceleration, 284 self.accelerationDistribution = accelerationDistribution
286 self.maxAcceleration, 0.) 285 self.steeringDistribution = steeringDistribution
287 self.steeringDistribution = lambda: random.triangular(-self.maxSteering,
288 self.maxSteering, 0.)
289 286
290 def __str__(self): 287 def __str__(self):
291 return PredictionParameters.__str__(self)+' {0} {1} {2} {3}'.format(self.nPredictedTrajectories, self.minAcceleration, self.maxAcceleration, self.maxSteering) 288 return PredictionParameters.__str__(self)+' {0} {1} {2} {3}'.format(self.nPredictedTrajectories, self.minAcceleration, self.maxAcceleration, self.maxSteering)
292 289
293 def generatePredictedTrajectories(self, obj, instant): 290 def generatePredictedTrajectories(self, obj, instant):