public SetParameterOptionsForm(UAVCommons.UAVParameter myparam)
        {
            param = myparam;
            InitializeComponent();

            errorProvider1.Clear();
        }
 /// <summary>
 /// Initialises all inputs and outputs
 /// </summary>
 /// <param name="uavdata"></param>
 /// <param name="powerlever"></param>
 /// <param name="throttle"></param>
 /// <param name="brakes"></param>
 public ThrottleSpeedBrakesMixer(string name, UAVCommons.MonitoredDictionary<string, object> uavdata,UAVParameter powerlever,UAVParameter throttle,UAVParameter brakes)
     : base(name,uavdata)
 {
     this.throttle = null;
     this.brakes = null;
     this.powerlever = powerlever;
 }
        public ParameterControl(GroundControlCore.GroundControlCore core, UAVCommons.UAVSingleParameter parameter)
            : base()
        {
            InitializeComponent();
            this.core = core;
            core.currentUAV.uavData.NewValue += new UAVCommons.MonitoredDictionary<string, UAVCommons.UAVSingleParameter>.NewValueHandler(uavData_NewValue);
            if (parameter != null) selectedParameter = parameter;

            Update_Combobox();
            if (parameter != null)
            {
                cb_Parameter.SelectedItem = parameter.GetStringPath();
                    }
            btn_output.ForeColor = Color.Blue;
            btn_output.Text = "Input";
            output = false;

            if (parameter != null)
            {
                ValueBar.Step = 1;
                valueTracker.TickFrequency = 10;
                valueTracker.TickStyle = TickStyle.Both;
                valueTracker.Maximum = Convert.ToDecimal(parameter.Max);
                valueTracker.Minimum = Convert.ToDecimal(parameter.Min);
                ValueBar.Minimum = valueTracker.Minimum;
                ValueBar.Maximum = valueTracker.Maximum;

                if (parameter.Max != null) tb_max.Text = parameter.Max.ToString();
                if (parameter.Min != null) tb_min.Text = parameter.Min.ToString();
                if ((parameter.Value != null) && (parameter.Value.ToString() != ""))
                {
                    if ((parameter.DoubleValue >= parameter.MinDoubleValue) &&
                        (parameter.DoubleValue <= parameter.MaxDoubleValue))
                    {

                    valueTracker.Value = Convert.ToDecimal(parameter.Value);
                    ValueBar.Value = Convert.ToDecimal(valueTracker.Value);
                    lbl_value.Text = parameter.Value.ToString();
                }
                else
                {
                    lbl_value.Text = "Value out of Bounds " + parameter.Value.ToString();
                }
            }

            }
            else {
                ValueBar.Minimum = 0;
                valueTracker.Minimum = 0;
                ValueBar.Maximum = 100;
                valueTracker.Maximum = 100;
                ValueBar.Value = 50;
                valueTracker.Value = 50;

                lbl_value.Text = "50";
            }
            this.valueTracker.Factor = 0.0001m;
        }
 /// <summary>
 /// Initialise Navigation
 /// Baue Navigations Objekt auf
 /// </summary>
 /// <param name="name"></param>
 /// <param name="ap"></param>
 /// <param name="gps"></param>
 public BaseNavigation(string name, UAVCommons.UAVStructure gps, UAVCommons.UAVStructure Performancedata)
     : base(name, null)
 {
     this.gps = gps;
     this.performanceData = Performancedata;
     gps.ValueChanged += new ValueChangedHandler(gps_ValueChanged);
     //Config Values
     values.Add(new UAVParameter("TargetPsi",0,360,0));
     values.Add(new UAVParameter("TargetAltitude", 1000, 999999, 0));
 }
        /// <summary>
        /// Returns the Direction from the Current Position to the given Waypoint
        /// </summary>
        /// <param name="gps">The Current GPS</param>
        /// <param name="myWaypoint">A Waypoint Object containing the position of the Target Waypoint</param>
        /// <returns>The Bearing from the Current Position to the Waypoint in degrees (0..360)</returns>
        public double GetDirection(GPS gps, UAVCommons.Navigation.WayPoint myWaypoint)
        {
            double lat1 = Convert.ToDouble(gps["lbRMCPositionLatitude"].Value);
            double lat2 = myWaypoint.Latitude;
            double lon1 = Convert.ToDouble(gps["lbRMCPositionLongitude"].Value);
            double lon2 = myWaypoint.Longitude;

            // Calculate Bearing in Radians
            double resultRad = (Math.Atan2((Math.Cos(lat1)*Math.Sin(lat2)) - (Math.Sin(lat1)*Math.Cos(lat2)*Math.Cos(lon2 - lon1)),
                               Math.Sin(lon2 - lon1)*Math.Cos(lat2)) % (2*Math.PI));

            return resultRad*(180/Math.PI);
        }
        public JoystickSettings(UAVCommons.UAVStructure joystick, UAVCommons.UAVDataMapping mapping)
        {
            InitializeComponent();
            this.mapping = mapping;
            this.joystick = joystick;
            string[] keys = new string[mapping.Mapping.Keys.Count];
            mapping.Mapping.Keys.CopyTo(keys, 0);
            List<string> stearingFunctions = new List<string>();
            stearingFunctions.Add("phi_rollrate");
            stearingFunctions.Add("theta_rollrate");
            stearingFunctions.Add("psi_rollrate");
            stearingFunctions.Add("throttle");
            stearingFunctions.Add("");
            comboBox1.Items.AddRange(stearingFunctions.ToArray());
            comboBox2.Items.AddRange(stearingFunctions.ToArray());
            comboBox3.Items.AddRange(stearingFunctions.ToArray());
            comboBox4.Items.AddRange(stearingFunctions.ToArray());
            comboBox5.Items.AddRange(stearingFunctions.ToArray());
            comboBox6.Items.AddRange(stearingFunctions.ToArray());
            if (mapping.Mapping.ContainsKey("Axis0"))
            {
                comboBox1.SelectedItem = mapping.Mapping["Axis0"];
            }
            if (mapping.Mapping.ContainsKey("Axis1"))
            {

                comboBox2.SelectedItem = mapping.Mapping["Axis1"];
            }
            if (mapping.Mapping.ContainsKey("Axis2"))
            {
                comboBox3.SelectedItem = mapping.Mapping["Axis2"];
            }
            if (mapping.Mapping.ContainsKey("Axis3"))
            {

                comboBox4.SelectedItem = mapping.Mapping["Axis3"];
            }
            if (mapping.Mapping.ContainsKey("Axis4"))
            {

                comboBox5.SelectedItem = mapping.Mapping["Axis4"];
            }
            if (mapping.Mapping.ContainsKey("Axis5"))
            {

                comboBox6.SelectedItem = mapping.Mapping["Axis5"];
            }
               // mapping.ValueChanged += new UAVCommons.UAVStructure.ValueChangedHandler(mapping_ValueChanged);
            joystick.ValueChanged += new UAVCommons.UAVStructure.ValueChangedHandler(joystick_ValueChanged);
            if (((FlightControlCommons.UAVJoystick)joystick).errorOnCreate) MessageBox.Show(this, "Es ist ein Fehler beim Verbinden mit dem Joystick aufgetrehten. Bitte prüfen Sie die Verbindung und die Treiber und starten Sie das Programm neu", "GroundControl", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1);
        }
        /// <summary>
        /// Calculates the Distance from the Current Position to the given Waypoint in ?? NM ??
        /// </summary>
        /// <param name="gps">A object representing the onboard GPS</param>
        /// <param name="currentWaypoint">A Waypoint representing the Target for the Distance Calc</param>
        /// <returns>The Distance in ?? NM?? as a double value</returns>
        public double Distance(UAVStructure gps, UAVCommons.Navigation.WayPoint currentWaypoint)
        {
            if ((gps.values["lbRMCPositionLongitude"] != null) && (gps.values["lbRMCPositionLatitude"] != null))
            {
                SharpGis.SharpGps.Coordinate gpslocation = new SharpGis.SharpGps.Coordinate(Convert.ToDouble(gps.values["lbRMCPositionLongitude"].Value), Convert.ToDouble(gps.values["lbRMCPositionLatitude"].Value));
                double greatCircleDistance = gpslocation.Distance(new SharpGis.SharpGps.Coordinate(currentWaypoint.Longitude, currentWaypoint.Latitude));
                double altDistance = Math.Max(Convert.ToDouble(gps.values["lbGGAAltitude"].Value), currentWaypoint.Altitude) - Math.Min(Convert.ToDouble(gps.values["lbGGAAltitude"].Value), currentWaypoint.Altitude);
                return Math.Sqrt(greatCircleDistance * greatCircleDistance + altDistance * altDistance);

            }
            else {
                // Log error
            }
            return 99999999;
        }
 /// <summary>
 /// Something has Changed in our Connections update the Pad!!!
 /// </summary>
 /// <param name="source"></param>
 /// <param name="arg"></param>
 /// <param name="state"></param>
 void currentUAV_CommunicationStatusChanged(UAVCommons.UAVBase source, UAVCommons.CommunicationEndpoint arg,string state)
 {
     try
     {
         if (this.dataGridView1.InvokeRequired)
         {
             this.dataGridView1.Invoke((MethodInvoker)delegate {
             UpdateGrid(source.knownEndpoints);
         });
         }
         else
         {
             UpdateGrid(source.knownEndpoints);
         }
     }
     catch (Exception ex) { }
 }
