src/main/java/frc/robot/Robot.java
@Override
  public void robotInit() {

    Camera.startCameras();


    initializeMotorControllers();

    initializeGamePad();


    left_motors = new MotorControllerGroup(fl_drive, bl_drive);
    right_motors = new MotorControllerGroup(fr_drive, br_drive);
    right_motors.setInverted(true);
    drive = new DifferentialDrive(left_motors, right_motors);

    fl_drive.setOpenLoopRampRate(0.5);
    fr_drive.setOpenLoopRampRate(0.5);
    bl_drive.setOpenLoopRampRate(0.5);
    br_drive.setOpenLoopRampRate(0.5);
    
    verticalClimb.setNeutralMode(NeutralMode.Brake);

    pdp = new PowerDistribution();

    ballIRSensor = new AnalogInput(0);

    shuffleboardStartup();
   
    movePid = new PIDController(Statics.movementPIDp, Statics.movementPIDi, Statics.movementPidd); //TODO: figure out the kP, kI, and kD values required for actual instantiation
    movePid.setTolerance(.2);
    gyroPid = new PIDController(Statics.gyroPIDp, Statics.gyroPIDi, Statics.gyroPIDd); //TODO: figure out the kP, kI, and kD values required for actual instantiation
    gyroPid.setTolerance(2);
    ahrs = new AHRS(SerialPort.Port.kMXP);


  }
/**
   * This function is run when the robot is first started up and should be used for any
   * initialization code.
   */
This function is run when the robot is first started up and should be used for any
initialization code.
This function is run when the robot is first started up and should be used for any initialization code .
@Override
  public void robotInit() {
    Camera.startCameras();
    initializeMotorControllers();
    initializeGamePad();
    left_motors = new MotorControllerGroup(fl_drive, bl_drive);
    right_motors = new MotorControllerGroup(fr_drive, br_drive);
    right_motors.setInverted(true);
    drive = new DifferentialDrive(left_motors, right_motors);
    fl_drive.setOpenLoopRampRate(0.5);
    fr_drive.setOpenLoopRampRate(0.5);
    bl_drive.setOpenLoopRampRate(0.5);
    br_drive.setOpenLoopRampRate(0.5);
    verticalClimb.setNeutralMode(NeutralMode.Brake);
    pdp = new PowerDistribution();
    ballIRSensor = new AnalogInput(0);
    shuffleboardStartup();
    movePid = new PIDController(Statics.movementPIDp, Statics.movementPIDi, Statics.movementPidd); 
    movePid.setTolerance(.2);
    gyroPid = new PIDController(Statics.gyroPIDp, Statics.gyroPIDi, Statics.gyroPIDd); 
    gyroPid.setTolerance(2);
    ahrs = new AHRS(SerialPort.Port.kMXP);
  }
@ Override public void robotInit ( ) { Camera . startCameras ( ) ; initializeMotorControllers ( ) ; initializeGamePad ( ) ; left_motors = new MotorControllerGroup ( fl_drive , bl_drive ) ; right_motors = new MotorControllerGroup ( fr_drive , br_drive ) ; right_motors . setInverted ( true ) ; drive = new DifferentialDrive ( left_motors , right_motors ) ; fl_drive . setOpenLoopRampRate ( 0.5 ) ; fr_drive . setOpenLoopRampRate ( 0.5 ) ; bl_drive . setOpenLoopRampRate ( 0.5 ) ; br_drive . setOpenLoopRampRate ( 0.5 ) ; verticalClimb . setNeutralMode ( NeutralMode . Brake ) ; pdp = new PowerDistribution ( ) ; ballIRSensor = new AnalogInput ( 0 ) ; shuffleboardStartup ( ) ; movePid = new PIDController ( Statics . movementPIDp , Statics . movementPIDi , Statics . movementPidd ) ; movePid . setTolerance ( .2 ) ; gyroPid = new PIDController ( Statics . gyroPIDp , Statics . gyroPIDi , Statics . gyroPIDd ) ; gyroPid . setTolerance ( 2 ) ; ahrs = new AHRS ( SerialPort . Port . kMXP ) ; }
This function is run when the robot is first started up and should be used for any
 initialization code.
This function is run when the robot is first started up and should be used for any initialization code .
//TODO: figure out the kP, kI, and kD values required for actual instantiation //TODO: figure out the kP, kI, and kD values required for actual instantiation