Example #1
0
        private async void TranslateGestureForUAV1(GestureRecongizedArgs args)
        {
            FlightOperationMode _mode = _uav.mode;

            if (_mode == FlightOperationMode.landingOrTakingOff)
            {
                return;
            }

            // Switch Mode
            if (args.rightHandGesture.leftRightGestureArgs == LeftRightGesture.Right)
            {
                if (_mode == FlightOperationMode.idle)
                {
                    await SwitchMode(FlightOperationMode.navigate, _uav);
                }
                else
                {
                    await SwitchMode(FlightOperationMode.idle, _uav);
                }
            }

            // Control landing and takeoff
            if (_mode == FlightOperationMode.idle)
            {
                if (args.rightHandGesture.upwardDownwardGestureArgs == UpwardDownwardGesture.Down && !_uav.isLanded)
                {
                    await SwitchMode(FlightOperationMode.landingOrTakingOff, _uav);

                    await _uav.landing();
                    await SwitchMode(FlightOperationMode.idle, _uav);
                }
                else if (args.rightHandGesture.upwardDownwardGestureArgs == UpwardDownwardGesture.Up && _uav.isLanded)
                {
                    await SwitchMode(FlightOperationMode.landingOrTakingOff, _uav);

                    await _uav.takeOff();
                    await SwitchMode(FlightOperationMode.idle, _uav);
                }
            }
        }
Example #2
0
        protected async Task SwitchMode(FlightOperationMode newMode, Flight u, int delay = 0)
        {
            if (u.isSwitchingMode)
            {
                return;
            }

            if (u != null && u.isConnected)
            {
                u.isSwitchingMode = true;
                FlightModeChangedArgs args = new FlightModeChangedArgs();
                args.from = _uav.mode;
                args.to   = newMode;
                _uav.mode = newMode;
                if (delay > 0)
                {
                    await Task.Delay(delay);
                }
                u.isSwitchingMode = false;
                FlightModeChanged.Invoke(this, args);
            }
        }
Example #3
0
        private async void TranslateGestureForUAV2(GestureRecongizedArgs args)
        {
            FlightOperationMode _mode = _uav2.mode;

            if (_uav2.mode == FlightOperationMode.landingOrTakingOff)
            {
                return;
            }

            if (args.leftHandGesture.leftRightGestureArgs == LeftRightGesture.Left)
            {
                if (_mode == FlightOperationMode.idle)
                {
                    await SwitchMode(FlightOperationMode.navigate, _uav, 3000);
                }
                else
                {
                    await SwitchMode(FlightOperationMode.idle, _uav, 3000);
                }
            }

            if (_mode == FlightOperationMode.idle)
            {
                if (args.leftHandGesture.upwardDownwardGestureArgs == UpwardDownwardGesture.Down && !_uav2.isLanded)
                {
                    await SwitchMode(FlightOperationMode.landingOrTakingOff, _uav2);

                    await _uav2.landing();
                    await SwitchMode(FlightOperationMode.idle, _uav2);
                }
                else if (args.leftHandGesture.upwardDownwardGestureArgs == UpwardDownwardGesture.Up && _uav2.isLanded)
                {
                    await SwitchMode(FlightOperationMode.landingOrTakingOff, _uav2);

                    await _uav2.takeOff();
                    await SwitchMode(FlightOperationMode.idle, _uav2);
                }
            }
        }