You can do PID without encoders. PID only requires a feedback, the source of which can be any kind of sensor, including a gyroscope. The NavX has an example for this kind of thing here
It looks like argument 6 is out of place. You’re using “this” in robotinit, which from the error message I assume passes an object of type Robot. I don’t think you want that there, considering PIDController is looking for a float. You also have 7 arguments where there should be 6, which makes me think you have an extra argument in there. What is kF? argument 4 should be of type PIDSource.
I pushed the NavX rotate to angle example to my code but now i’m receiving another error. No matter what I put in the PIDOutput space it is coming out as not being able to convert it.
RobotDrive myRobot;
turnController = new PIDController(kP, kI, kD, ahrs, myRobot);
Can you post your code, and the error message? Please keep in mind that in order for this to work, myRobot needs to implement the PIDOutput interface, so my best guess is myRobot is an instance of a class which does not implement the PIDOutput interface - but it’s hard to tell with only this information.
You can either create a new tiny class specifically to be used as your PIDOutput class, or you can have your robot class be that class too by using a line like this on your Robot class definition.
public class Robot extends SampleRobot implements PIDOutput {
Then you need to implement pidWrite() which tells the PID what you want to do with the output.
In your case, copying a line from above I assume you will want this:
@Override
/* This function is invoked periodically by the PID Controller, */
/* based upon navX-MXP yaw angle input and PID Coefficients. */
public void pidWrite(double output) {
Drive( output, 1.0 );
}
If the error between your setpoint and the gyro angle was 90 degrees or more you would want full 1.0 power, so I would start with a P constant of 1.0 / 90. So 0.01 should be a good starting place.
When you set your gyro up, here are some other suggestions straight from their example: