Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def correct(self, reobservedLandmarks, newLandmarks):
- for landmark in reobservedLandmarks:
- location = Point(self.stateVector[0], self.stateVector[1])
- rotation = self.stateVector[2]
- storedLandmark = Point(self.stateVector[(landmark.id*2)+3], self.stateVector[(landmark.id*2)+4])
- predictedDist = location.euclideanDistance(storedLandmark)
- predictedAngle = math.atan2(storedLandmark.y - location.y, storedLandmark.x - location.x) - math.radians(rotation % 360)
- h = Point(predictedDist, predictedAngle)
- z = Point(landmark.dist, math.radians(landmark.angle))
- errorR = np.array([[predictedDist*0.01, 0],[0, 1]])
- identityV = np.identity(2)
- jacobianH = np.zeros([2, 5])
- jacobianH[1][2] = -1
- jacobianH[0][0] = location.x - storedLandmark.x / errorR[0][0]
- jacobianH[0][1] = location.y - storedLandmark.y
- jacobianH[1][0] = storedLandmark.y - location.y
- jacobianH[1][1] = storedLandmark.x - location.x / errorR[1][1]
- jacobianH[0][3] = -jacobianH[0][0]
- jacobianH[0][4] = -jacobianH[0][1]
- jacobianH[1][3] = -jacobianH[1][0]
- jacobianH[1][4] = -jacobianH[1][1]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement