Example #1
0
        public MainForm()
        {
            InitializeComponent();

            _videoPacketDecoderWorker = new VideoPacketDecoderWorker(PixelFormat.BGR24, true, OnVideoPacketDecoded);
            _videoPacketDecoderWorker.Start();

            _droneClient = new DroneClient("192.168.1.1");
            _droneClient.NavigationPacketAcquired += OnNavigationPacketAcquired;
            _droneClient.VideoPacketAcquired += OnVideoPacketAcquired;
            _droneClient.NavigationDataAcquired += data => _navigationData = data;

            tmrStateUpdate.Enabled = true;
            tmrVideoUpdate.Enabled = true;

            _playerForms = new List<PlayerForm>();

            _videoPacketDecoderWorker.UnhandledException += UnhandledException;

            controls = new GamepadState(0);

            DirectInput dinput = new DirectInput();
            myList = dinput.GetDevices(DeviceClass.GameController, DeviceEnumerationFlags.AttachedOnly);

            DeviceInstance myJoyInput = (DeviceInstance)myList[0];

            Guid myGuid = myJoyInput.InstanceGuid;
            myJoy = new Joystick(dinput, myGuid);

            myJoy.Acquire();

            yawMultiplier = (float)yawMultSetBox.Value;
        }
Example #2
0
        public MainForm()
        {
            InitializeComponent();

            face = new HaarCascade("haarcascade_frontalface_default.xml");
             //   grabber = new Capture();
              //  grabber.QueryFrame();
              //  Application.Idle += new EventHandler(FrameGrabber);

            this.WindowState = FormWindowState.Maximized;

            _videoPacketDecoderWorker = new VideoPacketDecoderWorker(PixelFormat.BGR24, true, OnVideoPacketDecoded);
            _videoPacketDecoderWorker.Start();

            _droneClient = new DroneClient("192.168.1.1");
            _droneClient.NavigationPacketAcquired += OnNavigationPacketAcquired;
            _droneClient.VideoPacketAcquired += OnVideoPacketAcquired;
            _droneClient.NavigationDataAcquired += data => _navigationData = data;

            tmrStateUpdate.Enabled = true;
            tmrVideoUpdate.Enabled = true;

            _playerForms = new List<PlayerForm>();

            _videoPacketDecoderWorker.UnhandledException += UnhandledException;

            _droneClient.Start();
        }
Example #3
0
        public DroneClient(string hostname)
        {
            _networkConfiguration = new NetworkConfiguration(hostname);
            _commandQueue = new ConcurrentQueue<ATCommand>();
            _navigationData = new NavigationData();

            _commandSender = new CommandSender(NetworkConfiguration, _commandQueue);
            _navdataAcquisition = new NavdataAcquisition(NetworkConfiguration, OnNavdataPacketAcquired, OnNavdataAcquisitionStarted, OnNavdataAcquisitionStopped);
            _videoAcquisition = new VideoAcquisition(NetworkConfiguration, OnVideoPacketAcquired);
        }
 public static bool TryParse(ref NavigationPacket packet, out NavigationData navigationData)
 {
     navigationData = new NavigationData();
     NavdataBag navdataBag;
     if (NavdataBagParser.TryParse(ref packet, out navdataBag))
     {
         navigationData = NavdataConverter.ToNavigationData(navdataBag);
         return true;
     }
     return false;
 }
        public static bool TryParse(ref NavigationPacket packet, out NavigationData navigationData)
        {
            navigationData = new NavigationData();
            NavdataBag navdataBag;

            if (NavdataBagParser.TryParse(ref packet, out navdataBag))
            {
                navigationData = NavdataConverter.ToNavigationData(navdataBag);
                return(true);
            }
            return(false);
        }
