From d72db8b6138fc54cc019d0ff2a710ae551876053 Mon Sep 17 00:00:00 2001 From: daviddudas <david.dudas@outlook.com> Date: Wed, 15 Jan 2020 19:44:18 +0100 Subject: [PATCH] mecanum odometry fix --- src/mecanum_drive/odometry.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/mecanum_drive/odometry.py b/src/mecanum_drive/odometry.py index 24a55c5..93d817c 100755 --- a/src/mecanum_drive/odometry.py +++ b/src/mecanum_drive/odometry.py @@ -50,12 +50,12 @@ class Odometry: rearRightTravel = self.rearRightEncoder.getDelta() / self.ticksPerMeter deltaTime = newTime - self.lastTime - deltaXTravel = (frontLeftTravel + frontRightTravel + rearLeftTravel + rearRightTravel) / 4 - deltaYTravel = (-frontLeftTravel + frontRightTravel + rearLeftTravel - rearRightTravel) / 4 - deltaTheta = (-frontLeftTravel + frontRightTravel - rearLeftTravel + rearRightTravel) / (4 * self.wheelSeparation + self.wheelSeparationLength) + deltaXTravel = (frontLeftTravel + frontRightTravel + rearLeftTravel + rearRightTravel) / 4.0 + deltaYTravel = (-frontLeftTravel + frontRightTravel + rearLeftTravel - rearRightTravel) / 4.0 + deltaTheta = (-frontLeftTravel + frontRightTravel - rearLeftTravel + rearRightTravel) / (2 * (self.wheelSeparation + self.wheelSeparationLength)) - self.pose.x += deltaXTravel - self.pose.y += deltaYTravel + self.pose.x += deltaXTravel*cos(self.pose.theta) - deltaYTravel*sin(self.pose.theta) + self.pose.y += deltaYTravel*cos(self.pose.theta) + deltaXTravel*sin(self.pose.theta) self.pose.theta = (self.pose.theta + deltaTheta) % (2*pi) self.pose.xVel = deltaXTravel / deltaTime if deltaTime > 0 else 0. self.pose.yVel = deltaYTravel / deltaTime if deltaTime > 0 else 0. -- GitLab