Exemple #9
0
        public BaseAutoPilot(string name, BaseNavigation navigation, UAVCommons.UAVStructure mygps, UAVCommons.UAVStructure myahrs, UAVCommons.UAVStructure performancedata)
            : base(name)
        {
            this.navigation = navigation;
            this.gps = mygps;
            this.ahrs = myahrs;
            this.PerformanceData = performancedata;

            //Pid Config
            // this.values.Add(new UAVCommons.UAVParameter("phi_P_gain", 1));
            this.values.Add(new UAVCommons.UAVParameter("psi_P_gain", 1));
            this.values.Add(new UAVCommons.UAVParameter("theta_P_gain", 1));

            //   this.values.Add(new UAVCommons.UAVParameter("phi_I_gain", 1));
            this.values.Add(new UAVCommons.UAVParameter("psi_I_gain", 1));
            this.values.Add(new UAVCommons.UAVParameter("theta_I_gain", 1));

            //   this.values.Add(new UAVCommons.UAVParameter("phi_D_gain", 1));
            this.values.Add(new UAVCommons.UAVParameter("psi_D_gain", 1));
            this.values.Add(new UAVCommons.UAVParameter("theta_D_gain", 1));

            Console.WriteLine("AutoPilot: Set Performance DataPoints");
            //TargetVector from Navigation
            this.values.Add(new UAVCommons.UAVParameter("bankangle", 1, PerformanceData["MaxBankRight"].Value, PerformanceData["MaxBankLeft"].Value));
               this.values.Add(new UAVCommons.UAVParameter("theta_out", 1, PerformanceData["MaxDescendAngle"].Value, PerformanceData["MaxClimbAngle"].Value));

            PerformanceData.ValueChanged += new UAVStructure.ValueChangedHandler(PerformanceData_ValueChanged);

            UAVParameter center = new UAVParameter("Center", 0, 180, -180);
            //Achtung muss noch unterscheiden zwischen drehung nach link oder rechts  ahrs.values["psi"], values["bankangle"],navigation.values["psi"]
            // vs speed muss noch berechnet werden und als eingangswert statt altitutude  ned so wichtig
            Console.WriteLine("AutoPilot: Init Bank PID");
            psiPid = new PIDLibrary.ParameterPID(values["psi_P_gain"], values["psi_I_gain"], values["psi_D_gain"], center, values["bankangle"], new PIDLibrary.GetDouble(psiPV), new PIDLibrary.GetDouble(psiSP), new PIDLibrary.SetDouble(Setpsi_out));
            Console.WriteLine("AutoPilot: Init ClimbDescend PID");
            if (((UAVStructure)gps).values.ContainsKey("lbGGAAltitude")) Console.WriteLine("Autopilot: Gps Altitude found");

            thetaPid = new PIDLibrary.ParameterPID(values["theta_P_gain"], values["theta_I_gain"], values["theta_D_gain"], gps["lbGGAAltitude"], values["theta_out"], navigation.values["TargetAltitude"]);

            //   PID QuerachsenPID = new PID(1, 1, 1, 90, -90, 2000, 1000, new GetDouble(GetPV), new GetDouble(GetSP),new SetDouble( SetResult));
            Console.WriteLine("AutoPilot: PID Enable");
               // phiPid.Enable();
        }
 void mapping_ValueChanged(UAVCommons.UAVSingleParameter param, bool isremote)
 {
     if (this.InvokeRequired)
     {
         this.Invoke(new MethodInvoker(UpdateBars));
     }
     else
     {
         UpdateBars();
     }
 }
 void joystick_ValueChanged(UAVCommons.UAVSingleParameter param, bool isremote)
 {
     try
     {
         mapping_ValueChanged(param, isremote);
     }
     catch (Exception ex) { }
 }
        void uavData_NewValue(UAVCommons.UAVSingleParameter param, bool isremote)
        {
            if (cb_Parameter.InvokeRequired) {
                cb_Parameter.Invoke(new MethodInvoker(Update_Combobox));
            }

               // param.ValueChanged += new UAVCommons.UAVParameter.ValueChangedHandler(parameter_ValueChanged);
        }
        private void UpdateValue(UAVCommons.UAVSingleParameter param)
        {
            if (param != null)
            {

                double min = 0;
                double max = 0;
                UAVSingleParameter p = selectedParameter;
                // Check if is Servo
                if ((selectedParameter is UAVStructure) && (((UAVStructure)selectedParameter).values.ContainsKey("Value")))
                {
                    p = ((UAVStructure)selectedParameter)["Value"];
                }

                    if ((p is UAVStructure) && (((UAVStructure)p)["Min"] != null))
                    {
                        min = Convert.ToDouble(((UAVStructure)p)["Min"].Value.ToString());

                    }
                    else
                    {
                        min = Convert.ToDouble(p.Min.ToString());
                    }

                    if ((p is UAVStructure) && (((UAVStructure)p)["Max"] != null))
                    {
                        max = Convert.ToDouble(((UAVStructure)p)["Max"].Value);

                    }
                    else
                    {
                        max = Convert.ToDouble(p.Max.ToString());
                    }

                double result = 0;
                if (Double.TryParse(Convert.ToString(param.Value), out result))
                {
                    if (output)
                    {
                        if (ValueBar.InvokeRequired)
                        {
                            ValueBar.Invoke((MethodInvoker)delegate
                            {
                                ValueBar.Minimum = Convert.ToDecimal(min);
                                ValueBar.Maximum = Convert.ToDecimal(max);
                                if ((Convert.ToDouble(param.Value) > min) && (Convert.ToDouble(param.Value) < max))
                                {
                                    ValueBar.Value = Convert.ToDecimal(Convert.ToDouble(param.Value));
                                }
                                ValueBar.Refresh();

                            });
                        }
                        else
                        {
                            ValueBar.Minimum = Convert.ToDecimal(min);
                            ValueBar.Maximum = Convert.ToDecimal(max);
                            if ((Convert.ToDouble(param.Value) > min) && (Convert.ToDouble(param.Value) < max))
                            {
                                ValueBar.Value = Convert.ToDecimal(Convert.ToDouble(param.Value));
                            }

                            ValueBar.Invalidate();

                        }
                    }
                    else
                    {
                        if (valueTracker.InvokeRequired)
                        {

                            valueTracker.Invoke((MethodInvoker)delegate
                            {

                                valueTracker.Maximum = Convert.ToDecimal(max);
                                valueTracker.Minimum = Convert.ToDecimal(min);
                                if ((Convert.ToDouble(param.Value) > min) && (Convert.ToDouble(param.Value) < max))
                                {
                                    valueTracker.Value = Convert.ToDecimal(Convert.ToDouble(param.Value));
                                }
                                valueTracker.TickFrequency = 10;
                                valueTracker.TickStyle = TickStyle.Both;

                            });

                            valueTracker.Invalidate();

                        }
                        else
                        {

                            // valueTracker.Value = Convert.ToDecimal(param.Value);
                            valueTracker.TickFrequency = 10;
                            valueTracker.TickStyle = TickStyle.Both;
                            valueTracker.Maximum = Convert.ToDecimal(max);
                            valueTracker.Minimum = Convert.ToDecimal(min);
                            if ((param.DoubleValue > min) && (param.DoubleValue < max))
                            {
                                valueTracker.Value = Convert.ToDecimal(param.Value);
                            }
                            valueTracker.Invalidate();
                        }
                    }
                    if (lbl_value.InvokeRequired)
                    {
                        //    lbl_value.Invoke((MethodInvoker)(() => lbl_value.Text = param.Value.ToString()));
                        tb_max.Invoke((MethodInvoker)(() => tb_max.Text = max.ToString()));
                        tb_min.Invoke((MethodInvoker)(() => tb_min.Text = min.ToString()));
                        //  lbl_value.Invalidate();
                    }
                    else
                    {

                        tb_max.Text = max.ToString();
                        tb_min.Text = min.ToString();

                        lbl_value.Text = param.Value.ToString();
                        lbl_value.Invalidate();
                    }
                }
            }
        }
