Mercurial > hg > nsaunier > traffic-intelligence
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)] |
