Ejemplo n.º 1
0
        public static double[] defaultControllerGains(PIDList type)
        {
            switch (type)
            {
            case PIDList.HdgBank:
                return(PilotAssistant.defaultHdgBankGains);

            case PIDList.HdgYaw:
                return(PilotAssistant.defaultHdgYawGains);

            case PIDList.Aileron:
                return(PilotAssistant.defaultAileronGains);

            case PIDList.Rudder:
                return(PilotAssistant.defaultRudderGains);

            case PIDList.Altitude:
                return(PilotAssistant.defaultAltitudeGains);

            case PIDList.VertSpeed:
                return(PilotAssistant.defaultVSpeedGains);

            case PIDList.Elevator:
                return(PilotAssistant.defaultElevatorGains);

            case PIDList.Throttle:
                return(PilotAssistant.defaultThrottleGains);

            default:
                return(PilotAssistant.defaultAileronGains);
            }
        }
Ejemplo n.º 2
0
        private void drawPIDvalues(PIDList controllerid, string inputName, string inputUnits, double inputValue, int displayPrecision, string outputName, string outputUnits, bool invertOutput = false, bool showTarget = true, bool doublesided = true)
        {
            PID_Controller controller = Utils.GetAsst(controllerid);

            controller.bShow = GUILayout.Toggle(controller.bShow, string.Format("{0}: {1}{2}", inputName, inputValue.ToString("N" + displayPrecision.ToString()), inputUnits), GeneralUI.toggleButton, GUILayout.Width(window.width - 50));

            if (controller.bShow)
            {
                if (showTarget)
                {
                    GUILayout.Label(string.Format("Target: ", inputName) + controller.SetPoint.ToString("N" + displayPrecision.ToString()) + inputUnits);
                }

                GUILayout.BeginHorizontal();
                GUILayout.BeginVertical();

                controller.PGain  = GeneralUI.labPlusNumBox(string.Format("Kp:", inputName), controller.PGain.ToString("G3"), 45);
                controller.IGain  = GeneralUI.labPlusNumBox(string.Format("Ki:", inputName), controller.IGain.ToString("G3"), 45);
                controller.DGain  = GeneralUI.labPlusNumBox(string.Format("Kd:", inputName), controller.DGain.ToString("G3"), 45);
                controller.Scalar = GeneralUI.labPlusNumBox(string.Format("Scalar:", inputName), controller.Scalar.ToString("G3"), 45);

                if (showPIDLimits)
                {
                    GUILayout.EndVertical();
                    GUILayout.BeginVertical();

                    if (!invertOutput)
                    {
                        controller.OutMax = GeneralUI.labPlusNumBox(string.Format("Max {0}{1}:", outputName, outputUnits), controller.OutMax.ToString("G3"));
                        if (doublesided)
                        {
                            controller.OutMin = GeneralUI.labPlusNumBox(string.Format("Min {0}{1}:", outputName, outputUnits), controller.OutMin.ToString("G3"));
                        }
                        else
                        {
                            controller.OutMin = -controller.OutMax;
                        }
                        controller.ClampLower = GeneralUI.labPlusNumBox("I Clamp Lower:", controller.ClampLower.ToString("G3"));
                        controller.ClampUpper = GeneralUI.labPlusNumBox("I Clamp Upper:", controller.ClampUpper.ToString("G3"));
                    }
                    else
                    { // used when response * -1 is used to get the correct output
                        controller.OutMin = -1 * GeneralUI.labPlusNumBox(string.Format("Max {0}{1}:", outputName, outputUnits), (-controller.OutMin).ToString("G3"));
                        if (doublesided)
                        {
                            controller.OutMax = -1 * GeneralUI.labPlusNumBox(string.Format("Min {0}{1}:", outputName, outputUnits), (-controller.OutMax).ToString("G3"));
                        }
                        else
                        {
                            controller.OutMax = -controller.OutMin;
                        }

                        controller.ClampUpper = -1 * GeneralUI.labPlusNumBox("I Clamp Lower:", (-controller.ClampUpper).ToString("G3"));
                        controller.ClampLower = -1 * GeneralUI.labPlusNumBox("I Clamp Upper:", (-controller.ClampLower).ToString("G3"));
                    }
                }
                GUILayout.EndVertical();
                GUILayout.EndHorizontal();
            }
        }
Ejemplo n.º 3
0
        public static double[] controllerGains(ConfigNode node, PIDList type)
        {
            double[] gains = new double[8];

            if (node == null)
            {
                return(defaultControllerGains(type));
            }

            double.TryParse(node.GetValue(pGain), out gains[0]);
            double.TryParse(node.GetValue(iGain), out gains[1]);
            double.TryParse(node.GetValue(dGain), out gains[2]);
            double.TryParse(node.GetValue(min), out gains[3]);
            double.TryParse(node.GetValue(max), out gains[4]);
            double.TryParse(node.GetValue(iLower), out gains[5]);
            double.TryParse(node.GetValue(iUpper), out gains[6]);
            double.TryParse(node.GetValue(scalar), out gains[7]);

            return(gains);
        }
Ejemplo n.º 4
0
 public static PID_Controller GetAsst(PIDList id)
 {
     return(PilotAssistant.controllers[(int)id]);
 }