當前位置: 首頁>>代碼示例>>Java>>正文


Java PIDOutput類代碼示例

本文整理匯總了Java中edu.wpi.first.wpilibj.PIDOutput的典型用法代碼示例。如果您正苦於以下問題:Java PIDOutput類的具體用法?Java PIDOutput怎麽用?Java PIDOutput使用的例子?那麽, 這裏精選的類代碼示例或許可以為您提供幫助。


PIDOutput類屬於edu.wpi.first.wpilibj包,在下文中一共展示了PIDOutput類的14個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Java代碼示例。

示例1: DriveTrain

import edu.wpi.first.wpilibj.PIDOutput; //導入依賴的package包/類
public DriveTrain() {
    // TODO: would be nice to migrate stuff from RobotMap here.

    // m_turnPID is used to improve accuracy during auto-turn operations.
    m_imu = new IMUPIDSource();
    m_turnPID = new PIDController(turnKp, turnKi, turnKd, turnKf,
                                  m_imu,
                                  new PIDOutput() {
                public void pidWrite(double output) {
                    // output is [-1, 1]... we need to
                    // convert this to a speed...
                    Robot.driveTrain.turn(output * MAXIMUM_TURN_SPEED);
                    // robotDrive.tankDrive(-output, output);
                }
            });
    m_turnPID.setOutputRange(-1, 1);
    m_turnPID.setInputRange(-180, 180);
    m_turnPID.setPercentTolerance(2);
    // m_turnPID.setContuous?
}
 
開發者ID:Spartronics4915,項目名稱:2016-Stronghold,代碼行數:21,代碼來源:DriveTrain.java

示例2: SetDistanceToBox

import edu.wpi.first.wpilibj.PIDOutput; //導入依賴的package包/類
public SetDistanceToBox(double distance) {
	requires(Robot.drivetrain);
	pid = new PIDController(-2, 0, 0, new PIDSource() {
		PIDSourceType m_sourceType = PIDSourceType.kDisplacement;

		public double pidGet() {
			return Robot.drivetrain.getDistanceToObstacle();
		}

		@Override
		public void setPIDSourceType(PIDSourceType pidSource) {
			m_sourceType = pidSource;
		}

		@Override
		public PIDSourceType getPIDSourceType() {
			return m_sourceType;
		}
	}, new PIDOutput() {
		public void pidWrite(double d) {
			Robot.drivetrain.drive(d, d);
		}
	});
	pid.setAbsoluteTolerance(0.01);
	pid.setSetpoint(distance);
}
 
開發者ID:FRC1458,項目名稱:turtleshell,代碼行數:27,代碼來源:SetDistanceToBox.java

示例3: DriveStraight

import edu.wpi.first.wpilibj.PIDOutput; //導入依賴的package包/類
public DriveStraight(double distance) {
    requires(Robot.drivetrain);
    pid = new PIDController(4, 0, 0,
            new PIDSource() {
                PIDSourceType m_sourceType = PIDSourceType.kDisplacement;

                public double pidGet() {
                    return Robot.drivetrain.getDistance();
                }

                @Override
                public void setPIDSourceType(PIDSourceType pidSource) {
                  m_sourceType = pidSource;
                }

                @Override
                public PIDSourceType getPIDSourceType() {
                    return m_sourceType;
                }
            },
            new PIDOutput() { public void pidWrite(double d) {
                Robot.drivetrain.drive(d, d);
            }});
    pid.setAbsoluteTolerance(0.01);
    pid.setSetpoint(distance);
}
 
開發者ID:FRC1458,項目名稱:turtleshell,代碼行數:27,代碼來源:DriveStraight.java

示例4: MecanumDriveAlgorithm

import edu.wpi.first.wpilibj.PIDOutput; //導入依賴的package包/類
/**
 * Creates a new {@link MecanumDriveAlgorithm} that controls the specified
 * {@link FourWheelDriveController}.
 *
 * @param controller the {@link FourWheelDriveController} to control
 * @param gyro the {@link Gyro} to use for orientation correction and
 * field-oriented driving
 */
public MecanumDriveAlgorithm(FourWheelDriveController controller, Gyro gyro) {
    super(controller);
    // Necessary because we hide the controller field inherited from
    // DriveAlgorithm (if this was >=Java 5 I would use generics).
    this.controller = controller;
    this.gyro = gyro;
    rotationPIDController = new PIDController(
            ROTATION_P,
            ROTATION_I,
            ROTATION_D,
            ROTATION_F,
            gyro,
            new PIDOutput() {
                public void pidWrite(double output) {
                    rotationSpeedPID = output;
                }
            }
    );
    SmartDashboard.putData("Rotation PID Controller", rotationPIDController);
}
 
開發者ID:RobotsByTheC,項目名稱:CMonster2014,代碼行數:29,代碼來源:MecanumDriveAlgorithm.java

示例5: DriveToPeg

