Mercurial > hg > nsaunier > 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 |
