Mercurial Hosting > traffic-intelligence
comparison python/prediction.py @ 937:b67a784beb69
work started on prototype prediction
author | Nicolas Saunier <nicolas.saunier@polymtl.ca> |
---|---|
date | Mon, 17 Jul 2017 01:38:06 -0400 |
parents | 063d1267585d |
children | a2f3f3ca241e |
comparison
equal
deleted
inserted
replaced
936:56cc8a1f7082 | 937:b67a784beb69 |
---|---|
74 def __init__(self, initialPosition, initialVelocity, prototypeTrajectory, constantSpeed = False, probability = 1.): | 74 def __init__(self, initialPosition, initialVelocity, prototypeTrajectory, constantSpeed = False, probability = 1.): |
75 self.prototypeTrajectory = prototypeTrajectory | 75 self.prototypeTrajectory = prototypeTrajectory |
76 self.constantSpeed = constantSpeed | 76 self.constantSpeed = constantSpeed |
77 self.probability = probability | 77 self.probability = probability |
78 self.predictedPositions = {0: initialPosition} | 78 self.predictedPositions = {0: initialPosition} |
79 self.predictedSpeedOrientations = {0: moving.NormAngle(moving.NormAngle.fromPoint(initialVelocity).norm, findNearestParams(initialPosition,prototypeTrajectory)[1])}#moving.NormAngle.fromPoint(initialVelocity)} | 79 self.closestPointIdx = prototypeTrajectory.getClosestPoint(initialPosition) |
80 self.deltaPosition = prototypeTrajectory[self.closestPointIdx]-initialPosition | |
81 self.initialSpeed = initialVelocity.norm() | |
82 #self.predictedSpeedOrientations = {0: moving.NormAngle(moving.NormAngle.fromPoint(initialVelocity).norm, findNearestParams(initialPosition,prototypeTrajectory)[1])}#moving.NormAngle.fromPoint(initialVelocity)} | |
80 | 83 |
81 def predictPosition(self, nTimeSteps): | 84 def predictPosition(self, nTimeSteps): |
82 if nTimeSteps > 0 and not nTimeSteps in self.predictedPositions.keys(): | 85 if nTimeSteps > 0 and not nTimeSteps in self.predictedPositions.keys(): |
83 if self.constantSpeed: | 86 if self.constantSpeed: |
84 # calculate cumulative distance | 87 # calculate cumulative distance |
85 speedNorm= self.predictedSpeedOrientations[0].norm #moving.NormAngle.fromPoint(initialVelocity).norm | 88 pass |
86 anglePrototype = findNearestParams(self.predictedPositions[nTimeSteps-1],self.prototypeTrajectory)[1] | |
87 self.predictedSpeedOrientations[nTimeSteps]= moving.NormAngle(speedNorm, anglePrototype) | |
88 self.predictedPositions[nTimeSteps],tmp= moving.predictPosition(self.predictedPositions[nTimeSteps-1], self.predictedSpeedOrientations[nTimeSteps-1], moving.NormAngle(0,0), None) | |
89 | |
90 else: # see c++ code, calculate ratio | 89 else: # see c++ code, calculate ratio |
91 speedNorm= self.predictedSpeedOrientations[0].norm | 90 speedNorm= self.predictedSpeedOrientations[0].norm |
92 instant=findNearestParams(self.predictedPositions[0],self.prototypeTrajectory)[0] | 91 instant=findNearestParams(self.predictedPositions[0],self.prototypeTrajectory)[0] |
93 prototypeSpeeds= self.prototypeTrajectory.getSpeeds()[instant:] | 92 prototypeSpeeds= self.prototypeTrajectory.getSpeeds()[instant:] |
94 ratio=float(speedNorm)/prototypeSpeeds[0] | 93 ratio=float(speedNorm)/prototypeSpeeds[0] |