Mercurial Hosting > traffic-intelligence
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 |