Exemplo n.º 1
0
 public Engine(IReader reader, IWriter writer, IAirportController airportController, IFlightController flightController)
 {
     this.reader            = reader;
     this.writer            = writer;
     this.airportController = airportController;
     this.flightController  = flightController;
 }
 public void Setup()
 {
     airport     = new Airport();
     airplane    = new LightAirplane();
     fController = new FlightController(airport);
     trip        = new Trip("Sofia", "Vidin", airplane);
     airport.AddTrip(trip);
 }
Exemplo n.º 3
0
 private void showFlightsMenu()
 {
     flightController = new FlightController();
     Console.WriteLine("Current Flights.");
     Console.WriteLine("======================");
     flightController.getAllFlights();
     Console.WriteLine();
     mainMenu();
 }
Exemplo n.º 4
0
 public CustomerView()
 {
     customerController = new CustomerController();
     flightController   = new FlightController();
     InitializeComponent();
     UpdateCustomerGrid();
     UpdateFlightGrid();
     txtCustomerId.Hide();
     txtFlightId.Hide();
 }
Exemplo n.º 5
0
 public TelloControllerViewModel(
     IUIDispatcher dispatcher,
     IUINotifier notifier,
     IFlightController controller,
     IRepository repository,
     ISession session)
     : base(dispatcher, notifier)
 {
     this.controller = controller ?? throw new ArgumentNullException(nameof(controller));
     this.repository = repository ?? throw new ArgumentNullException(nameof(repository));
     this.session    = session ?? throw new ArgumentNullException(nameof(session));
 }
        public MainPage()
        {
            this.InitializeComponent();

            // TODO: select the input controller - eventually this should
            // be configurable at runtime through a settings page, or be
            // automatically detected.
            //
            // For touchscreen control, use the FlightController class (default)
            flightController = new FlightController(leftStick, rightStick);
            // For spatial gesture control (HoloLens), use the GestureController class
            //flightController = new GestureController();

            crazyflieController = new CrazyflieController(flightController);
        }
 public CrazyflieController(IFlightController flightController)
 {
     this.flightController = flightController;
     bthCrtp = new BthCrtp();
 }
 public TakeOffCommand(IFlightController flightController)
 {
     this.flightController = flightController;
 }
 public void TestInit()
 {
     airport          = new Airport();
     flightController = new FlightController(airport);
 }
 public CrazyflieController(IFlightController flightController)
 {
     this.flightController = flightController;
     bthCrtp = new BthCrtp();
 }
Exemplo n.º 11
0
 public ClientController()
 {
     customerController = new CustomerController();
     flightController   = new FlightController();
 }