Example #6
0
        public static NavigationData ToNavigationData(NavdataBag navdataBag)
        {
            var navigationData = new NavigationData();

            var ardroneState = (def_ardrone_state_mask_t)navdataBag.ardrone_state;

            UpdateStateUsing(ardroneState, ref navigationData.State);

            var ctrlState = (CTRL_STATES)(navdataBag.demo.ctrl_state >> 0x10);

            UpdateStateUsing(ctrlState, ref navigationData.State);

            navigationData.Yaw   = DegreeToRadian * (navdataBag.demo.psi / 1000.0f);
            navigationData.Pitch = DegreeToRadian * (navdataBag.demo.theta / 1000.0f);
            navigationData.Roll  = DegreeToRadian * (navdataBag.demo.phi / 1000.0f);

            navigationData.Altitude = navdataBag.demo.altitude / 1000.0f;

            navigationData.Time = navdataBag.time.time;

            navigationData.Velocity.X = navdataBag.demo.vx / 1000.0f;
            navigationData.Velocity.Y = navdataBag.demo.vy / 1000.0f;
            navigationData.Velocity.Z = navdataBag.demo.vz / 1000.0f;

            navigationData.Battery.Low        = ardroneState.HasFlag(def_ardrone_state_mask_t.ARDRONE_VBAT_LOW);
            navigationData.Battery.Percentage = navdataBag.demo.vbat_flying_percentage;
            navigationData.Battery.Voltage    = navdataBag.raw_measures.vbat_raw / 1000.0f;

            navigationData.Magneto.Rectified.X = navdataBag.magneto.magneto_rectified.x;
            navigationData.Magneto.Rectified.Y = navdataBag.magneto.magneto_rectified.y;
            navigationData.Magneto.Rectified.Z = navdataBag.magneto.magneto_rectified.z;

            navigationData.Magneto.Offset.X = navdataBag.magneto.magneto_offset.x;
            navigationData.Magneto.Offset.Y = navdataBag.magneto.magneto_offset.y;
            navigationData.Magneto.Offset.Z = navdataBag.magneto.magneto_offset.z;

            navigationData.Video.FrameNumber = navdataBag.video_stream.frame_number;

            navigationData.Wifi.LinkQuality = 1.0f - ConversionHelper.ToSingle(navdataBag.wifi.link_quality);

            navigationData.GPS.latitude  = navdataBag.gps.latitude;
            navigationData.GPS.longitude = navdataBag.gps.longitude;
            navigationData.GPS.latFuse   = navdataBag.gps.latFuse;
            navigationData.GPS.lonFuse   = navdataBag.gps.lonFuse;

            return(navigationData);
        }
Example #7
0
        public static void InitializeDrone()
        {
            _videoPacketDecoderWorker = new VideoPacketDecoderWorker(PixelFormat.BGR24, true, OnVideoPacketDecoded);
            _videoPacketDecoderWorker.Start();

            _droneClient = new DroneClient("192.168.1.1");
            _droneClient.NavigationPacketAcquired += OnNavigationPacketAcquired;
            _droneClient.VideoPacketAcquired += OnVideoPacketAcquired;
            _droneClient.NavigationDataAcquired += data => _navigationData = data;

            _videoPacketDecoderWorker.UnhandledException += UnhandledException;

            _droneClient.Start();
            _droneClient.ResetEmergency();
            _droneClient.FlatTrim();

            _droneUnity = new ReceiveUdpModel();
        }
        public static NavigationData ToNavigationData(NavdataBag navdataBag)
        {
            var navigationData = new NavigationData();

            var ardroneState = (def_ardrone_state_mask_t) navdataBag.ardrone_state;
            UpdateStateUsing(ardroneState, ref navigationData.State);

            var ctrlState = (CTRL_STATES) (navdataBag.demo.ctrl_state >> 0x10);
            UpdateStateUsing(ctrlState, ref navigationData.State);

            navigationData.Yaw = DegreeToRadian*(navdataBag.demo.psi/1000.0f);
            navigationData.Pitch = DegreeToRadian*(navdataBag.demo.theta/1000.0f);
            navigationData.Roll = DegreeToRadian*(navdataBag.demo.phi/1000.0f);

            navigationData.Altitude = navdataBag.demo.altitude/1000.0f;

            navigationData.Time = navdataBag.time.time;

            navigationData.Velocity.X = navdataBag.demo.vx/1000.0f;
            navigationData.Velocity.Y = navdataBag.demo.vy/1000.0f;
            navigationData.Velocity.Z = navdataBag.demo.vz/1000.0f;

            navigationData.Battery.Low = ardroneState.HasFlag(def_ardrone_state_mask_t.ARDRONE_VBAT_LOW);
            navigationData.Battery.Percentage = navdataBag.demo.vbat_flying_percentage;
            navigationData.Battery.Voltage = navdataBag.raw_measures.vbat_raw/1000.0f;

            navigationData.Magneto.Rectified.X = navdataBag.magneto.magneto_rectified.x;
            navigationData.Magneto.Rectified.Y = navdataBag.magneto.magneto_rectified.y;
            navigationData.Magneto.Rectified.Z = navdataBag.magneto.magneto_rectified.z;

            navigationData.Magneto.Offset.X = navdataBag.magneto.magneto_offset.x;
            navigationData.Magneto.Offset.Y = navdataBag.magneto.magneto_offset.y;
            navigationData.Magneto.Offset.Z = navdataBag.magneto.magneto_offset.z;

            navigationData.Magneto.heading_angle = navdataBag.magneto.heading_unwrapped;

            navigationData.Video.FrameNumber = navdataBag.video_stream.frame_number;

            navigationData.Wifi.LinkQuality = 1.0f - ConversionHelper.ToSingle(navdataBag.wifi.link_quality);

            navigationData.raw = navdataBag;

            return navigationData;
        }
