/// <summary> /// Initializes a new instance of the <see cref="GestureDetector"/> class. /// </summary> /// <param name="bodyIndex">Index of the body.</param> /// <param name="kinectSensor">Active sensor to initialize the VisualGestureBuilderFrameSource object with.</param> public GestureDetector(int bodyIndex, KinectSensor kinectSensor) { BodyIndex = bodyIndex; if (ReferenceEquals(null, kinectSensor)) { throw new ArgumentNullException("kinectSensor is null"); } // create the vgb source. The associated body tracking ID will be set when a valid body frame arrives from the sensor. _vgbFrameSource = new VisualGestureBuilderFrameSource(kinectSensor, 0); VgbFrameReader = _vgbFrameSource.OpenReader(); if (!ReferenceEquals(null, VgbFrameReader)) { VgbFrameReader.IsPaused = true; VgbFrameReader.FrameArrived += VgbFrameReader_FrameArrived; } //get all discrete and continuous postures var discretePostures = _dataAccessFacade.GetSubModalAccess().GetAll("Discrete Posture"); var continuousPostures = _dataAccessFacade.GetSubModalAccess().GetAll("Continuous Posture"); //add all the database filenames of each posture to posturePaths list List <string> posturePaths = new List <string>(); foreach (var discrete in discretePostures) { if (!ReferenceEquals(null, discrete.File)) { string internalFilePath = $"{_dataAccessFacade.GetGeneralSettings().GetDataDirectory()}" + $"modal/Discrete Posture/{discrete.File}"; posturePaths.Add(internalFilePath); } } foreach (var continuous in continuousPostures) { if (!ReferenceEquals(null, continuous.File)) { string internalFilePath = $"{_dataAccessFacade.GetGeneralSettings().GetDataDirectory()}" + $"modal/Continuous Posture/{continuous.File}"; posturePaths.Add(internalFilePath); } } //add the database files of the postures to the detector foreach (var posturePath in posturePaths) { Console.WriteLine("Loading VGB Database: '{0}'", posturePath); using (VisualGestureBuilderDatabase database = new VisualGestureBuilderDatabase(posturePath)) { _vgbFrameSource.AddGestures(database.AvailableGestures); } } }
public EEGReceiver() { _dataAccessFacade.GetModalAccess().AddIfNotExists("Emotion", "Affects or feels of a person"); _dataAccessFacade.GetSubModalAccess().AddIfNotExists("Emotion", "LALV", "Low arousal Low Valence", "emotionmodel.svm"); _dataAccessFacade.GetSubModalAccess().AddIfNotExists("Emotion", "LAHV", "Low arousal High Valence", "emotionmodel.svm"); _dataAccessFacade.GetSubModalAccess().AddIfNotExists("Emotion", "HALV", "High arousal Low Valence", "emotionmodel.svm"); _dataAccessFacade.GetSubModalAccess().AddIfNotExists("Emotion", "HAHV", "High arousal High Valence", "emotionmodel.svm"); _signaList = new List <double[]>(); _signalGet = true; _lastSecond = 0; }
public AccurateProxemicLogic() { _dataAccessFacade.GetModalAccess().AddIfNotExists("AccProxemic", "distance between spinalmids of persons"); _dataAccessFacade.GetSubModalAccess().AddIfNotExists("AccProxemic", "Intimate", "Close person distance", null); //0 _dataAccessFacade.GetSubModalAccess().AddIfNotExists("AccProxemic", "Personal", "Acquaintance distance", null); //1 _dataAccessFacade.GetSubModalAccess().AddIfNotExists("AccProxemic", "Social", "Stranger distance", null); //2 _dataAccessFacade.GetSubModalAccess().AddIfNotExists("AccProxemic", "Public", "Public distance", null); //3 _dataAccessFacade.GetSubModalAccess().AddIfNotExists("AccProxemic", "Events", "all distances", null); _bodies = new List <CustomBody>(); }
/// <summary> /// Listener of Kinect gesture frames. /// </summary> /// <param name="sender">The sender object.</param> /// <param name="e">The kinect gesture frame.</param> public void Gesture_FrameArrived(object sender, KinectGestureFrameArrivedArgs e) { CheckPerson.Instance.CheckIfExistsPerson(e.TrackingId); if (e.Time.HasValue) { //process discrete gestures if (!ReferenceEquals(null, e?.Frame?.DiscreteGestureResults)) { foreach (var discreteGesture in e.Frame.DiscreteGestureResults) { if (discreteGesture.Value.Detected) { var tuple = new Tuple <Person, string>(CheckPerson.Instance.PersonsId[e.TrackingId], discreteGesture.Key.Name); if (!_discreteGestures.Exists(d => d.Equals(tuple))) { _discreteGestures.Add(tuple); } //check in the variable if has processed, if not, check in the database and then add it to variable if (!_processedDiscreteGestureNames.Exists(pd => pd.Equals(discreteGesture.Key.Name))) { _dataAccessFacade.GetSubModalAccess().AddIfNotExists("Discrete Posture", discreteGesture.Key.Name, "Autogenerated", null); _processedDiscreteGestureNames.Add(discreteGesture.Key.Name); } if (discreteGesture.Value.Detected) { _dataAccessFacade.GetEventAccess().Add(CheckPerson.Instance.PersonsId[e.TrackingId], "Discrete Posture", discreteGesture.Key.Name, e.Time.Value, discreteGesture.Value.Confidence, 1); } else { _dataAccessFacade.GetEventAccess().Add(CheckPerson.Instance.PersonsId[e.TrackingId], "Discrete Posture", discreteGesture.Key.Name, e.Time.Value, discreteGesture.Value.Confidence, -1); } } } } //process continuous gestures if (!ReferenceEquals(null, e?.Frame?.ContinuousGestureResults)) { foreach (var continuousGesture in e.Frame.ContinuousGestureResults) { //check in the variable if has processed, if not, check in the database and then add it to variable if (!_processedDiscreteGestureNames.Exists(pd => pd.Equals(continuousGesture.Key.Name))) { _dataAccessFacade.GetSubModalAccess().AddIfNotExists("Continuous Posture", continuousGesture.Key.Name, "Autogenerated", null); _processedDiscreteGestureNames.Add(continuousGesture.Key.Name); } _dataAccessFacade.GetEventAccess().Add(CheckPerson.Instance.PersonsId[e.TrackingId], "Continuous Posture", continuousGesture.Key.Name, e.Time.Value, continuousGesture.Value.Progress, -1); } } } }
public ShouldersAngleLogic() { _bodies = new List <CustomBody>(); _dataAccessFacade.GetModalAccess().AddIfNotExists("Shoulders", "Shoulders data"); _dataAccessFacade.GetSubModalAccess().AddIfNotExists("Shoulders", "Angle", "angle between the shoulders", null); }
private void RefreshList() { //get all discrete and continuous postures var discretePostures = _dataAccessFacade.GetSubModalAccess().GetAll("Discrete Posture"); var continuousPostures = _dataAccessFacade.GetSubModalAccess().GetAll("Continuous Posture"); var postureList = new List <Posture>(); foreach (var discrete in discretePostures) { postureList.Add(new Posture(discrete.SubModalTypeId, discrete.File, discrete.Description, 0)); } foreach (var continuous in continuousPostures) { postureList.Add(new Posture(continuous.SubModalTypeId, continuous.File, continuous.Description, 1)); } postureCrudDataGrid.ItemsSource = postureList; postureCrudDataGrid.Items.Refresh(); }
public TrainerEntryPoint() { _dataAccessFacade.GetModalAccess().AddIfNotExists("Emotion", "Affects or feels of a person"); _dataAccessFacade.GetSubModalAccess().AddIfNotExists("Emotion", "LALV", "Low arousal Low Valence", "emotionmodel.svm"); _dataAccessFacade.GetSubModalAccess().AddIfNotExists("Emotion", "LAHV", "Low arousal High Valence", "emotionmodel.svm"); _dataAccessFacade.GetSubModalAccess().AddIfNotExists("Emotion", "HALV", "High arousal Low Valence", "emotionmodel.svm"); _dataAccessFacade.GetSubModalAccess().AddIfNotExists("Emotion", "HAHV", "High arousal High Valence", "emotionmodel.svm"); Windows = new List <Tuple <string, WindowBuilder> >(); Name = Properties.EEGEmotion2Channels.ClassificationModuleName; var configWindow = new Tuple <string, WindowBuilder>(Properties.EEGEmotion2Channels.ConfigWindowTitle, new WindowBuilder(new ConfigurationWindow(Properties.EEGEmotion2Channels.ConfigWindowTitle))); //var sceneWindow = new Tuple<string, WindowBuilder>(Properties.EEGEmotion2Channels.TrainerSceneSelectorTitle, // new WindowBuilder(new TrainerSceneSelector())); var fileWindow = new Tuple <string, WindowBuilder>(Properties.EEGEmotion2Channels.TrainerFileSelectorTitle, new WindowBuilder(new TrainerFileSelector())); Windows.Add(configWindow); //Windows.Add(sceneWindow); Windows.Add(fileWindow); }
public HeadAngleLogic() { _bodies = new List <CustomBody>(); _dataAccessFacade.GetModalAccess().AddIfNotExists("Neck Orientation", "Angles of neck"); _dataAccessFacade.GetSubModalAccess().AddIfNotExists("Neck Orientation", "Pitch", "rotation in X axis (nodding)", null); _dataAccessFacade.GetSubModalAccess().AddIfNotExists("Neck Orientation", "Yaw", "rotation in Y axis", null); _dataAccessFacade.GetSubModalAccess().AddIfNotExists("Neck Orientation", "Roll", "rotation in Z axis", null); _dataAccessFacade.GetSubModalAccess().AddIfNotExists("Neck Orientation", "Watching public", "The angle of the neck is watching to the public", null);//0 _dataAccessFacade.GetModalAccess().AddIfNotExists("Lean", "Lean of body"); _dataAccessFacade.GetSubModalAccess().AddIfNotExists("Lean", "X", "Lean in X axis (right or left)", null); _dataAccessFacade.GetSubModalAccess().AddIfNotExists("Lean", "Y", "Lean in Y axis (back and forward)", null); _dataAccessFacade.GetSubModalAccess().AddIfNotExists("Lean", "Upside", "Lean in Y axis (back and forward) is to up", null); //0 _dataAccessFacade.GetSubModalAccess().AddIfNotExists("Lean", "Straight", "Lean in Y axis (back and forward) is straight", null); //1 _dataAccessFacade.GetSubModalAccess().AddIfNotExists("Lean", "Downside", "Lean in Y axis (back and forward) is to down", null); //2 }
public VoiceLogic() { _dataAccessFacade.GetModalAccess().AddIfNotExists("Voice", "When a person talks"); _dataAccessFacade.GetSubModalAccess().AddIfNotExists("Voice", "Talked", "a person talked", null); }
private void SaveButton_Click(object sender, RoutedEventArgs e) { string error = ""; string name = nameTextBox.Text; if (String.IsNullOrEmpty(_safeFileName) && ReferenceEquals(null, _posture)) { error += "\n" + Properties.GestureConfiguration.Error_NoFile; } if (String.IsNullOrEmpty(name)) { error += "\n" + Properties.GestureConfiguration.Error_NoName; } if (_dataAccessFacade.GetSubModalAccess().Exists(PostureCRUD.PostureTypes[TypeCombobox.SelectedIndex], name) && ReferenceEquals(null, _posture)) { error += $"\n{Properties.GestureConfiguration.Error_ThePosture} {name} {Properties.GestureConfiguration.Error_PostureExists}"; } if (!String.IsNullOrEmpty(error)) { MessageBox.Show($"{Properties.GestureConfiguration.Error_ThereAreErrors}{error}", Properties.GestureConfiguration.Error); } else if (ReferenceEquals(null, _posture)) //is adding { string internalFilePath = $"{_dataAccessFacade.GetGeneralSettings().GetDataDirectory()}" + $"modal/{PostureCRUD.PostureTypes[TypeCombobox.SelectedIndex]}/{_safeFileName}"; if (!File.Exists(internalFilePath)) { File.Copy(FileNameTextBox.Text, internalFilePath); } _dataAccessFacade.GetSubModalAccess().Add(PostureCRUD.PostureTypes[TypeCombobox.SelectedIndex], name, DescriptionTextBox.Text, _safeFileName); Close(); } else //editing { var subModal = _dataAccessFacade.GetSubModalAccess().Get(PostureCRUD.PostureTypes[TypeCombobox.SelectedIndex], name); string oldPath = subModal.File; subModal.SubModalTypeId = name; subModal.File = _safeFileName ?? oldPath; subModal.Description = DescriptionTextBox.Text; _dataAccessFacade.GetSubModalAccess().Update(subModal); if (!String.IsNullOrEmpty(_safeFileName)) { string internalFilePath = $"{_dataAccessFacade.GetGeneralSettings().GetModalDirectory(PostureCRUD.PostureTypes[TypeCombobox.SelectedIndex])}/{_safeFileName}"; if (oldPath.Equals(internalFilePath)) { if (File.Exists(oldPath)) { File.Delete(oldPath); } if (!File.Exists(internalFilePath)) { File.Copy(FileNameTextBox.Text, internalFilePath); } } } Close(); } }