예제 #1
0
 void UpdatePIDValues(PIDProfile newPIDprofile)
 {
     Debug.Log("set pid values to " + newPIDprofile.name);
     proximityPIDX          = new PidController(newPIDprofile.PIDxP, newPIDprofile.PIDxI, newPIDprofile.PIDxD, 1, -1);
     proximityPIDY          = new PidController(newPIDprofile.PIDyP, newPIDprofile.PIDyI, newPIDprofile.PIDyD, 1, -1);
     proximityPIDZ          = new PidController(newPIDprofile.PIDzP, newPIDprofile.PIDzI, newPIDprofile.PIDzD, 1, -1);
     yawPID                 = new PidController(newPIDprofile.yawP, newPIDprofile.yawI, newPIDprofile.yawD, 1, -1);
     proximityPIDX.SetPoint = 0;
     proximityPIDY.SetPoint = 0;
     proximityPIDZ.SetPoint = 0;
     yawPID.SetPoint        = 0;
 }
예제 #2
0
    public void ApplyProfile(PIDProfile profile, PIDAxis axis)
    {
        switch (axis)
        {
        case PIDAxis.Roll:
            Kp = profile.rollP;
            Ki = profile.rollI;
            Kd = profile.rollD;
            break;

        case PIDAxis.Pitch:
            Kp = profile.pitchP;
            Ki = profile.pitchI;
            Kd = profile.pitchD;
            break;

        case PIDAxis.Yaw:
            Kp = profile.yawP;
            Ki = profile.yawI;
            Kd = profile.yawD;
            break;
        }
    }
예제 #3
0
 public PIDRegulator(PIDProfile p)
 {
     profile = p;
 }