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); } } }
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); } } }
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); }
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); } } }