Exemplo n.º 12
0
        public static WindowsPilot Create(
            IAircraft aircraft,
            IGyroscope3 gyroscope,
            IAccelerometer3 accelerometer,
            IMagnetometer3 magnetometer,
            IFlightController controller,
            double thrustMax,
            double angularPositionPitchMax,
            double angularPositionRollMax,
            double angularVelocityYawMax)
        {
            var angularVelocityNoisy = new Subject <AngularVelocity3>();
            var accelerationNoisy    = new Subject <GForce3>();
            var magnetismNoisy       = new Subject <MagneticFluxDensity3>();

            IObservable <AngularVelocity3> angularVelocityOptimal =
                angularVelocityNoisy
                .Filter(
                    estimatedMeasurementNoiseCovariance: 0.0000025d,
                    estimatedProcessNoiseCovariance: 0d,
                    controlWeight: 0.5d * OutputFrequency / gyroscope.Frequency,
                    initialEstimate: 0d,
                    initialErrorCovariance: 1d)
                .Multiply(1.08d /*calibration*/);

            IObservable <GForce3> accelerationOptimal =
                accelerationNoisy
                .Filter(
                    estimatedMeasurementNoiseCovariance: 0.025d,
                    estimatedProcessNoiseCovariance: 0d,
                    controlWeight: 0.5d * OutputFrequency / accelerometer.Frequency,
                    initialEstimate: 0d,
                    initialErrorCovariance: 1d);

            IObservable <MagneticFluxDensity3> magnetismOptimal =
                magnetismNoisy
                .Filter(
                    estimatedMeasurementNoiseCovariance: 0.05d,
                    estimatedProcessNoiseCovariance: 0d,
                    controlWeight: 0.5d * OutputFrequency / magnetometer.Frequency,
                    initialEstimate: 0d,
                    initialErrorCovariance: 1d);

            var magnetismMinCalibration = new MagneticFluxDensity3(
                x: -0.273980716005263d,
                y: -0.245318477916743d,
                z: -0.237557110710227d);

            var magnetismMaxCalibration = new MagneticFluxDensity3(
                x: 0.148042531751317d,
                y: 0.177504483195312d,
                z: 0.155796981828076d);

            var ahrs = new Ahrs(angularVelocityOptimal, accelerationOptimal, magnetismOptimal, magnetismMinCalibration, magnetismMaxCalibration);

            var angularVelocityInterval = TimeSpan.FromTicks(Convert.ToInt64(TimeSpan.TicksPerSecond / gyroscope.Frequency));
            var accelerationInterval    = TimeSpan.FromTicks(Convert.ToInt64(TimeSpan.TicksPerSecond / accelerometer.Frequency));
            var magnetismInterval       = TimeSpan.FromTicks(Convert.ToInt64(TimeSpan.TicksPerSecond / magnetometer.Frequency));

            var yawTimer    = new Subject <object>();
            var yawInterval = TimeSpan.FromTicks(Convert.ToInt64(TimeSpan.TicksPerSecond / YawFrequency));

            var outputTimer    = new Subject <object>();
            var outputInterval = TimeSpan.FromTicks(Convert.ToInt64(TimeSpan.TicksPerSecond / OutputFrequency));

            SyncLoop.ProduceAsync(
                angularVelocityInterval, a => gyroscope.Read(), angularVelocityNoisy,
                accelerationInterval, a => accelerometer.Read(), accelerationNoisy,
                magnetismInterval, a => magnetometer.Read(), magnetismNoisy,
                yawInterval, a => null, yawTimer,
                outputInterval, a => null, outputTimer,
                WorkItemPriority.High).AsTask();

            IObservable <double> thrust =
                controller.Thrust.Select(value => value * thrustMax);

            IObservable <double> angularPositionPitchSetpoint =
                controller.Pitch.Select(value => value * angularPositionPitchMax);

            IObservable <double> angularPositionRollSetpoint =
                controller.Roll.Select(value => value * angularPositionRollMax);

            IObservable <double> angularPositionYawSetpoint =
                Extensions.ObservableExtensions
                .CombineLatest(
                    controller.Yaw,
                    yawTimer.TimeInterval(),
                    (yaw, timer, yawChanged, timerChanged) =>
                    new { Yaw = yaw, YawChanged = yawChanged, TimerElapsed = timerChanged, TimerInterval = timer.Interval })
                .Scan(
                    default(double),
                    (accu, t) =>
            {
                double yaw = accu;

                if (t.TimerElapsed)
                {
                    double dt = t.TimerInterval.TotalSeconds;
                    yaw      += t.Yaw * angularVelocityYawMax * dt;

                    if (yaw > AngleConvert.ToRadians(180d))
                    {
                        yaw -= AngleConvert.ToRadians(360d);
                    }
                    else if (yaw <= AngleConvert.ToRadians(-180d))
                    {
                        yaw += AngleConvert.ToRadians(360d);
                    }
                }

                return(yaw);
            });

            IObservable <EulerAngles> angularPositionSetpoint =
                Observable.CombineLatest(
                    angularPositionPitchSetpoint,
                    angularPositionRollSetpoint,
                    angularPositionYawSetpoint,
                    (pitch, roll, yaw) =>
                    new EulerAngles(pitch, roll, yaw));

            var pilot = new WindowsPilot(
                aircraft,
                thrust,
                angularPositionSetpoint,
                ahrs.AngularVelocityCalibrated,
                ahrs.AngularPosition);

            outputTimer.Subscribe(state => pilot.WriteOutput());
            return(pilot);
        }
Exemplo n.º 13
0
 public void SetUp()
 {
     this.airport          = new Airport();
     this.flightController = new FlightController(airport);
 }