예제 #1
0
 // Event method for 'DroneClient.NavigationPacketAcquired' action
 private void NavigationDataAcquired(NavigationData aPacket)
 {
     if (Active)
     {
         var data = new Apparatus.Output {
             Navigation = aPacket, LastInput = LastInput
         };
         EnqueueOutput(data);
     }
 }
예제 #2
0
파일: Heading.cs 프로젝트: Rutoka/AR.Drone
        public override void Contribute(Output aApparatusOutput, ref Input aApparatusInput)
        {
            float heading = CorrectRotation(aApparatusOutput.Navigation.Yaw);
            aApparatusInput.Yaw = Arithmetics.KeepInRange(CorrectRotation((Value) - (heading))*Agression, Input.Limits.Yaw.Min,
                                                          Input.Limits.Yaw.Max);
            
            if (CanBeObtained)
            {
                if (Math.Abs(aApparatusInput.Yaw) < 0.05) _obtainCandidates++;
                else _obtainCandidates = 0;

                if (_obtainCandidates > 3) Obtained = true;
            }
        }
예제 #3
0
파일: Landing.cs 프로젝트: Rutoka/AR.Drone
 public override void Contribute(Output aApparatusOutput, ref Input aApparatusInput)
 {
     aApparatusInput.Command = Input.Type.Land;
 }
예제 #4
0
 public override void Contribute(Output aApparatusOutput, ref Input aApparatusInput)
 {
     aApparatusInput.Gaz = Arithmetics.KeepInRange(Value, Input.Limits.Gaz.Min, Input.Limits.Gaz.Max);
 }
예제 #5
0
 public override void Contribute(Output aApparatusOutput, ref Input aApparatusInput)
 {
     aApparatusInput.Command = Input.Type.ResetEmergency;
     Obtained = true;
 }
예제 #6
0
 public override void Contribute(Output aApparatusOutput, ref Input aApparatusInput)
 {
     aApparatusInput.Command = Input.Type.FlatTrim;
     Obtained = true;
 }
예제 #7
0
 /// <summary>
 /// Enqueue drone's output data for autopilot handling based on current objective.
 /// </summary>
 /// <param name="aData">Output data to be enqueued</param>
 public void EnqueueOutput(Apparatus.Output aData)
 {
     ApparatusOutputQueue.Enqueue(aData);
 }
예제 #8
0
파일: Altitude.cs 프로젝트: Rutoka/AR.Drone
 public override void Contribute(Output aApparatusOutput, ref Input aApparatusInput)
 {
     float altitude = Arithmetics.KeepInRange(aApparatusOutput.Navigation.Altitude, Min, Max);
     aApparatusInput.Gaz = Arithmetics.KeepInRange(Diff(altitude)*Agression, Input.Limits.Gaz.Min, Input.Limits.Gaz.Max);
 }
예제 #9
0
 public override void Contribute(Output aApparatusOutput, ref Input aApparatusInput)
 {
     aApparatusInput.Pitch = -CalculateVelocityManeuver(aApparatusOutput.Navigation.Velocity.X);
 }
예제 #10
0
 public abstract void Contribute(Output aApparatusOutput, ref Input aApparatusInput);
예제 #11
0
 // Event method for 'DroneClient.NavigationPacketAcquired' action
 private void NavigationDataAcquired(NavigationData aPacket)
 {
     if (Active)
     {
         var data = new Apparatus.Output {Navigation = aPacket, LastInput = LastInput};
         EnqueueOutput(data);
     }
 }