예제 #1
0
    //  Constructor -> Is Called when the Object is created
    public VTOLUAV()
    {
        // When the Object is loaded from the sd card this method will not be called
            joystick.values.Add(phi_rolerate);
            joystick.values.Add(theta_rolerate);
            joystick.values.Add(psi_rolerate);
            joystick.values.Add(throttle);
            uavData.Add(joystick);
            //Factor = new UAVParameter ("Factory", 10, 0, 1000, 0); // Factor for Mixers
            //uavData.Add (Factor);
            lagesensor = new AHRS ("lagesensor", UsbHelper.GetDevicPathebyClass ("AHRS"));
            uavData.Add (lagesensor);
            ////gpsempfänger = new GPS ("gpsempfänger", UsbHelper.GetDevicPathebyClass ("GPS"), 38400);
            ////uavData.Add (gpsempfänger);
            ////empfängerusb = new UAVJoystick ("empfängerusb", "", new IntPtr ());
            ////uavData.Add (empfängerusb);

            // Servo Initialisierung
            servo1 = new PWM("servo1", 0, null, 1); //("Name", startwert, "null"=ausgabegerät_maestro, Kanal am Maestro)
            uavData.Add(servo1);

            servo1["LowLimit"].DoubleValue = -80;
            servo1["Neutral"].DoubleValue = 0;
            servo1["HighLimit"].DoubleValue = 80;
            servo1["Invert"].IntValue = 0;

            servo2 = new PWM ("servo2", 0, null, 2);
            uavData.Add (servo2);

            servo2 ["LowLimit"].DoubleValue = -80;
            servo2 ["Neutral"].DoubleValue = 0;
            servo2 ["HighLimit"].DoubleValue = 80;
            servo2 ["Invert"].IntValue = 0;

            servo3 = new PWM ("servo3", 90, null, 3);
            uavData.Add (servo3);

            servo3 ["LowLimit"].DoubleValue = -100;
            servo3 ["Neutral"].DoubleValue = 0;
            servo3 ["HighLimit"].DoubleValue = 100;
            servo3 ["Invert"].IntValue = 1;

            servo4 = new PWM ("servo4", 90, null, 4);
            uavData.Add (servo4);

            servo4 ["LowLimit"].DoubleValue = -100;
            servo4 ["Neutral"].DoubleValue = 0;
            servo4 ["HighLimit"].DoubleValue = 100;
            servo4 ["Invert"].IntValue = 1;

            servo5 = new PWM ("servo5", 0, null, 5);
            uavData.Add (servo5);

            servo5 ["LowLimit"].DoubleValue = -100;
            servo5 ["Neutral"].DoubleValue = 0;
            servo5 ["HighLimit"].DoubleValue = 100;
            servo5 ["Invert"].IntValue = 0;

            //// PID CONFIG
            kp_Höhe = new UAVParameter("kp_Höhe", 5, 0, 10, 0);
            kd_Höhe = new UAVParameter("kd_Höhe", 0, 0, 10, 0);
            ki_Höhe = new UAVParameter("ki_Höhe", 0, 0, 10, 0);
            uavData.Add(kp_Höhe);
            uavData.Add(kd_Höhe);
            uavData.Add(ki_Höhe);

            kp_Quer = new UAVParameter("kp_Quer", 5, 1, 10, 0);
            kd_Quer = new UAVParameter("kd_Quer", 0, 1, 10, 0);
            ki_Quer = new UAVParameter("ki_Quer", 0, 1, 10, 0);
            uavData.Add(kp_Quer);
            uavData.Add(kd_Quer);
            uavData.Add(ki_Quer);

            kp_Seite = new UAVParameter("kp_Seite", 5, 0, 10, 0);
            kd_Seite = new UAVParameter("kd_Seite", 0, 0, 10, 0);
            ki_Seite = new UAVParameter("ki_Seite", 0, 0, 10, 0);
            uavData.Add(kp_Seite);
            uavData.Add(kd_Seite);
            uavData.Add(ki_Seite);

            sp_Höhe = new UAVParameter("Höhe_SP", 0, -90, 90, 10);
            sp_Quer = new UAVParameter("Quer_SP", 0, -180, 180, 10);
            sp_Seite = new UAVParameter("Seite_SP", 0, -180, 180, 10);
            uavData.Add(sp_Höhe);
            uavData.Add(sp_Quer);
            uavData.Add(sp_Seite);

            PID_Out_Höhe = new UAVParameter("PID_Out_Höhe", 0, -100, 100, 0);
            PID_Out_Quer = new UAVParameter("PID_Out_Quer", 0, -100, 100, 0);
            PID_Out_Seite = new UAVParameter("PID_Out_Seite", 0, -100, 100, 0);
            uavData.Add(PID_Out_Höhe);
            uavData.Add(PID_Out_Quer);
            uavData.Add(PID_Out_Seite);
    }
