Mercurial > hg > nsaunier > traffic-intelligence
comparison python/prediction.py @ 350:7e9ad2d9d79c
added new parameters in safety analysis script
| author | Nicolas Saunier <nicolas.saunier@polymtl.ca> |
|---|---|
| date | Thu, 27 Jun 2013 00:18:39 -0400 |
| parents | 124f85c6cfae |
| children | 72aa44072093 |
comparison
equal
deleted
inserted
replaced
| 349:e3f910c26fae | 350:7e9ad2d9d79c |
|---|---|
| 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): | 83 def __init__(self, maxSpeed, nPredictedTrajectories, maxAcceleration, maxSteering):#, useFeatures = False |
| 84 PredictionParameters.__init__(self, 'normal adaptation', maxSpeed) | 84 PredictionParameters.__init__(self, 'normal adaptation', maxSpeed) |
| 85 self.nPredictedTrajectories = nPredictedTrajectories | 85 self.nPredictedTrajectories = nPredictedTrajectories |
| 86 self.maxAcceleration = maxAcceleration | 86 self.maxAcceleration = maxAcceleration |
| 87 self.maxSteering = maxSteering | 87 self.maxSteering = maxSteering |
| 88 self.accelerationDistribution = lambda: random.triangular(-self.maxAcceleration, | 88 self.accelerationDistribution = lambda: random.triangular(-self.maxAcceleration, |
| 105 maxSpeed = self.maxSpeed)) | 105 maxSpeed = self.maxSpeed)) |
| 106 return predictedTrajectories | 106 return predictedTrajectories |
| 107 | 107 |
| 108 class PointSetPredictionParameters(PredictionParameters): | 108 class PointSetPredictionParameters(PredictionParameters): |
| 109 # todo generate several trajectories with normal adaptatoins from each position (feature) | 109 # todo generate several trajectories with normal adaptatoins from each position (feature) |
| 110 def __init__(self, maxSpeed): | 110 def __init__(self, nPredictedTrajectories, maxSpeed): |
| 111 PredictionParameters.__init__(self, 'point set', maxSpeed) | 111 PredictionParameters.__init__(self, 'point set', maxSpeed) |
| 112 self.nPredictedTrajectories = nPredictedTrajectories | |
| 112 | 113 |
| 113 def generatePredictedTrajectories(self, obj, instant): | 114 def generatePredictedTrajectories(self, obj, instant): |
| 114 predictedTrajectories = [] | 115 predictedTrajectories = [] |
| 115 features = [f for f in obj.features if f.existsAtInstant(instant)] | 116 features = [f for f in obj.features if f.existsAtInstant(instant)] |
| 116 positions = [f.getPositionAtInstant(instant) for f in features] | 117 positions = [f.getPositionAtInstant(instant) for f in features] |
| 117 velocities = [f.getVelocityAtInstant(instant) for f in features] | 118 velocities = [f.getVelocityAtInstant(instant) for f in features] |
| 118 for initialPosition,initialVelocity in zip(positions, velocities): | 119 for i in xrange(self.nPredictedTrajectories): |
| 119 predictedTrajectories.append(PredictedTrajectoryConstant(initialPosition, initialVelocity, | 120 for initialPosition,initialVelocity in zip(positions, velocities): |
| 120 maxSpeed = self.maxSpeed)) | 121 predictedTrajectories.append(PredictedTrajectoryConstant(initialPosition, initialVelocity, |
| 122 maxSpeed = self.maxSpeed)) | |
| 121 return predictedTrajectories | 123 return predictedTrajectories |
| 122 | 124 |
| 123 class EvasiveActionPredictionParameters(PredictionParameters): | 125 class EvasiveActionPredictionParameters(PredictionParameters): |
| 124 def __init__(self, maxSpeed, nPredictedTrajectories, minAcceleration, maxAcceleration, maxSteering, useFeatures = False): | 126 def __init__(self, maxSpeed, nPredictedTrajectories, minAcceleration, maxAcceleration, maxSteering, useFeatures = False): |
| 125 if useFeatures: | 127 if useFeatures: |
| 150 positions = [obj.getPositionAtInstant(instant)] | 152 positions = [obj.getPositionAtInstant(instant)] |
| 151 velocities = [obj.getVelocityAtInstant(instant)] | 153 velocities = [obj.getVelocityAtInstant(instant)] |
| 152 for i in xrange(self.nPredictedTrajectories): | 154 for i in xrange(self.nPredictedTrajectories): |
| 153 for initialPosition,initialVelocity in zip(positions, velocities): | 155 for initialPosition,initialVelocity in zip(positions, velocities): |
| 154 predictedTrajectories.append(PredictedTrajectoryConstant(initialPosition, | 156 predictedTrajectories.append(PredictedTrajectoryConstant(initialPosition, |
| 155 initialVelocity, | 157 initialVelocity, |
| 156 moving.NormAngle(self.accelerationDistribution(), | 158 moving.NormAngle(self.accelerationDistribution(), |
| 157 self.steeringDistribution()), | 159 self.steeringDistribution()), |
| 158 maxSpeed = self.maxSpeed)) | 160 maxSpeed = self.maxSpeed)) |
| 159 return predictedTrajectories | 161 return predictedTrajectories |
| 160 | 162 |
| 161 class SafetyPoint(moving.Point): | 163 class SafetyPoint(moving.Point): |
| 162 '''Can represent a collision point or crossing zone | 164 '''Can represent a collision point or crossing zone |
| 163 with respective safety indicator, TTC or pPET''' | 165 with respective safety indicator, TTC or pPET''' |
