comparison python/prediction.py @ 826:8b74a5176549

explicitly computed the probabilities for predicted trajectories
author Nicolas Saunier <nicolas.saunier@polymtl.ca>
date Mon, 27 Jun 2016 23:27:05 -0400
parents 4cc56ff82c3c
children 07c5eab11eba
comparison
equal deleted inserted replaced
824:28526917a583 826:8b74a5176549
389 class ConstantPredictionParameters(PredictionParameters): 389 class ConstantPredictionParameters(PredictionParameters):
390 def __init__(self, maxSpeed): 390 def __init__(self, maxSpeed):
391 PredictionParameters.__init__(self, 'constant velocity', maxSpeed) 391 PredictionParameters.__init__(self, 'constant velocity', maxSpeed)
392 392
393 def generatePredictedTrajectories(self, obj, instant): 393 def generatePredictedTrajectories(self, obj, instant):
394 return [PredictedTrajectoryConstant(obj.getPositionAtInstant(instant), obj.getVelocityAtInstant(instant), 394 return [PredictedTrajectoryConstant(obj.getPositionAtInstant(instant), obj.getVelocityAtInstant(instant), maxSpeed = self.maxSpeed)]
395 maxSpeed = self.maxSpeed)]
396 395
397 class NormalAdaptationPredictionParameters(PredictionParameters): 396 class NormalAdaptationPredictionParameters(PredictionParameters):
398 def __init__(self, maxSpeed, nPredictedTrajectories, accelerationDistribution, steeringDistribution, useFeatures = False): 397 def __init__(self, maxSpeed, nPredictedTrajectories, accelerationDistribution, steeringDistribution, useFeatures = False):
399 '''An example of acceleration and steering distributions is 398 '''An example of acceleration and steering distributions is
400 lambda: random.triangular(-self.maxAcceleration, self.maxAcceleration, 0.) 399 lambda: random.triangular(-self.maxAcceleration, self.maxAcceleration, 0.)
421 positions = [f.getPositionAtInstant(instant) for f in features] 420 positions = [f.getPositionAtInstant(instant) for f in features]
422 velocities = [f.getVelocityAtInstant(instant) for f in features] 421 velocities = [f.getVelocityAtInstant(instant) for f in features]
423 else: 422 else:
424 positions = [obj.getPositionAtInstant(instant)] 423 positions = [obj.getPositionAtInstant(instant)]
425 velocities = [obj.getVelocityAtInstant(instant)] 424 velocities = [obj.getVelocityAtInstant(instant)]
425 probability = 1./float(len(positions)*self.nPredictedTrajectories)
426 for i in xrange(self.nPredictedTrajectories): 426 for i in xrange(self.nPredictedTrajectories):
427 for initialPosition,initialVelocity in zip(positions, velocities): 427 for initialPosition,initialVelocity in zip(positions, velocities):
428 predictedTrajectories.append(PredictedTrajectoryRandomControl(initialPosition, 428 predictedTrajectories.append(PredictedTrajectoryRandomControl(initialPosition,
429 initialVelocity, 429 initialVelocity,
430 self.accelerationDistribution, 430 self.accelerationDistribution,
431 self.steeringDistribution, 431 self.steeringDistribution,
432 probability,
432 maxSpeed = self.maxSpeed)) 433 maxSpeed = self.maxSpeed))
433 return predictedTrajectories 434 return predictedTrajectories
434 435
435 class PointSetPredictionParameters(PredictionParameters): 436 class PointSetPredictionParameters(PredictionParameters):
436 # todo generate several trajectories with normal adaptatoins from each position (feature) 437 # todo generate several trajectories with normal adaptatoins from each position (feature)
442 predictedTrajectories = [] 443 predictedTrajectories = []
443 if obj.hasFeatures(): 444 if obj.hasFeatures():
444 features = [f for f in obj.getFeatures() if f.existsAtInstant(instant)] 445 features = [f for f in obj.getFeatures() if f.existsAtInstant(instant)]
445 positions = [f.getPositionAtInstant(instant) for f in features] 446 positions = [f.getPositionAtInstant(instant) for f in features]
446 velocities = [f.getVelocityAtInstant(instant) for f in features] 447 velocities = [f.getVelocityAtInstant(instant) for f in features]
447 #for i in xrange(self.nPredictedTrajectories): 448 probability = 1./float(len(positions))
448 for initialPosition,initialVelocity in zip(positions, velocities): 449 for initialPosition,initialVelocity in zip(positions, velocities):
449 predictedTrajectories.append(PredictedTrajectoryConstant(initialPosition, initialVelocity, 450 predictedTrajectories.append(PredictedTrajectoryConstant(initialPosition, initialVelocity, probability = probability, maxSpeed = self.maxSpeed))
450 maxSpeed = self.maxSpeed))
451 return predictedTrajectories 451 return predictedTrajectories
452 else: 452 else:
453 print('Object {} has no features'.format(obj.getNum())) 453 print('Object {} has no features'.format(obj.getNum()))
454 return None 454 return None
455 455
478 positions = [f.getPositionAtInstant(instant) for f in features] 478 positions = [f.getPositionAtInstant(instant) for f in features]
479 velocities = [f.getVelocityAtInstant(instant) for f in features] 479 velocities = [f.getVelocityAtInstant(instant) for f in features]
480 else: 480 else:
481 positions = [obj.getPositionAtInstant(instant)] 481 positions = [obj.getPositionAtInstant(instant)]
482 velocities = [obj.getVelocityAtInstant(instant)] 482 velocities = [obj.getVelocityAtInstant(instant)]
483 probability = 1./float(self.nPredictedTrajectories)
483 for i in xrange(self.nPredictedTrajectories): 484 for i in xrange(self.nPredictedTrajectories):
484 for initialPosition,initialVelocity in zip(positions, velocities): 485 for initialPosition,initialVelocity in zip(positions, velocities):
485 predictedTrajectories.append(PredictedTrajectoryConstant(initialPosition, 486 predictedTrajectories.append(PredictedTrajectoryConstant(initialPosition,
486 initialVelocity, 487 initialVelocity,
487 moving.NormAngle(self.accelerationDistribution(), 488 moving.NormAngle(self.accelerationDistribution(),
488 self.steeringDistribution()), 489 self.steeringDistribution()),
489 maxSpeed = self.maxSpeed)) 490 probability,
491 self.maxSpeed))
490 return predictedTrajectories 492 return predictedTrajectories
491 493
492 494
493 class CVDirectPredictionParameters(PredictionParameters): 495 class CVDirectPredictionParameters(PredictionParameters):
494 '''Prediction parameters of prediction at constant velocity 496 '''Prediction parameters of prediction at constant velocity