Ejemplo n.º 1
0
        private void Run()
        {
            //while (true)
            {
                lock (dataLock)
                {
                    var      input     = serial.GetData();
                    double[] inputData = new double[8];
                    for (int j = 0; j < 8; j++)
                    {
                        inputData[j] = input[j];
                    }
                    var percievedPositionArray = net.Think(inputData);

                    double   bestVal      = 0;
                    SetPoint bestSetPoint = new SetPoint();


                    for (int i = 0; i < percievedPositionArray.Length; i++)
                    {
                        if (percievedPositionArray[i] > bestVal)
                        {
                            bestVal      = percievedPositionArray[i];
                            bestSetPoint = setPointList[i];
                        }
                    }


                    var percievedPosition = bestSetPoint;

                    Globals.T1DesiredPosition = percievedPosition.T1Position;
                    Globals.T2DesiredPosition = percievedPosition.T2Position;
                    Globals.A1DesiredPosition = percievedPosition.A1Position;
                    Globals.A2DesiredPosition = percievedPosition.A2Position;
                    Globals.A3DesiredPosition = percievedPosition.A3Position;
                    Globals.B1DesiredPosition = percievedPosition.B1Position;
                    Globals.B2DesiredPosition = percievedPosition.B2Position;
                    Globals.B3DesiredPosition = percievedPosition.B3Position;
                    Globals.C1DesiredPosition = percievedPosition.C1Position;
                    Globals.C2DesiredPosition = percievedPosition.C2Position;
                    Globals.C3DesiredPosition = percievedPosition.C3Position;
                    Globals.D1DesiredPosition = percievedPosition.D1Position;
                    Globals.D2DesiredPosition = percievedPosition.D2Position;
                    Globals.D3DesiredPosition = percievedPosition.D3Position;

                    UnityCommunicationHub.WriteData(true);
                }
            }
        }
