Mercurial > hg > nsaunier > traffic-intelligence
comparison python/prediction.py @ 460:55b424d98b68
change of interface, distributions are now passed to the prediction paramters constructors if needed
| author | Nicolas Saunier <nicolas.saunier@polymtl.ca> |
|---|---|
| date | Sat, 22 Feb 2014 01:18:16 -0500 |
| parents | 91679eb2ff2c |
| children | dcc821b98efc |
comparison
equal
deleted
inserted
replaced
| 459:2a4e9ef469e5 | 460:55b424d98b68 |
|---|---|
| 213 def generatePredictedTrajectories(self, obj, instant): | 213 def generatePredictedTrajectories(self, obj, instant): |
| 214 return [PredictedTrajectoryConstant(obj.getPositionAtInstant(instant), obj.getVelocityAtInstant(instant), | 214 return [PredictedTrajectoryConstant(obj.getPositionAtInstant(instant), obj.getVelocityAtInstant(instant), |
| 215 maxSpeed = self.maxSpeed)] | 215 maxSpeed = self.maxSpeed)] |
| 216 | 216 |
| 217 class NormalAdaptationPredictionParameters(PredictionParameters): | 217 class NormalAdaptationPredictionParameters(PredictionParameters): |
| 218 def __init__(self, maxSpeed, nPredictedTrajectories, maxAcceleration, maxSteering, useFeatures = False): | 218 def __init__(self, maxSpeed, nPredictedTrajectories, accelerationDistribution, steeringDistribution, useFeatures = False): |
| 219 '''An example of acceleration and steering distributions is | |
| 220 lambda: random.triangular(-self.maxAcceleration, self.maxAcceleration, 0.) | |
| 221 ''' | |
| 219 if useFeatures: | 222 if useFeatures: |
| 220 name = 'point set normal adaptation' | 223 name = 'point set normal adaptation' |
| 221 else: | 224 else: |
| 222 name = 'normal adaptation' | 225 name = 'normal adaptation' |
| 223 PredictionParameters.__init__(self, name, maxSpeed) | 226 PredictionParameters.__init__(self, name, maxSpeed) |
| 224 self.nPredictedTrajectories = nPredictedTrajectories | 227 self.nPredictedTrajectories = nPredictedTrajectories |
| 225 self.maxAcceleration = maxAcceleration | |
| 226 self.maxSteering = maxSteering | |
| 227 self.useFeatures = useFeatures | 228 self.useFeatures = useFeatures |
| 228 self.accelerationDistribution = lambda: random.triangular(-self.maxAcceleration, | 229 self.accelerationDistribution = accelerationDistribution |
| 229 self.maxAcceleration, 0.) | 230 self.steeringDistribution = steeringDistribution |
| 230 self.steeringDistribution = lambda: random.triangular(-self.maxSteering, | |
| 231 self.maxSteering, 0.) | |
| 232 | 231 |
| 233 def __str__(self): | 232 def __str__(self): |
| 234 return PredictionParameters.__str__(self)+' {0} {1} {2}'.format(self.nPredictedTrajectories, | 233 return PredictionParameters.__str__(self)+' {0} {1} {2}'.format(self.nPredictedTrajectories, |
| 235 self.maxAcceleration, | 234 self.maxAcceleration, |
| 236 self.maxSteering) | 235 self.maxSteering) |
| 269 predictedTrajectories.append(PredictedTrajectoryConstant(initialPosition, initialVelocity, | 268 predictedTrajectories.append(PredictedTrajectoryConstant(initialPosition, initialVelocity, |
| 270 maxSpeed = self.maxSpeed)) | 269 maxSpeed = self.maxSpeed)) |
| 271 return predictedTrajectories | 270 return predictedTrajectories |
| 272 | 271 |
| 273 class EvasiveActionPredictionParameters(PredictionParameters): | 272 class EvasiveActionPredictionParameters(PredictionParameters): |
| 274 def __init__(self, maxSpeed, nPredictedTrajectories, minAcceleration, maxAcceleration, maxSteering, useFeatures = False): | 273 def __init__(self, maxSpeed, nPredictedTrajectories, accelerationDistribution, steeringDistribution, useFeatures = False): |
| 274 '''Suggested acceleration distribution may not be symmetric, eg | |
| 275 lambda: random.triangular(self.minAcceleration, self.maxAcceleration, 0.)''' | |
| 276 | |
| 275 if useFeatures: | 277 if useFeatures: |
| 276 name = 'point set evasive action' | 278 name = 'point set evasive action' |
| 277 else: | 279 else: |
| 278 name = 'evasive action' | 280 name = 'evasive action' |
| 279 PredictionParameters.__init__(self, name, maxSpeed) | 281 PredictionParameters.__init__(self, name, maxSpeed) |
| 280 self.nPredictedTrajectories = nPredictedTrajectories | 282 self.nPredictedTrajectories = nPredictedTrajectories |
| 281 self.minAcceleration = minAcceleration | |
| 282 self.maxAcceleration = maxAcceleration | |
| 283 self.maxSteering = maxSteering | |
| 284 self.useFeatures = useFeatures | 283 self.useFeatures = useFeatures |
| 285 self.accelerationDistribution = lambda: random.triangular(self.minAcceleration, | 284 self.accelerationDistribution = accelerationDistribution |
| 286 self.maxAcceleration, 0.) | 285 self.steeringDistribution = steeringDistribution |
| 287 self.steeringDistribution = lambda: random.triangular(-self.maxSteering, | |
| 288 self.maxSteering, 0.) | |
| 289 | 286 |
| 290 def __str__(self): | 287 def __str__(self): |
| 291 return PredictionParameters.__str__(self)+' {0} {1} {2} {3}'.format(self.nPredictedTrajectories, self.minAcceleration, self.maxAcceleration, self.maxSteering) | 288 return PredictionParameters.__str__(self)+' {0} {1} {2} {3}'.format(self.nPredictedTrajectories, self.minAcceleration, self.maxAcceleration, self.maxSteering) |
| 292 | 289 |
| 293 def generatePredictedTrajectories(self, obj, instant): | 290 def generatePredictedTrajectories(self, obj, instant): |
