// basic arcadeDrive: y=forward/backward speed, x=left/right speed
 public void arcadeDrive(double y, double x) {
   SmartDashboard.putNumber("RightEncoder", rightEncoder.get());
   SmartDashboard.putNumber("LeftEncoder", leftEncoder.get());
   Preferences p = Preferences.getInstance();
   final boolean kReverseDirection = p.getBoolean("DriveTrainReverseDirection", false);
   robotDrive.setInvertedMotor(RobotDrive.MotorType.kRearLeft, kReverseDirection);
   robotDrive.setInvertedMotor(RobotDrive.MotorType.kRearRight, kReverseDirection);
   robotDrive.arcadeDrive(y, x);
 } // end arcadeDrive
Example #2
0
 public double getRPM() {
   if (Timer.getFPGATimestamp() > RPMUpdatePeriod + encoderMarkTime) {
     double encoderCPS =
         (enc.get() - encoderMarkCounts) / (Timer.getFPGATimestamp() - encoderMarkTime);
     encoderRPM = (encoderCPS * 60) / 16;
     encoderMarkCounts = enc.get();
     encoderMarkTime = Timer.getFPGATimestamp();
   }
   return encoderRPM;
 }
Example #3
0
 // lowers elevator partway for last pull-up at end
 public void lowerElevatorPartway() {
   if (climberEncoder.get() > lowerElevatorPartwayLimit) {
     if (!getError(false) || climberEncoder.get() > errorUpperLimit) {
       climberMotor.set(-elevatorSpeed);
     } else {
       if (!getUpperLimit()) {
         climberMotor.set(elevatorSpeed);
       }
     }
   } else {
     climberMotor.set(0);
   }
   putData();
 }
 public boolean driveStraight(double dist) {
   SmartDashboard.putNumber("RightEncoder", rightEncoder.get());
   SmartDashboard.putNumber("LeftEncoder", leftEncoder.get());
   Preferences p = Preferences.getInstance();
   L_encoderVal =
       leftEncoder.get()
           / p.getDouble(
               "LeftEncoderRatio",
               0.0); // converts encoder value to inches; encoder ratio should be about 58.76
   R_encoderVal =
       rightEncoder.get()
           / p.getDouble("RightEncoderRatio", 0.0); // converts encoder value to inches
   encoderVal = (R_encoderVal); // only one encoder
   encoderErr = dist - encoderVal;
   distOut =
       encoderErr * p.getDouble("Encoder_kP", 0.0)
           + (Math.abs(encoderErr) / encoderErr)
               * p.getDouble(
                   "OutputMin",
                   0.0); // Encoder kP = 0.5; abs(x)/x returns sign of x; 0.2 is the min. magnitude
   gyroErr = gyro.getAngle(); // Setpoint is always 0
   double angleOut = gyroErr * p.getDouble("Gyro_kP", 0.0) + .3; // * distOut / Math.abs(distOut);
   SmartDashboard.putNumber("encoderErr", encoderErr);
   SmartDashboard.putNumber("distOut", distOut);
   SmartDashboard.putNumber("gyroErr", gyro.getAngle());
   SmartDashboard.putNumber("angleOut", angleOut);
   if (Math.abs(encoderErr) < p.getDouble("DistBuffer", 0.0)
       && Math.abs(gyroErr) < p.getDouble("AngleBuffer", 0.0)) {
     //            leftEncoder.reset();
     //            rightEncoder.reset();
     // gyro.reset();
     // arcadeDrive(0, 0);
     return true; // returns true when robot gets to its goal
   } else {
     arcadeDrive(
         -distOut,
         angleOut); // Gyro kP = 1/18.0; Arcade Drive uses reversed rotate values (neg. goes Left /
     // pos. goes Right)
     return false; // returns false if robot still hasn't reached its goal yet
   }
 } // end driveStraight
 public void tankDrive(double leftSpeed, double rightSpeed) {
   Preferences p = Preferences.getInstance();
   final boolean kReverseDirection = p.getBoolean("DriveTrainReverseDirection", false);
   robotDrive.setInvertedMotor(RobotDrive.MotorType.kRearLeft, kReverseDirection);
   robotDrive.setInvertedMotor(RobotDrive.MotorType.kRearRight, kReverseDirection);
   //        if (kReverseDirection) {
   //            robotDrive.tankDrive(rightSpeed, leftSpeed);
   //            return;
   //        }
   robotDrive.tankDrive(leftSpeed, rightSpeed);
   SmartDashboard.putNumber("gyroErr", gyro.getAngle());
   SmartDashboard.putNumber("encoder", rightEncoder.get());
 } // end tankDrive
  @Override
  @SuppressWarnings({"nls", "boxing"})
  protected void initialize(Class<?> type, Object oldInstance, Object newInstance, Encoder enc) {
    super.initialize(type, oldInstance, newInstance, enc);

    List list = (List) oldInstance;
    Statement setterStm = new Statement(oldInstance, "setSize", new Object[] {list.getSize()});
    enc.writeStatement(setterStm);

    int count = list.getItemCount();
    Expression getterExp = null;
    for (int i = 0; i < count; i++) {
      getterExp = new Expression(list, "getItem", new Object[] {i});
      try {
        // Calculate the old value of the property
        Object oldVal = getterExp.getValue();
        // Write the getter expression to the encoder
        enc.writeExpression(getterExp);
        // Get the target value that exists in the new environment
        Object targetVal = enc.get(oldVal);
        // Get the current property value in the new environment
        Object newVal = null;
        try {
          newVal = new Expression(newInstance, "getItem", new Object[] {i}).getValue();
        } catch (IndexOutOfBoundsException ex) {
          // The newInstance has no elements, so current property
          // value remains null
        }
        /*
         * Make the target value and current property value equivalent
         * in the new environment
         */
        if (null == targetVal) {
          if (null != newVal) {
            // Set to null
            setterStm = new Statement(oldInstance, "add", new Object[] {null});
            enc.writeStatement(setterStm);
          }
        } else {
          PersistenceDelegate pd = enc.getPersistenceDelegate(targetVal.getClass());
          if (!pd.mutatesTo(targetVal, newVal)) {
            setterStm = new Statement(oldInstance, "add", new Object[] {oldVal});
            enc.writeStatement(setterStm);
          }
        }
      } catch (Exception ex) {
        enc.getExceptionListener().exceptionThrown(ex);
      }
    }
  }