import edu.wpi.first.wpilibj.PIDOutput; //導入依賴的package包/類
public DriveToPeg(){		
	double distance = .2;
	
	requires(Robot.driveBase);
	double kP = -.4;
	double kI = 1;
	double kD = 5;
	
	pid = new PIDController(kP, kI, kD, new PIDSource() {
		PIDSourceType m_sourceType = PIDSourceType.kDisplacement;

		@Override
		public double pidGet() {
			return Robot.driveBase.getDistanceAhead();
		}

		@Override
		public void setPIDSourceType(PIDSourceType pidSource) {
			m_sourceType = pidSource;
		}

		@Override
		public PIDSourceType getPIDSourceType() {
			return m_sourceType;
		}
	}, new PIDOutput() {
		@Override
		public void pidWrite(double d) {
			Robot.driveBase.driveForward(d);
			System.out.println(d);
		}
	});
	pid.setAbsoluteTolerance(0.01);
	pid.setSetpoint(distance);
	pid.setOutputRange(0, .35);
	
	SmartDashboard.putData("driveToPeg", pid);
}
 
開發者ID:FRC-6413,項目名稱:steamworks-java,代碼行數:39,代碼來源:DriveToPeg.java

示例6: BangBangController

import edu.wpi.first.wpilibj.PIDOutput; //導入依賴的package包/類
public BangBangController (PIDOutput pidOutput, PIDSource pidSource, double period){
    _pidSource = pidSource;
    _pidOutput = pidOutput;
    _period = period;
    _setPoint = 0;
    _timer.schedule(new _bgTask(), 0, (long) (1000*_period));
}
 
開發者ID:2729StormRobotics,項目名稱:Storm2014,代碼行數:8,代碼來源:BangBangController.java

示例7: TakeBackHalfPlusPlus

import edu.wpi.first.wpilibj.PIDOutput; //導入依賴的package包/類
public TakeBackHalfPlusPlus(PIDOutput pidoutput, PIDSource pidsource, double period, double max, double min){
    
    _pidSource = pidsource;
    _pidOutput = pidoutput;
    _setPoint = 0;
    _period = period;
    _max = max;
    _min = min;
    _timer.schedule(new _bgTask(), 0, (long) (1000 * _period));
}
 
開發者ID:2729StormRobotics,項目名稱:Storm2014,代碼行數:11,代碼來源:TakeBackHalfPlusPlus.java

示例8: PIDController649

import edu.wpi.first.wpilibj.PIDOutput; //導入依賴的package包/類
/**
 * Allocate a PID object with the given constants for P, I, D, and F
 *
 * @param Kp the proportional coefficient
 * @param Ki the integral coefficient
 * @param Kd the derivative coefficient
 * @param Kf the feed forward term
 * @param source The PIDSource object that is used to get values
 * @param output The PIDOutput object that is set to the output percentage
 * @param period the loop time for doing calculations. This particularly
 * effects calculations of the integral and differential terms. The default
 * is 50ms.
 */
public PIDController649(double Kp, double Ki, double Kd, double Kf,
        PIDSource source, PIDOutput output,
        double period) {

    if (source == null) {
        throw new NullPointerException("Null PIDSource was given");
    }
    if (output == null) {
        throw new NullPointerException("Null PIDOutput was given");
    }

    m_controlLoop = new java.util.Timer();

    m_P = Kp;
    m_I = Ki;
    m_D = Kd;
    m_F = Kf;

    m_pidInput = source;
    m_pidOutput = output;
    m_period = period;

    m_controlLoop.schedule(new PIDTask(this), 0L, (long) (m_period * 1000));

    instances++;
    UsageReporting.report(UsageReporting.kResourceType_PIDController, instances);
    m_tolerance = new NullTolerance();
    m_outputDirection = true;
}
 
開發者ID:SaratogaMSET,項目名稱:649code2014,代碼行數:43,代碼來源:PIDController649.java

示例9: Tilter

import edu.wpi.first.wpilibj.PIDOutput; //導入依賴的package包/類
private Tilter() {
    leadscrew = new BoundedTalon(Constants.TILTER_CHANNEL, Constants.TILTER_UPPER_LIMIT_SWITCH_CHANNEL, Constants.TILTER_LOWER_LIMIT_SWITCH_CHANNEL);
    accel = new ADXL345_I2C(Constants.ACCELEROMETER_CHANNEL, ADXL345_I2C.DataFormat_Range.k2G);
    accelMeasurements = new Vector();
    updateAccel();        
    pendulum = new AnalogChannel(Constants.PENDULUM_CHANNEL);
    enc = new Encoder(Constants.LEADSCREW_ENCODER_A_CHANNEL, Constants.LEADSCREW_ENCODER_B_CHANNEL);
    enc.setDistancePerPulse(Constants.TILTER_DISTANCE_PER_PULSE);
    enc.start();
    Thread t = new Thread(new Runnable() {
        public void run() {
            Tilter.net = new NetworkIO();
        }
    });
    t.start();
    controller = new PIDController(Constants.PVAL_T, Constants.IVAL_T, Constants.DVAL_T, enc, new PIDOutput() {
        public void pidWrite(double output) {
            setLeadscrewMotor(output);
        }
    }); 
    controller.setPercentTolerance(0.01);
    controller.disable();
    updatePID();
    initialReadingTimer = new Timer();
    initialReadingTimer.schedule(new TimerTask() {

        public void run() {
            initialLeadLength = calcLeadscrewLength(getAveragedAccelBasedAngle());
        }
    }, INITIAL_ANGLE_MEASUREMENT_DELAY);
}
 