Exemple #14
0
 public _3DViewer(UAVCommons.UAVBase uAVBase)
 {
     this.mycore = uAVBase;
     InitializeComponent();
 }
Exemple #15
0
 /// <summary>
 /// When Passing Waypoint, report to Ground Control
 /// </summary>
 /// <param name="waypoint"></param>
 void navi_PassingWayPoint(UAVCommons.Navigation.WayPoint waypoint)
 {
     UAVCommons.Commands.WriteToFlightLog logcmd = new WriteToFlightLog("Passing WayPoint: " + waypoint.Latitude + "," + waypoint.Longitude, DateTime.Now);
     this.SendCommandAsync(logcmd);
 }
Exemple #16
0
        /// <summary>
        ///  Calculate Distance to current Waypoint and if overhead call event
        /// </summary>
        /// <param name="param"></param>
        /// <param name="isremote"></param>
        void gps_ValueChanged(UAVCommons.UAVParameter param, bool isremote)
        {
            if (currentWaypoint != null)
            {
                if (Distance((UAVStructure)this.gps, currentWaypoint) < Convert.ToDouble(performanceData["WayPointThreshold"].Value))
                {
                    if (PassingWayPoint != null) PassingWayPoint(currentWaypoint);
                }

                values["TargetPsi"].Value = this.GetDirection((FlightControlCommons.GPS)gps, currentWaypoint);

                values["TargetAltitude"].Value = currentWaypoint.Altitude;
            }
            else {
            // What todo if there is no current WayPoint Set?

            }
        }
