Mercurial Hosting > 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): |