// ustawianie nastepnego punktu kalibracji public void SetNextCalibrationPoint(double x, double y, double z = 0) { if (!calibrated) { // tu wypada spr sensownosc punktu calibrationPoints[nextPointIndex] = new Point3D(x, y, z); nextPointIndex++; mainEngine.AddTextToLog("Punkt kalibracji: " + x.ToString() + " " + y.ToString() + " " + z.ToString()); } if (nextPointIndex == 6) // tu jeszcze inne rzeczy trzeba sprawdzic (np. sensownosc punktow) { if (mainEngine.GetAppState() == ApplicationState.Calibration) { computeCalibrationCoeffs(); mainEngine.SetAppState(ApplicationState.Calibrated); calibrated = true; mainEngine.AddTextToLog("Kalibracja zakonczona!"); } else { // cos poszlo zle, skoro apka nie byla w stanie kalibracji a kalibracja sie odbywala... } } }
// dodawanie obiektu 'na plansze' wg wspolrzednych Kinecta public void AddUsedObject(string name, double kx, double ky, double kz) { if (possibleObjects.ContainsKey(name)) { SingleObject obj = possibleObjects[name]; if (!ExistsUsedObject(name)) { obj.KinectMoveTo(kx, ky, kz); usedObjects.Add(name, obj); mainEngine.AddTextToLog("ObjectManager: dodano na plansze obiekt o nazwie " + name); } else { mainEngine.AddTextToLog("ObjectManager: na planszy juz istnieje obiekt o nazwie " + name); } } else { mainEngine.AddTextToLog("ObjectManager: nie obsluguje obiektu o nazwie " + name + " na pozycje (" + kx + "," + ky + "," + kz + ")"); } }
public void Start() { recognizerInfo = GetKinectRecognizer(); if (recognizerInfo != null) { this.speechEngine = new SpeechRecognitionEngine(recognizerInfo.Id); // komendy do kalibracji Choices calibration = new Choices(); calibration.Add(new SemanticResultValue("calibrate", "CALIB_CALIBRATE")); calibration.Add(new SemanticResultValue("mark", "CALIB_MARK")); GrammarBuilder gbCalibration = new GrammarBuilder { Culture = recognizerInfo.Culture }; gbCalibration.Append(calibration); Grammar gCalibration = new Grammar(gbCalibration); // do obslugi bez wykorzystywania nazw obiektow Choices objNoNames = new Choices(); objNoNames.Add(new SemanticResultValue("move", "ONN_MOVE")); objNoNames.Add(new SemanticResultValue("there", "ONN_THERE")); objNoNames.Add(new SemanticResultValue("remove", "ONN_REMOVE")); GrammarBuilder gbONN = new GrammarBuilder { Culture = recognizerInfo.Culture }; gbONN.Append(objNoNames); Grammar gONN = new Grammar(gbONN); // ladowanie gramatyk speechEngine.LoadGrammar(gCalibration); speechEngine.LoadGrammar(gONN); speechEngine.SpeechRecognized += speechEngine_SpeechRecognized; speechEngine.SpeechRecognitionRejected += speechEngine_SpeechRecognitionRejected; speechEngine.SetInputToAudioStream( mainEngine.GetKinectSensor().AudioSource.Start(), new SpeechAudioFormatInfo(EncodingFormat.Pcm, 16000, 16, 1, 32000, 2, null)); speechEngine.RecognizeAsync(RecognizeMode.Multiple); } else { // cos zle z Kinectem mainEngine.AddTextToLog("SpeechRecognizer: " + "recognizerInfo = null"); } mainEngine.AddTextToLog("SpeechRec: " + "started"); }
protected override void OnMessage(MessageEventArgs e) { var msg = ""; JObject myJson = JObject.Parse(e.Data); System.Diagnostics.Debug.WriteLine("onmes: " + myJson.ToString()); if (myJson["type"].ToString().Contains("configure:")) { if (myJson["type"].ToString().Equals("configure:object_types")) { foreach (JObject obj in myJson["message"]) { //engine.AddTextToLog(obj["name"] + " " + obj["width"] + " " + obj["height"]); engine.GetObjectManager().AddObjectType(obj["name"].ToString(), int.Parse(obj["width"].ToString()), int.Parse(obj["height"].ToString())); } } else if (myJson["type"].ToString().Equals("configure:objects")) { foreach (JObject obj in myJson["message"]) { //engine.AddTextToLog(obj["name"] + " " + obj["width"] + " " + obj["height"]); string type = obj["type"].ToString(); if (engine.GetObjectManager().ExistsObjectType(type)) { ObjectType objType = engine.GetObjectManager().GetObjectTypes()[type]; engine.GetObjectManager().AddPossibleObject(new SingleObject(type, obj["name"].ToString(), objType.GetWidth(), objType.GetHeight())); } else { // error: nie ma takiego typu } } } else if (myJson["type"].ToString().Equals("configure:sizing")) { int height = int.Parse(myJson["message"]["height"].ToString()); int width = int.Parse(myJson["message"]["width"].ToString()); int gutter = int.Parse(myJson["message"]["gutter"].ToString()); engine.GetCalibrator().SetScreenHeight(height); engine.GetCalibrator().SetScreenWidth(width); } myJson["type"] = myJson["type"].ToString().Replace("configure:", "reconfigured:"); } else if (myJson["type"].ToString().Equals("calibration:listen_to_start")) { /*send(SpeechRecognizer.Orders.CALIBRATE); //tylko dla mockowania, do usuniecia jak bedzie kinect, on wysle sygnal po rozpoznaniu slowa * while (count < markers.Length) * { * send(SpeechRecognizer.Orders.MARK); //tylko dla mockowania, do usuniecia jak bedzie kinect, on wysle sygnal po rozpoznaniu slowa * } * * send(SpeechRecognizer.Orders.DONE); * return;*/ engine.GetSpeechRecognizer().CreateAndLoadGrammarWithObjectsNames(engine.GetObjectManager().GetPossibleObjectsNames()); } else if (myJson["type"].ToString().Equals("work:init")) { send(SpeechRecognizer.Orders.WORK); if (engine.SetAppStateToWorking()) { engine.AddTextToLog("Aplikacja w pelni gotowa do dzialania!"); } else { engine.AddTextToLog("Wystapil blad przy aktywacji aplikacji! Zresetuj program!"); } return; } else if (myJson["type"].ToString().Equals("object:set_active")) { engine.GetObjectManager().SelectObject(myJson["message"]["name"].ToString()); return; } if (_name.IsEmpty()) { msg = myJson.ToString(); } else { msg = String.Format("{0}: {1}", _name, myJson.ToString()); } if (engine != null) { //engine.AddTextToLog(msg); } Broadcast(msg); System.Diagnostics.Debug.WriteLine("aaa"); }