Quote:
Originally Posted by curtis0gj
So what will this whole function be used for calculating turns?
|
hm?
note that I edited that post like 5 times.
Anyway, heres a (maybe) working function
Code:
public static double angleError(double setpointDegressZeroToThreeSixty, double experimentalDegrees){
double err = setpointDegressZeroToThreeSixty - experimentalDegrees; //0 360
if(err < -180){
err += 360;
}else if(err > 180){
err -= 360;
}
return err;
}
double kp_rotate = 0.01;
double MAX_ERROR = 5;
public static void turn(double deg){
while(true){
double deltaAngle = angleError(deg, gyro.getAngle());
if(Math.abs(deg-deltaAngle) < MAX_ERROR){
break;
}else{
robot.drive(0, deltaAngle*kp_rotate); //drive taking a move and a rotate value
}
Timer.delay(0.02);
}
}