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]