Example #9
0
        public MainForm()
        {
            InitializeComponent();

            _videoPacketDecoderWorker = new VideoPacketDecoderWorker(PixelFormat.BGR24, true, OnVideoPacketDecoded);
            _videoPacketDecoderWorker.Start();

            _droneClient = new DroneClient("192.168.1.1");
            _droneClient.NavigationPacketAcquired += OnNavigationPacketAcquired;
            _droneClient.VideoPacketAcquired += OnVideoPacketAcquired;
            _droneClient.NavigationDataAcquired += data => _navigationData = data;

            tmrStateUpdate.Enabled = true;
            tmrVideoUpdate.Enabled = true;

            _playerForms = new List<PlayerForm>();

            _videoPacketDecoderWorker.UnhandledException += UnhandledException;
        }
Example #10
0
        public MainForm()
        {
            InitializeComponent();

            uISettingsBindingSource.Add(UISettings.Default);

            droneClient = new DroneClient();
            droneClient.NavigationDataAcquired += data => navigationData = data;
            droneClient.VideoPacketAcquired += OnVideoPacketAcquired;
            droneClient.Start();

            InitializeVideo();

            LoadFontAwesome();
            InitInput();

            timerInput.Enabled = true;
            timerStatusUpdate.Enabled = true;
        }
Example #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);
     }
 }
Example #12
0
        private void UpdateNavigationData(NavigationPacket packet)
        {
            NavigationData navigationData;
            if (NavigationPacketParser.TryParse(ref packet, out navigationData))
            {
                OnNavigationDataAcquired(navigationData);

                _navigationData = navigationData;

                ProcessStateTransitions(navigationData.State);
            }
        }
Example #13
0
 private void OnNavigationDataAcquired(NavigationData navigationData)
 {
     if (NavigationDataAcquired != null)
         NavigationDataAcquired(navigationData);
 }
        private void OnNavigationData(NavigationData data)
        {
            if (_initialized) return;

            if (data.State.HasFlag(NavigationState.Command))
            {
                _client.Send(new ControlCommand(ControlMode.AckControlMode));
            }
            else
            {
                _client.Send(new ControlCommand(ControlMode.CfgGetControlMode));
                _initialized = true;
            }
        }
Example #15
0
        private void UpdateNavigationData(NavigationPacket packet)
        {
            NavigationData navigationData;
            if (NavigationPacketParser.TryParse(ref packet, out navigationData))
            {
                _navigationData = navigationData;


                ProcessTransition();

                if (NavigationDataUpdated != null)
                    NavigationDataUpdated(_navigationData);
            }
        }
Example #16
0
        private void OnButtonActivateClicked(object sender, EventArgs e)
        {
            if (IsIpAddress(textBoxHost.Text))
                hostname = textBoxHost.Text;

            droneClient = new DroneClient(hostname);

            droneClient.NavigationPacketAcquired += OnNavigationPacketAcquired;
            droneClient.VideoPacketAcquired += OnVideoPacketAcquired;
            droneClient.NavigationDataAcquired += data => navigationData = data;

            droneClient.Start();
            videoPacketDecoderWorker.Start();

            buttonActivate.Enabled = false;
            textBoxHost.Enabled = false;
            buttonDeactivate.Enabled = true;
            groupBoxControlPanel.Enabled = true;
            pictureBoxVideo.Enabled = true;
            buttonSwitchCamera.Enabled = true;
        }
 private void ProcessNavigationData(NavigationData data)
 {
     _navigationData = data;
 }