Mercurial > hg > nsaunier > 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] |
