Hi everyone. We have the code below that we are using for turning out drivetrain. When we are running this code, our robot turns randomly and does not turn and stop. We are using an inertial sensor for its gyro functionality. Any help would be greatly appriciated.
void turnP(float angle) {
Inertial.resetRotation();
float Kp = 0.3;
angle = angle / 2;
if (angle < 0) {
while (Inertial.rotation(deg) > angle) {
double gError = abs(angle - Inertial.rotation(deg));
float speed = gError * Kp;
leftBack.spin(fwd, -speed, velocityUnits::pct);
leftFront.spin(fwd, -speed, velocityUnits::pct);
rightFront.spin(fwd, speed, velocityUnits::pct);
rightBack.spin(fwd, speed, velocityUnits::pct);
}
} else if (angle > 0) {
while (Inertial.rotation(deg) < angle) {
double gError = abs(angle - Inertial.angle(deg));
float speed = gError * Kp;
leftBack.spin(fwd, speed, velocityUnits::pct);
leftFront.spin(fwd, speed, velocityUnits::pct);
rightFront.spin(fwd, -speed, velocityUnits::pct);
rightBack.spin(fwd, -speed, velocityUnits::pct);
}
} else {
}
leftBack.stop();
leftFront.stop();
rightFront.stop();
rightBack.stop();
}