Example #7
0
 // raises the elevator, tries again if hooks don't catch
 public void raiseElevator() {
   if (!getUpperLimit()) {
     if (!getError(true) || climberEncoder.get() < errorLowerLimit) {
       climberMotor.set(elevatorSpeed);
     } else {
       if (!getLowerLimit()) {
         climberMotor.set(-elevatorSpeed);
       }
     }
   } else {
     climberMotor.set(0);
   }
   putData();
 }
Example #8
0
  public void teleopPeriodic() {
    watchdog.feed(); // feed the watchdog
    // Toggle drive mode
    if (!driveToggle && left.getRawButton(2)) {
      driveMode = (driveMode + 1) % 3;
      driveToggle = true;
    } else if (driveToggle && !left.getRawButton(2)) driveToggle = false;

    // Print drive mode to DS & send values to Jaguars
    switch (driveMode) {
      case 0:
        dsLCD.println(DriverStationLCD.Line.kMain6, 1, "Drive mode: Tank  ");
        red.set(left.getY() + gamePad.getY());
        black.set(-right.getY() - gamePad.getThrottle());
        break;
      case 1:
        dsLCD.println(DriverStationLCD.Line.kMain6, 1, "Drive mode: Arcade");
        red.set(right.getX() - right.getY());
        black.set(right.getX() + right.getY());
        break;
      case 2:
        dsLCD.println(DriverStationLCD.Line.kMain6, 1, "Drive mode: Kaj   ");
        red.set(left.getX() - right.getY());
        black.set(left.getX() + right.getY());
        break;
    } /**/
    dsLCD.println(
        DriverStationLCD.Line.kUser3,
        1,
        "1" + photoreceptorL.get() + "2" + photoreceptorM.get() + "3" + photoreceptorR.get());
    dsLCD.println(DriverStationLCD.Line.kUser4, 1, "Encoder in 4,5: " + leftEncoder.get() + "    ");
    dsLCD.println(
        DriverStationLCD.Line.kUser5, 1, "Encoder in 6,7: " + rightEncoder.get() + "    ");

    dsLCD.updateLCD();
  }
Example #9
0
 // puts data to smartdashboard
 public void putData() {
   SmartDashboard.putNumber("Level", level);
   SmartDashboard.putNumber("Encoder", climberEncoder.get());
   SmartDashboard.putBoolean("Upper Limit", getUpperLimit());
   SmartDashboard.putBoolean("Lower Limit", getLowerLimit());
 }
Example #10
0
 // whether the elevator has reached the top
 public boolean getUpperLimit() {
   return topClimberSwitch.get() || climberEncoder.get() > encoderMax;
 }
Example #11
0
 // whether the elevator has reached the bottom
 public boolean getLowerLimit() {
   return bottomClimberSwitch.get() || climberEncoder.get() < encoderMin;
 }
 public double pidGet() {
   return leftEncoder.get();
 }
Example #13
0
 public double get() {
   return enc.get();
 }