Exemple #17
0
        void currentUAV_CommunicationStatusChanged(UAVCommons.UAVBase source, UAVCommons.CommunicationEndpoint arg,string state)
        {
            if (ShowConnectionsStateChanges)
            {
                string connectedstring = "";
                if (arg.Connected())
                {
                    connectedstring = " established";
                }
                else
                {
                    connectedstring = " lost";
                }
                if (logbox.InvokeRequired)
                {
                    logbox.Invoke((MethodInvoker)delegate { logbox.Items.Insert(0, "Verbindung mit uav:" + arg.commType.ToString() + connectedstring); });

                }
            }
        }
Exemple #18
0
 public ExpoMixer(string name,UAVCommons.MonitoredDictionary<string,object> uavdata)
     : base(name,uavdata)
 {
 }
Exemple #19
0
        /// <summary>
        /// UAV Position hat sich Verändert aktualisiere Markierung auf der Karte
        /// </summary>
        /// <param name="param"></param>
        /// <param name="isremote"></param>
        public void MapView_ValueChanged(UAVCommons.CommunicationEndpoint source, UAVCommons.UAVSingleParameter arg)
        {
            //if (arg.Name == "lbRMCPositionLatitude")
            //{
            //    if (gMapControl1.InvokeRequired)
            //    {

            //        gMapControl1.Invoke(new MethodInvoker(UpdateUAVPosition));
            //    }
            //    else
            //    {
            //        UpdateUAVPosition();

            //    }
            //}
        }
 void uavData_ValueChanged(UAVCommons.UAVParameter param, bool isremote)
 {
     //if (Lastupdate.AddMilliseconds(-100) < DateTime.Now)
     //{
     //    Lastupdate = DateTime.Now;
     //    LoadDatafromAHRS();
     //}
 }
 private void UpdateBar(UAVCommons.UAVSingleParameter value, ColorProgressBar.ColorProgressBar bar)
 {
     bar.Minimum = Convert.ToInt32(value.Min) * 100;
     bar.Maximum = Convert.ToInt32(value.Max) * 100;
     bar.Value = Convert.ToInt32(Convert.ToDouble(value.Value) * 100);
     bar.Refresh();
 }
 void endpoint_LatencyUpdated(UAVCommons.CommunicationEndpoint source, int ms)
 {
     if (this.dataGridView1.InvokeRequired)
     {
         this.dataGridView1.Invoke((MethodInvoker)delegate
         {
             UpdateGrid(this.core.currentUAV.knownEndpoints);
         });
     }
     else
     {
         UpdateGrid(this.core.currentUAV.knownEndpoints);
     }
 }
