Mercurial > hg > nsaunier > traffic-intelligence
comparison python/prediction.py @ 352:72aa44072093
safety analysis script with option for prediction method
| author | Nicolas Saunier <nicolas.saunier@polymtl.ca> |
|---|---|
| date | Thu, 27 Jun 2013 01:35:47 -0400 |
| parents | 7e9ad2d9d79c |
| children | 41e31d8c4383 |
comparison
equal
deleted
inserted
replaced
| 351:891858351bcb | 352:72aa44072093 |
|---|---|
| 78 def generatePredictedTrajectories(self, obj, instant): | 78 def generatePredictedTrajectories(self, obj, instant): |
| 79 return [PredictedTrajectoryConstant(obj.getPositionAtInstant(instant), obj.getVelocityAtInstant(instant), | 79 return [PredictedTrajectoryConstant(obj.getPositionAtInstant(instant), obj.getVelocityAtInstant(instant), |
| 80 maxSpeed = self.maxSpeed)] | 80 maxSpeed = self.maxSpeed)] |
| 81 | 81 |
| 82 class NormalAdaptationPredictionParameters(PredictionParameters): | 82 class NormalAdaptationPredictionParameters(PredictionParameters): |
| 83 def __init__(self, maxSpeed, nPredictedTrajectories, maxAcceleration, maxSteering):#, useFeatures = False | 83 def __init__(self, maxSpeed, nPredictedTrajectories, maxAcceleration, maxSteering, useFeatures = False): |
| 84 PredictionParameters.__init__(self, 'normal adaptation', maxSpeed) | 84 if useFeatures: |
| 85 name = 'point set normal adaptation' | |
| 86 else: | |
| 87 name = 'normal adaptation' | |
| 88 PredictionParameters.__init__(self, name, maxSpeed) | |
| 85 self.nPredictedTrajectories = nPredictedTrajectories | 89 self.nPredictedTrajectories = nPredictedTrajectories |
| 86 self.maxAcceleration = maxAcceleration | 90 self.maxAcceleration = maxAcceleration |
| 87 self.maxSteering = maxSteering | 91 self.maxSteering = maxSteering |
| 92 self.useFeatures = useFeatures | |
| 88 self.accelerationDistribution = lambda: random.triangular(-self.maxAcceleration, | 93 self.accelerationDistribution = lambda: random.triangular(-self.maxAcceleration, |
| 89 self.maxAcceleration, 0.) | 94 self.maxAcceleration, 0.) |
| 90 self.steeringDistribution = lambda: random.triangular(-self.maxSteering, | 95 self.steeringDistribution = lambda: random.triangular(-self.maxSteering, |
| 91 self.maxSteering, 0.) | 96 self.maxSteering, 0.) |
| 92 | 97 |
| 93 def __str__(self): | 98 def __str__(self): |
| 94 return PredictionParameters.__str__(self)+' {0} {1} {2}'.format(self.nPredictedTrajectories, | 99 return PredictionParameters.__str__(self)+' {0} {1} {2}'.format(self.nPredictedTrajectories, |
| 95 self.maxAcceleration, | 100 self.maxAcceleration, |
| 96 self.maxSteering) | 101 self.maxSteering) |
| 97 | 102 |
| 98 def generatePredictedTrajectories(self, obj, instant): | 103 def generatePredictedTrajectories(self, obj, instant): |
| 99 predictedTrajectories = [] | 104 predictedTrajectories = [] |
| 105 if self.useFeatures: | |
| 106 features = [f for f in obj.features if f.existsAtInstant(instant)] | |
| 107 positions = [f.getPositionAtInstant(instant) for f in features] | |
| 108 velocities = [f.getVelocityAtInstant(instant) for f in features] | |
| 109 else: | |
| 110 positions = [obj.getPositionAtInstant(instant)] | |
| 111 velocities = [obj.getVelocityAtInstant(instant)] | |
| 100 for i in xrange(self.nPredictedTrajectories): | 112 for i in xrange(self.nPredictedTrajectories): |
| 101 predictedTrajectories.append(PredictedTrajectoryNormalAdaptation(obj.getPositionAtInstant(instant), | 113 for initialPosition,initialVelocity in zip(positions, velocities): |
| 102 obj.getVelocityAtInstant(instant), | 114 predictedTrajectories.append(PredictedTrajectoryNormalAdaptation(initialPosition, |
| 103 self.accelerationDistribution, | 115 initialVelocity, |
| 104 self.steeringDistribution, | 116 self.accelerationDistribution, |
| 105 maxSpeed = self.maxSpeed)) | 117 self.steeringDistribution, |
| 118 maxSpeed = self.maxSpeed)) | |
| 106 return predictedTrajectories | 119 return predictedTrajectories |
| 107 | 120 |
| 108 class PointSetPredictionParameters(PredictionParameters): | 121 class PointSetPredictionParameters(PredictionParameters): |
| 109 # todo generate several trajectories with normal adaptatoins from each position (feature) | 122 # todo generate several trajectories with normal adaptatoins from each position (feature) |
| 110 def __init__(self, nPredictedTrajectories, maxSpeed): | 123 def __init__(self, nPredictedTrajectories, maxSpeed): |