Ejemplo n.º 2
0
        private void Test()
        {
            lock (dataLock)
            {
                //var input = serial.GetData();
                //UnityCommunicationHub.ReadData();
                //var percievedPositionArray = net.Think(input);



                //inputTrainingData.Add(input);
                //outputTrainingData.Add(Globals.GetDoubles());

                //for (int i = 0; i < percievedPositionArray.Length; i++)
                //{
                //    percievedPositionArray[i] = percievedPositionArray[i] * 90;
                //}



                //Globals.T1DesiredPosition = (float)percievedPositionArray[0];
                //Globals.T2DesiredPosition = (float)percievedPositionArray[1];
                //Globals.A1DesiredPosition = (float)percievedPositionArray[2];
                //Globals.A2DesiredPosition = (float)percievedPositionArray[3];
                //Globals.A3DesiredPosition = (float)percievedPositionArray[4];
                //Globals.B1DesiredPosition = (float)percievedPositionArray[5];
                //Globals.B2DesiredPosition = (float)percievedPositionArray[6];
                //Globals.B3DesiredPosition = (float)percievedPositionArray[7];
                //Globals.C1DesiredPosition = (float)percievedPositionArray[8];
                //Globals.C2DesiredPosition = (float)percievedPositionArray[9];
                //Globals.C3DesiredPosition = (float)percievedPositionArray[10];
                //Globals.D1DesiredPosition = (float)percievedPositionArray[11];
                //Globals.D2DesiredPosition = (float)percievedPositionArray[12];
                //Globals.D3DesiredPosition = (float)percievedPositionArray[13];
                var percievedPosition = new SetPoint(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
                var rand = new Random();
                //UnityCommunicationHub.WriteData(true);

                var percievedPositionArray = new double[7];

                if (inputTrainingData.Count != 0)
                {
                    percievedPositionArray = net.Think(inputTrainingData[inputTrainingData.Count - 1]);

                    double   bestVal      = 0;
                    SetPoint bestSetPoint = new SetPoint();


                    for (int i = 0; i < percievedPositionArray.Length; i++)
                    {
                        if (percievedPositionArray[i] > bestVal)
                        {
                            bestVal      = percievedPositionArray[i];
                            bestSetPoint = setPointList[i];
                        }
                    }

                    if (lastSetPoint.Equals(bestSetPoint))
                    {
                        percievedPosition = setPointList[rand.Next(0, 7)];
                    }
                    else
                    {
                        percievedPosition = bestSetPoint;
                    }
                }
                else
                {
                    percievedPosition = setPointList[rand.Next(0, 7)];
                }

                if (positionsToVisit.Count > 0)
                {
                    percievedPosition = setPointList[positionsToVisit.First()];
                    for (int i = 0; i < 7; i++)
                    {
                        if ((7 - i) == positionsToVisit.Count)
                        {
                            percievedPositionArray[i] = 1;
                        }
                    }
                    positionsToVisit.RemoveAt(0);
                }

                Globals.T1DesiredPosition = percievedPosition.T1Position;
                Globals.T2DesiredPosition = percievedPosition.T2Position;
                Globals.A1DesiredPosition = percievedPosition.A1Position;
                Globals.A2DesiredPosition = percievedPosition.A2Position;
                Globals.A3DesiredPosition = percievedPosition.A3Position;
                Globals.B1DesiredPosition = percievedPosition.B1Position;
                Globals.B2DesiredPosition = percievedPosition.B2Position;
                Globals.B3DesiredPosition = percievedPosition.B3Position;
                Globals.C1DesiredPosition = percievedPosition.C1Position;
                Globals.C2DesiredPosition = percievedPosition.C2Position;
                Globals.C3DesiredPosition = percievedPosition.C3Position;
                Globals.D1DesiredPosition = percievedPosition.D1Position;
                Globals.D2DesiredPosition = percievedPosition.D2Position;
                Globals.D3DesiredPosition = percievedPosition.D3Position;

                UnityCommunicationHub.WriteData(true);
                lastSetPoint = percievedPosition;
                Thread.Sleep(200);
                for (int i = 0; i < 250; i++)
                {
                    var      input     = serial.GetData();
                    double[] inputData = new double[8];
                    for (int j = 0; j < 8; j++)
                    {
                        inputData[j] = input[j];
                    }
                    UnityCommunicationHub.ReadData();


                    inputTrainingData.Add(inputData);
                    outputTrainingData.Add(percievedPositionArray);
                    Thread.Sleep(1);
                }
            }
        }
Ejemplo n.º 3
0
        private void beginControllingHandButton_Click(object sender, EventArgs e)
        {
            int desiredMillisecondDelay = controls.timeNeededForChange;
            int arraySize = (desiredMillisecondDelay / 1000) * rate;

            reader.Read();
            rate = reader.getRate();

            double lowConcentration  = 0;
            double highConcentration = 0;

            //first get threshholds
            bool done = false;

            while (!done)
            {
                int     reads    = 0;
                decimal allReads = 0;
                MessageBox.Show("First try to let your mind wander until the next popup appears. Hit OK when ready.", string.Empty, MessageBoxButtons.OK);
                timer.Start();
                while (timer.ElapsedMilliseconds < Globals.threshholdAquisitionTime)
                {
                    decimal currentIn = (decimal)Math.Abs(reader.GetData()[Globals.inputNode]);
                    allReads += currentIn;
                    reads++;
                    currentAverageBox.Text = (allReads / reads).ToString();
                    currentInputBox.Text   = currentIn.ToString();
                }

                timer.Reset();
                lowConcentration     = (double)(allReads / reads);
                midpointTextBox.Text = lowConcentration.ToString();
                Console.WriteLine("Low concentration was: " + lowConcentration);

                reads    = 0;
                allReads = 0;

                MessageBox.Show("Next try to focus as hard as possible something. Hit OK when ready.", string.Empty, MessageBoxButtons.OK);

                timer.Start();
                while (timer.ElapsedMilliseconds < Globals.threshholdAquisitionTime)
                {
                    decimal currentIn = (decimal)Math.Abs(reader.GetData()[Globals.inputNode]);
                    allReads += currentIn;
                    reads++;
                    currentAverageBox.Text = (allReads / reads).ToString();
                    currentInputBox.Text   = currentIn.ToString();
                }
                timer.Reset();

                highConcentration    = (double)(allReads / reads);
                configuredMidPoint   = ((highConcentration + lowConcentration) / 2);
                midpointTextBox.Text = configuredMidPoint.ToString();

                Console.WriteLine("High concentration was: " + highConcentration);

                if (highConcentration > lowConcentration)
                {
                    done = true;
                }
            }

            MessageBox.Show("Ready to control hand. Press OK when ready.", string.Empty, MessageBoxButtons.OK);
        }
Ejemplo n.º 4
0
        private void Run()
        {
            //while (true)
            {
                lock (dataLock)
                {
                    var      input     = serial.GetData();
                    double[] inputData = new double[7];
                    for (int j = 0; j < 8; j++)
                    {
                        if (j < 1)
                        {
                            inputData[j] = input[j];
                        }
                        else if (j > 1)
                        {
                            inputData[j - 1] = input[j];
                        }
                    }
                    var percievedPositionArray = net.Think(inputData);

                    double   bestVal      = 0;
                    SetPoint bestSetPoint = new SetPoint();
                    bool     goodToMove   = false;

                    while (!goodToMove)
                    {
                        var index = 0;
                        for (int i = 0; i < percievedPositionArray.Length; i++)
                        {
                            if (percievedPositionArray[i] > bestVal)
                            {
                                bestVal      = percievedPositionArray[i];
                                index        = i;
                                bestSetPoint = setPointList[i];
                            }
                        }

                        if (bestVal > 0.95)
                        {
                            goodToMove = true;
                        }
                        else
                        {
                            PositionTextBox.Text = reverseIndexList[index];
                            goodToMove           = RunFocus();
                            if (!goodToMove)
                            {
                                percievedPositionArray[index] = 0;
                                bestVal = 0;
                            }
                        }
                    }

                    var percievedPosition = bestSetPoint;

                    Globals.T1DesiredPosition = percievedPosition.T1Position;
                    Globals.T2DesiredPosition = percievedPosition.T2Position;
                    Globals.A1DesiredPosition = percievedPosition.A1Position;
                    Globals.A2DesiredPosition = percievedPosition.A2Position;
                    Globals.A3DesiredPosition = percievedPosition.A3Position;
                    Globals.B1DesiredPosition = percievedPosition.B1Position;
                    Globals.B2DesiredPosition = percievedPosition.B2Position;
                    Globals.B3DesiredPosition = percievedPosition.B3Position;
                    Globals.C1DesiredPosition = percievedPosition.C1Position;
                    Globals.C2DesiredPosition = percievedPosition.C2Position;
                    Globals.C3DesiredPosition = percievedPosition.C3Position;
                    Globals.D1DesiredPosition = percievedPosition.D1Position;
                    Globals.D2DesiredPosition = percievedPosition.D2Position;
                    Globals.D3DesiredPosition = percievedPosition.D3Position;

                    UnityCommunicationHub.WriteData(true);
                }
            }
        }