Exemple #23
0
 public virtual void ahrs_ValueChanged(UAVCommons.UAVParameter param, bool isremote)
 {
     //lastphi = Convert.ToDouble(ahrs.values["phi"]);
     //lastpsi = Convert.ToDouble(ahrs.values["psi"]);
     //lasttheta = Convert.ToDouble(ahrs.values["theta"]);
 }
Exemple #24
0
 public BaseMixer(string name,UAVCommons.MonitoredDictionary<string, object> uavdata)
     : base(name,null)
 {
     this.uavdata = uavdata;
 }
Exemple #25
0
 public virtual void currentUAV_DataArrived(UAVCommons.CommunicationEndpoint source, UAVCommons.UAVSingleParameter arg)
 {
 }
Exemple #26
0
 /// <summary>
 /// UAV Position hat sich Verändert aktualisiere Markierung auf der Karte
 /// </summary>
 /// <param name="param"></param>
 /// <param name="isremote"></param>
 public virtual void MapView_ValueChanged(UAVCommons.CommunicationEndpoint source, UAVCommons.UAVSingleParameter arg)
 {
 }
Exemple #27
0
 void currentUAV_DataArrived(UAVCommons.CommunicationEndpoint source, UAVCommons.UAVParameter arg)
 {
 }
 /// <summary>
 /// Passing old Waypoint select new Waypoint
 /// </summary>
 /// <param name="waypoint"></param>
 void navi_PassingWayPoint(UAVCommons.Navigation.WayPoint waypoint)
 {
     if (values["WaypointIndex"].IntValue < Waypoints.Count) values["WaypointIndex"].IntValue++;
     navigation.currentWaypoint = Waypoints[values["WaypointIndex"].IntValue];
 }