comparison python/prediction.py @ 661:dc70d9e711f5

some method name change and new methods for features in objects (MovingObject) and methods to access indicator values in interactions
author Nicolas Saunier <nicolas.saunier@polymtl.ca>
date Mon, 18 May 2015 13:53:25 +0200
parents 335f6641bf7a
children 72174e66aba5
comparison
equal deleted inserted replaced
660:994dd644f6ab 661:dc70d9e711f5
408 self.maxAcceleration, 408 self.maxAcceleration,
409 self.maxSteering) 409 self.maxSteering)
410 410
411 def generatePredictedTrajectories(self, obj, instant): 411 def generatePredictedTrajectories(self, obj, instant):
412 predictedTrajectories = [] 412 predictedTrajectories = []
413 if self.useFeatures: 413 if self.useFeatures and obj.hadFeatures():
414 features = [f for f in obj.features if f.existsAtInstant(instant)] 414 features = [f for f in obj.getFeatures() if f.existsAtInstant(instant)]
415 positions = [f.getPositionAtInstant(instant) for f in features] 415 positions = [f.getPositionAtInstant(instant) for f in features]
416 velocities = [f.getVelocityAtInstant(instant) for f in features] 416 velocities = [f.getVelocityAtInstant(instant) for f in features]
417 else: 417 else:
418 positions = [obj.getPositionAtInstant(instant)] 418 positions = [obj.getPositionAtInstant(instant)]
419 velocities = [obj.getVelocityAtInstant(instant)] 419 velocities = [obj.getVelocityAtInstant(instant)]
431 def __init__(self, maxSpeed): 431 def __init__(self, maxSpeed):
432 PredictionParameters.__init__(self, 'point set', maxSpeed) 432 PredictionParameters.__init__(self, 'point set', maxSpeed)
433 #self.nPredictedTrajectories = nPredictedTrajectories 433 #self.nPredictedTrajectories = nPredictedTrajectories
434 434
435 def generatePredictedTrajectories(self, obj, instant): 435 def generatePredictedTrajectories(self, obj, instant):
436 predictedTrajectories = [] 436 predictedTrajectories = []
437 features = [f for f in obj.features if f.existsAtInstant(instant)] 437 if obj.hasFeatures():
438 positions = [f.getPositionAtInstant(instant) for f in features] 438 features = [f for f in obj.getFeatures() if f.existsAtInstant(instant)]
439 velocities = [f.getVelocityAtInstant(instant) for f in features] 439 positions = [f.getPositionAtInstant(instant) for f in features]
440 #for i in xrange(self.nPredictedTrajectories): 440 velocities = [f.getVelocityAtInstant(instant) for f in features]
441 for initialPosition,initialVelocity in zip(positions, velocities): 441 #for i in xrange(self.nPredictedTrajectories):
442 predictedTrajectories.append(PredictedTrajectoryConstant(initialPosition, initialVelocity, 442 for initialPosition,initialVelocity in zip(positions, velocities):
443 maxSpeed = self.maxSpeed)) 443 predictedTrajectories.append(PredictedTrajectoryConstant(initialPosition, initialVelocity,
444 return predictedTrajectories 444 maxSpeed = self.maxSpeed))
445 return predictedTrajectories
446 else:
447 print('Object {} has no features'.format(obj.getNum()))
448 return None
445 449
446 class EvasiveActionPredictionParameters(PredictionParameters): 450 class EvasiveActionPredictionParameters(PredictionParameters):
447 def __init__(self, maxSpeed, nPredictedTrajectories, accelerationDistribution, steeringDistribution, useFeatures = False): 451 def __init__(self, maxSpeed, nPredictedTrajectories, accelerationDistribution, steeringDistribution, useFeatures = False):
448 '''Suggested acceleration distribution may not be symmetric, eg 452 '''Suggested acceleration distribution may not be symmetric, eg
449 lambda: random.triangular(self.minAcceleration, self.maxAcceleration, 0.)''' 453 lambda: random.triangular(self.minAcceleration, self.maxAcceleration, 0.)'''
461 def __str__(self): 465 def __str__(self):
462 return PredictionParameters.__str__(self)+' {0} {1} {2} {3}'.format(self.nPredictedTrajectories, self.minAcceleration, self.maxAcceleration, self.maxSteering) 466 return PredictionParameters.__str__(self)+' {0} {1} {2} {3}'.format(self.nPredictedTrajectories, self.minAcceleration, self.maxAcceleration, self.maxSteering)
463 467
464 def generatePredictedTrajectories(self, obj, instant): 468 def generatePredictedTrajectories(self, obj, instant):
465 predictedTrajectories = [] 469 predictedTrajectories = []
466 if self.useFeatures: 470 if self.useFeatures and obj.hasFeatures():
467 features = [f for f in obj.features if f.existsAtInstant(instant)] 471 features = [f for f in obj.getFeatures() if f.existsAtInstant(instant)]
468 positions = [f.getPositionAtInstant(instant) for f in features] 472 positions = [f.getPositionAtInstant(instant) for f in features]
469 velocities = [f.getVelocityAtInstant(instant) for f in features] 473 velocities = [f.getVelocityAtInstant(instant) for f in features]
470 else: 474 else:
471 positions = [obj.getPositionAtInstant(instant)] 475 positions = [obj.getPositionAtInstant(instant)]
472 velocities = [obj.getVelocityAtInstant(instant)] 476 velocities = [obj.getVelocityAtInstant(instant)]