開發者ID:Team694,項目名稱:desiree,代碼行數:32,代碼來源:Tilter.java

示例10: RateLimitedPIDOutput

import edu.wpi.first.wpilibj.PIDOutput; //導入依賴的package包/類
public RateLimitedPIDOutput(double rate, PIDOutput output) {
  this.maxRate = rate;
  this.output = output;
}
 
開發者ID:TeamMeanMachine,項目名稱:meanlib,代碼行數:5,代碼來源:RateLimitedPIDOutput.java

示例11: DeltaPID

import edu.wpi.first.wpilibj.PIDOutput; //導入依賴的package包/類
public DeltaPID(IMUAdvanced source, PIDOutput output) 
{
	super(velP,velI,velD, 0, source, output);
	prevYaw=RobotMap.imu.getYaw();
}
 
開發者ID:FRC2832,項目名稱:Robot_2016,代碼行數:6,代碼來源:DeltaPID.java

示例12: PIDSpeedController

import edu.wpi.first.wpilibj.PIDOutput; //導入依賴的package包/類
public PIDSpeedController(PIDSource source, PIDOutput output, String subsystem, String controllerName) {
	controller = new PIDController(0, 0, 0, 0, source, output);

	LiveWindow.addActuator(subsystem, controllerName, controller);
}
 
開發者ID:chopshop-166,項目名稱:frc-2016,代碼行數:6,代碼來源:PIDSpeedController.java

示例13: calculate

import edu.wpi.first.wpilibj.PIDOutput; //導入依賴的package包/類
/**
 * Read the input, calculate the output accordingly, and write to the
 * output. This should only be called by the PIDTask and is created during
 * initialization.
 */
private void calculate() {
    boolean enabled;
    PIDSource pidInput;

    synchronized (this) {
        if (m_pidInput == null) {
            return;
        }
        if (m_pidOutput == null) {
            return;
        }
        enabled = m_enabled; // take snapshot of these values...
        pidInput = m_pidInput;
    }

    if (enabled) {
        double input;
        input = pidInput.pidGet();

        double result;
        PIDOutput pidOutput = null;

        synchronized (this) {
            m_error = m_setpoint - input;
            if (m_continuous) {
                if (Math.abs(m_error)
                        > (m_maximumInput - m_minimumInput) / 2) {
                    if (m_error > 0) {
                        m_error = m_error - m_maximumInput + m_minimumInput;
                    } else {
                        m_error = m_error
                                + m_maximumInput - m_minimumInput;
                    }
                }
            }

            if (m_I != 0) {
                double potentialIGain = (m_totalError + m_error) * m_I;
                if (potentialIGain < m_maximumOutput) {
                    if (potentialIGain > m_minimumOutput) {
                        m_totalError += m_error;
                    } else {
                        m_totalError = m_minimumOutput / m_I;
                    }
                } else {
                    m_totalError = m_maximumOutput / m_I;
                }
            }
            //******************************************************************************************************************
            if (m_error > 0 && m_prevError < 0 || m_error < 0 && m_prevError > 0) {
                m_totalError = 0;
            }
            //******************************************************************************************************************
            m_result = m_P * m_error + m_I * m_totalError + m_D * (m_error - m_prevError) + m_setpoint * m_F;
            m_errorDiff = m_prevError - m_error;
            m_prevError = m_error;

            if (m_result > m_maximumOutput) {
                m_result = m_maximumOutput;
            } else if (m_result < m_minimumOutput) {
                m_result = m_minimumOutput;
            }
            pidOutput = m_pidOutput;
            result = m_result * (m_outputDirection ? 1 : -1);
        }
        pidOutput.pidWrite(result);
    }
}
 
開發者ID:SaratogaMSET,項目名稱:649code2014,代碼行數:74,代碼來源:PIDController649.java

示例14: createPIDControllerFromConstants

import edu.wpi.first.wpilibj.PIDOutput; //導入依賴的package包/類
/**
 * Creates a {@link PIDController} from a {@link PIDConstants} object and
 * the specified source and output.
 * 
 * @param constants the PID constants
 * @param source the PID source
 * @param output the PID output
 * @return a shiny new PID controller
 */
public static PIDController createPIDControllerFromConstants(PIDConstants constants,
        PIDSource source, PIDOutput output) {
    return new PIDController(constants.p, constants.i, constants.d, constants.f, source, output);
}
 
開發者ID:RobotsByTheC,項目名稱:CMonster2015,代碼行數:14,代碼來源:DriveUtils.java


注:本文中的edu.wpi.first.wpilibj.PIDOutput類示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。