예제 #2
0
    //  Constructor -> Is Called when the Object is created
    public VTOLUAV()
    {
        // When the Object is loaded from the sd card this method will not be called

            uavData.Add(totalpidgain);
            joystick.values.Add(phi_rolerate);
            joystick.values.Add(theta_rolerate);
            joystick.values.Add(psi_rolerate);
            joystick.values.Add(throttle);
            uavData.Add(joystick);

            lagesensor = new AHRS ("lagesensor", UsbHelper.GetDevicPathebyClass ("AHRS"));
            lagesensor["cursettings"].Value = "371,376,379,17,-127,-87";

            uavData.Add (lagesensor);
            gpsempfänger = new GPS ("gpsempfänger", UsbHelper.GetDevicPathebyClass ("GPS"), 38400);
            uavData.Add (gpsempfänger);
        //	empfängerusb = new UAVJoystick ("empfängerusb", "", new IntPtr ());
            //uavData.Add (empfängerusb);
        watch.Start();
            // Servo Initialisierung
            servo1 = new PWM ("servo1", 0, null, 1); //("Name", startwert, "null"=ausgabegerät_maestro, Kanal am Maestro)
            uavData.Add (servo1);
            servo1 ["LowLimit"].DoubleValue = -100;
            servo1 ["Neutral"].DoubleValue = 0;
            servo1 ["HighLimit"].DoubleValue = 100;
            servo1 ["Invert"].IntValue = 0;
            servo1.SetHomePosition(0);

            servo2 = new PWM ("servo2", 0, null, 2);
            uavData.Add (servo2);
            servo2 ["LowLimit"].DoubleValue = -100;
            servo2 ["Neutral"].DoubleValue = 0;
            servo2 ["HighLimit"].DoubleValue = 100;
            servo2 ["Invert"].IntValue = 0;
            servo2.SetHomePosition(0);

            servo3 = new PWM ("servo3", 100, null, 3);
            uavData.Add (servo3);
            servo3 ["LowLimit"].DoubleValue = -80;
            servo3 ["Neutral"].DoubleValue = 0;
            servo3 ["HighLimit"].DoubleValue = 80;
            servo3 ["Invert"].IntValue = 1;
            servo3.SetHomePosition(100);

            servo4 = new PWM ("servo4", 100, null, 4);
            uavData.Add (servo4);
            servo4 ["LowLimit"].DoubleValue = -80;
            servo4 ["Neutral"].DoubleValue = 0;
            servo4 ["HighLimit"].DoubleValue = 80;
            servo4 ["Invert"].IntValue = 1;
            servo4.SetHomePosition(100);

            servo5 = new PWM ("servo5", -80, null, 5);
            uavData.Add (servo5);

            servo5 ["LowLimit"].DoubleValue = -100;
            servo5 ["Neutral"].DoubleValue = 0;
            servo5 ["HighLimit"].DoubleValue = 100;
            servo5 ["Invert"].IntValue = 0;
            servo5.SetHomePosition(-80);

            servo6 = new PWM ("servo6", -80, null, 6);
            uavData.Add (servo6);

            servo6 ["LowLimit"].DoubleValue = -100;
            servo6 ["Neutral"].DoubleValue = 0;
            servo6 ["HighLimit"].DoubleValue = 100;
            servo6 ["Invert"].IntValue = 0;
            servo6.SetHomePosition(-80);

            // PID CONFIG --------------------------------------
            kp_Höhe = new UAVParameter ("kp_Höhe", 7  , 0, 10, 0);//Sinnvoll=1Höhe = new UAVParameter ("kp_Höhe", 1, max, min, updaterate)
            kd_Höhe = new UAVParameter ("kd_Höhe", 10 ,  -10, 10, 0);//Sinnvoll=-3  Achtung aus irgend einem Grund negativ !!!
            ki_Höhe = new UAVParameter ("ki_Höhe", 0  , 0, 10, 0);//Sinnvoll=1
            ks_Höhe = new UAVParameter ("ks_Höhe", 0.0, 0, 10, 0);//Sinnvoll=0.2

            lp_Höhe = new UAVParameter ("lp_Höhe", 1  , 0, 10, 0);
            ld_Höhe = new UAVParameter ("ld_Höhe", 1  , 0, 10, 0);
            li_Höhe = new UAVParameter ("li_Höhe", 1  , 0, 10, 0);
            ls_Höhe = new UAVParameter ("ls_Höhe", 0.2  , 0, 10, 0);

            uavData.Add (kp_Höhe);
            uavData.Add (kd_Höhe);
            uavData.Add (ki_Höhe);
            uavData.Add (ks_Höhe);

            uavData.Add (lp_Höhe);
            uavData.Add (ld_Höhe);
            uavData.Add (li_Höhe);
            uavData.Add (ls_Höhe);
            //----------------------------------------------------
            kp_Quer = new UAVParameter ("kp_Quer", 5  , 0, 10, 0);//Sinnvoll=1
            kd_Quer = new UAVParameter ("kd_Quer", 5  , 0, 10, 0);//Sinnvoll=3
            ki_Quer = new UAVParameter ("ki_Quer", 0  , 0, 10, 0);//Sinnvoll=1
            ks_Quer = new UAVParameter ("ks_Quer", 0.0, 0, 10, 0);//Sinnvoll=0.2

            lp_Quer = new UAVParameter ("lp_Quer", 1  , 0, 10, 0);
            ld_Quer = new UAVParameter ("ld_Quer", 1  , 0, 10, 0);
            li_Quer = new UAVParameter ("li_Quer", 1  , 0, 10, 0);
            ls_Quer = new UAVParameter ("ls_Quer", 0.2 , 0, 10, 0);

            uavData.Add (kp_Quer);
            uavData.Add (kd_Quer);
            uavData.Add (ki_Quer);
            uavData.Add (ks_Quer);

            uavData.Add (lp_Quer);
            uavData.Add (ld_Quer);
            uavData.Add (li_Quer);
            uavData.Add (ls_Quer);
            //----------------------------------------------------
            kp_Seite = new UAVParameter ("kp_Seite", -3  , -10, 10, 0);
            kd_Seite = new UAVParameter ("kd_Seite", 6  , -10, 10, 0);
            ki_Seite = new UAVParameter ("ki_Seite", 0  , -10, 10, 0);
            ks_Seite = new UAVParameter ("ks_Seite", 0  , -10, 10, 0);

            lp_Seite = new UAVParameter ("lp_Seite", 0.5  , 0, 10, 0);
            ld_Seite = new UAVParameter ("ld_Seite", 0.5  , 0, 10, 0);
            li_Seite = new UAVParameter ("li_Seite", 1  , 0, 10, 0);
            ls_Seite = new UAVParameter ("ls_Seite", 0  , 0, 10, 0);

            uavData.Add (kp_Seite);
            uavData.Add (kd_Seite);
            uavData.Add (ki_Seite);
            uavData.Add (ks_Seite);

            uavData.Add (lp_Seite);
            uavData.Add (ld_Seite);
            uavData.Add (li_Seite);
            uavData.Add (ls_Seite);
            //----------------------------------------------------
            sp_Höhe  = new UAVParameter ("Höhe_SP" , 0,  -90,  90, 10);
            sp_Quer  = new UAVParameter ("Quer_SP" , 0, -180, 180, 10);
            sp_Seite = new UAVParameter ("Seite_SP", 0, -180, 180, 10);
            uavData.Add (sp_Höhe);
            uavData.Add (sp_Quer);
            uavData.Add (sp_Seite);

            output_Höhe  = new UAVParameter("PID_Out_Höhe" ,0,-100,100,0);
            output_Quer  = new UAVParameter("PID_Out_Quer" ,0,-100,100,0);
            output_Seite = new UAVParameter("PID_Out_Seite",0,-100,100,0);

            uavData.Add(output_Höhe);
            uavData.Add(output_Quer);
            uavData.Add(output_Seite);
            SteuerMotorLeistung = new UAVParameter("SteuerMotorLeistung",0,0,100,0);
                HauptMotorLeistung = new UAVParameter("HauptMotorLeistung",-80,-100,100,0);
                HauptMotorDiff = new UAVParameter("HauptMotorDiff",0,-20,20,0);
            uavData.Add(SteuerMotorLeistung);
            uavData.Add(HauptMotorLeistung);
            uavData.Add(HauptMotorDiff);

            NewSeitePV = new UAVParameter("NewSeitePV",0,-180,180,0);
            uavData.Add(NewSeitePV);
            uavData.Add(output_Höhe);
    }