示例#1
0
    // Use this for initialization
    void Start()
    {
        if (!stream.IsOpen)
        {
            stream.Open(); //Open the Serial Stream.
            Debug.Log("Cactus Controller Serial Port opened.");

            if (EnableAcceleration)
            {
                PollAcceleration();
            }
        }

        // Load Gestures
        string[] gestureNames = { "universal" };
        foreach (string gestureName in gestureNames)
        {
            string fileName = "Assets\\Gestures\\gesture_" + gestureName + ".xml"; // Application.persistentDataPath+"/gesture_"+gestureName+".xml";
            Debug.Log("Loading from: " + fileName);
            gestureLibrary[gestureName] = new GestureModel();
            gestureLibrary[gestureName].load(fileName);
        }

        ResetLEDs();
    }
示例#2
0
    private void SendGesture(int gestureNumber)
    {
        gestureButton.GetComponent <Image> ().sprite = gestureImage;
        GestureModel gesture = new GestureModel(gestureNumber);

        SystemFirebaseDBController.Instance.SetParam(MyConst.RPC_DATA_GESTURE, gesture);
    }
示例#3
0
    public void OnNotify(Firebase.Database.DataSnapshot dataSnapShot)
    {
        try {
            Dictionary <string, System.Object> rpcReceive = (Dictionary <string, System.Object>)dataSnapShot.Value;

            bool userHome = (bool)rpcReceive [MyConst.RPC_DATA_USERHOME];

            Dictionary <string, System.Object> param = (Dictionary <string, System.Object>)rpcReceive [MyConst.RPC_DATA_PARAM];

            if (param.ContainsKey(MyConst.RPC_DATA_GESTURE))
            {
                GestureModel gesture = JsonUtility.FromJson <GestureModel> (param [MyConst.RPC_DATA_GESTURE].ToString());
                if (userHome.Equals(!GameManager.isHost))
                {
                    SetEnemyGesture(gesture.gestureNumber);
                }
            }
        } catch (System.Exception e) {
            //do something with exception in future
        }
    }
示例#4
0
 public void SetGestureParam(GestureModel gesture)
 {
     SetParam(gesture.ToDictionary());
 }
示例#5
0
 public GestureEventArgs(GestureModel gesture, double probability)
 {
     Gesture     = gesture;
     Probability = probability;
 }
示例#6
0
        public LinkedList <ResultRow> validate(Dictionary <string, ICollection <ICollection <Touch> > > dataSets, string gesture, int nSubsets)
        {
            var results = new LinkedList <ResultRow>();

            foreach (var entry in dataSets)
            {
                var trueUser     = entry.Key;
                var trueUserData = entry.Value;

                var subsetSize = trueUserData.Count / nSubsets;
                var subsets    = new LinkedList <ICollection <Touch> > [nSubsets];

                var enu = trueUserData.GetEnumerator();

                //fill subsets
                for (int i = 0; i < nSubsets; i++)
                {
                    subsets[i] = new LinkedList <ICollection <Touch> >();
                    for (int j = 0; j < subsetSize; j++)
                    {
                        enu.MoveNext();
                        subsets[i].AddLast(enu.Current);
                    }
                }

                int curSubset = 1;
                foreach (var testSet in subsets)
                {
                    //build trainSet
                    var trainSet = new LinkedList <ICollection <Touch> >();
                    foreach (var subSet in subsets)
                    {
                        if (subSet != testSet)
                        {
                            foreach (var trace in subSet)
                            {
                                trainSet.AddLast(trace);
                            }
                        }
                    }

                    //use trainSet to train the model
                    var model = new GestureModel(trainSet);

                    //true positives, false negatives, false positives and true negatives
                    int TP = 0;
                    int FN = 0;
                    int FP = 0;
                    int TN = 0;

                    //calc estimated FRR
                    foreach (var testTrace in testSet)
                    {
                        if (model.evaluate(testTrace, true) == 0)
                        {
                            FN++;
                        }
                        else
                        {
                            TP++;
                        }
                    }

                    //double FRR = (double)nRejections / n;

                    //calc estimated FAR
                    foreach (var entry2 in dataSets)
                    {
                        var falseUser     = entry2.Key;
                        var falseUserData = entry2.Value;

                        if (trueUser == falseUser)
                        {
                            continue;
                        }

                        foreach (var falseUserTrace in falseUserData)
                        {
                            if (model.evaluate(falseUserTrace, true) == 0)
                            {
                                TN++;
                            }
                            else
                            {
                                FP++;
                            }
                        }
                    }

                    //save result
                    var result = new ResultRow();
                    result.gesture = gesture;
                    result.user    = trueUser;
                    result.subset  = curSubset++;
                    result.FN      = FN;
                    result.FP      = FP;
                    result.TP      = TP;
                    result.TN      = TN;
                    results.AddLast(result);
                }
            }

            return(results);
        }
 public MaximaTrackingSystem(TrackingSystem trackingSystem, int gestureId)
 {
     this._trackingSystem = trackingSystem;
     GestureModel = new GestureModel(gestureId);
 }