public Sejway() { // ls = new LightSensor(SensorPort.S2, true); ev3 = new EV3Brick (); }
public Sejway() { // ls = new LightSensor(SensorPort.S2, true); ev3 = new EV3Brick(); }
private void testController() { Console.WriteLine("Testing constoller ..."); EV3Brick ev3 = new EV3Brick(); ev3.connect(); // current status: normalize int motorAdeg = (int)(ev3.getMotorADegree() / 50.0); int motorBdeg = (int)(ev3.getMotorBDegree() / 300.0); /* * training data = [ * [[0,0,0,1], [0,1]], // down1 * [[0,1,1,1], [1,0]], // pick * [[1,1,1,0], [0,-1]], // up1 * [[1,0,1,1], [0,1]], // down2 * [[1,1,0,1], [-1,0]], // drop * [[0,1,0,0], [0,-1]] // up2 * ] */ var argv = new List <int[]> (); // current (A, B), desired (A, B) // down1 argv.Add(new [] { motorAdeg, motorBdeg, 0, 1 }); // argv.Add (new []{0,0,0,1}); argv.Add(new [] { 0, 1 }); // targets A, B // up1 // argv.Add (new []{1,1,1,0}); // argv.Add (new []{motorAdeg,motorBdeg,1,0}); // argv.Add (new []{0,-1}); // targets A, B var engine = Python.CreateEngine(); var paths = engine.GetSearchPaths(); paths.Add(pythonPath); engine.SetSearchPaths(paths); engine.GetSysModule().SetVariable("argv", argv); var scriptRuntime = Python.CreateRuntime(); scriptRuntime.GetSysModule().SetVariable("argv", argv); try { dynamic result = engine.ExecuteFile("script.py"); Console.WriteLine(result.outputs); var outputs = result.outputs; foreach (double output in outputs) { Console.WriteLine(output); } motorAdeg = (int)(outputs[0] * 50); motorBdeg = (int)(outputs[1] * 300); Console.WriteLine(motorAdeg + ", " + motorBdeg); ev3.moveMotorA(motorAdeg); ev3.moveMotorB(motorBdeg); Thread.Sleep(5000); } catch (Exception ex) { Console.WriteLine( "Oops! We couldn't execute the script because of an exception: " + ex.Message); } ev3.disconnect(); Console.WriteLine("Complete."); // Console.ReadLine(); }
static void Main(string[] args) { var ev3 = new EV3Brick <ColorSensor, UltrasonicSensor, TouchSensor, IRSensor>("usb"); ev3.Connection.Open(); ev3.Sensor1.Mode = ColorMode.Color; ev3.Sensor2.Mode = UltrasonicMode.Centimeter; ev3.Sensor3.Mode = TouchMode.Count; ev3.Sensor4.Mode = IRMode.Seek; ConsoleKeyInfo cki; Console.WriteLine("Press Q to quit"); sbyte speed = 0; do { cki = Console.ReadKey(true); //press a key switch (cki.Key) { case ConsoleKey.D1: //1 was pressed Console.WriteLine("S1: " + ev3.Sensor1.ReadAsString()); break; case ConsoleKey.D2: //2 was pressed Console.WriteLine("S2: " + ev3.Sensor2.ReadAsString()); break; case ConsoleKey.D3: //3 was pressed Console.WriteLine("S3: " + ev3.Sensor2.ReadAsString()); break; case ConsoleKey.D4: //4 was pressed Console.WriteLine("S4: " + ev3.Sensor2.ReadAsString()); break; case ConsoleKey.UpArrow: if (speed < 100) { speed = (sbyte)(speed + 10); } Console.WriteLine("Motor A speed set to " + speed); ev3.MotorA.On(speed); break; case ConsoleKey.DownArrow: if (speed > -100) { speed = (sbyte)(speed - 10); } Console.WriteLine("Motor A speed set to " + speed); ev3.MotorA.On(speed); break; case ConsoleKey.S: Console.WriteLine("Motor A off"); speed = 0; ev3.MotorA.Off(); break; case ConsoleKey.B: Console.WriteLine("Motor A break"); speed = 0; ev3.MotorA.Brake(); break; case ConsoleKey.T: int count = ev3.MotorA.GetTachoCount(); Console.WriteLine("Motor A tacho count:" + count); break; case ConsoleKey.C: Console.WriteLine("Clear tacho count"); ev3.MotorA.ResetTacho(); break; case ConsoleKey.M: Console.WriteLine("Enter position to move to."); string input = Console.ReadLine(); Int32 position; if (Int32.TryParse(input, out position)) { Console.WriteLine("Move to " + position); ev3.MotorA.MoveTo(50, position); } else { Console.WriteLine("Enter a valid number"); } break; } } while (cki.Key != ConsoleKey.Q); }
private void testController() { Console.WriteLine("Testing constoller ..."); EV3Brick ev3 = new EV3Brick (); ev3.connect (); // current status: normalize int motorAdeg = (int) (ev3.getMotorADegree()/50.0); int motorBdeg = (int) (ev3.getMotorBDegree()/300.0); /* training data = [ [[0,0,0,1], [0,1]], // down1 [[0,1,1,1], [1,0]], // pick [[1,1,1,0], [0,-1]], // up1 [[1,0,1,1], [0,1]], // down2 [[1,1,0,1], [-1,0]], // drop [[0,1,0,0], [0,-1]] // up2 ] */ var argv = new List<int[]> (); // current (A, B), desired (A, B) // down1 argv.Add (new []{motorAdeg,motorBdeg,0,1}); // argv.Add (new []{0,0,0,1}); argv.Add (new []{0,1}); // targets A, B // up1 // argv.Add (new []{1,1,1,0}); // argv.Add (new []{motorAdeg,motorBdeg,1,0}); // argv.Add (new []{0,-1}); // targets A, B var engine = Python.CreateEngine(); var paths = engine.GetSearchPaths(); paths.Add(pythonPath); engine.SetSearchPaths(paths); engine.GetSysModule ().SetVariable ("argv", argv); var scriptRuntime = Python.CreateRuntime(); scriptRuntime.GetSysModule().SetVariable("argv", argv); try { dynamic result = engine.ExecuteFile("script.py"); Console.WriteLine(result.outputs); var outputs = result.outputs; foreach (double output in outputs) { Console.WriteLine(output); } motorAdeg = (int) (outputs[0]*50); motorBdeg = (int) (outputs[1]*300); Console.WriteLine(motorAdeg + ", " + motorBdeg); ev3.moveMotorA(motorAdeg); ev3.moveMotorB(motorBdeg); Thread.Sleep(5000); } catch (Exception ex) { Console.WriteLine( "Oops! We couldn't execute the script because of an exception: " + ex.Message); } ev3.disconnect (); Console.WriteLine("Complete."); // Console.ReadLine(); }
static void Main(string[] args) { var ev3 = new EV3Brick<ColorSensor,UltrasonicSensor,TouchSensor,IRSensor>("usb"); ev3.Connection.Open(); ev3.Sensor1.Mode = ColorMode.Color; ev3.Sensor2.Mode = UltrasonicMode.Centimeter; ev3.Sensor3.Mode = TouchMode.Count; ev3.Sensor4.Mode = IRMode.Seek; ConsoleKeyInfo cki; Console.WriteLine("Press Q to quit"); sbyte speed = 0; do { cki = Console.ReadKey(true); //press a key switch(cki.Key){ case ConsoleKey.D1://1 was pressed Console.WriteLine("S1: " + ev3.Sensor1.ReadAsString()); break; case ConsoleKey.D2://2 was pressed Console.WriteLine("S2: " + ev3.Sensor2.ReadAsString()); break; case ConsoleKey.D3://3 was pressed Console.WriteLine("S3: " + ev3.Sensor2.ReadAsString()); break; case ConsoleKey.D4://4 was pressed Console.WriteLine("S4: " + ev3.Sensor2.ReadAsString()); break; case ConsoleKey.UpArrow: if(speed < 100) speed = (sbyte)(speed + 10); Console.WriteLine("Motor A speed set to " + speed); ev3.MotorA.On(speed); break; case ConsoleKey.DownArrow: if(speed > -100) speed = (sbyte)(speed - 10); Console.WriteLine("Motor A speed set to " + speed); ev3.MotorA.On(speed); break; case ConsoleKey.S: Console.WriteLine("Motor A off"); speed = 0; ev3.MotorA.Off(); break; case ConsoleKey.B: Console.WriteLine("Motor A break"); speed = 0; ev3.MotorA.Brake(); break; case ConsoleKey.T: int count = ev3.MotorA.GetTachoCount(); Console.WriteLine("Motor A tacho count:" +count); break; case ConsoleKey.C: Console.WriteLine("Clear tacho count"); ev3.MotorA.ResetTacho(); break; case ConsoleKey.M: Console.WriteLine("Enter position to move to."); string input = Console.ReadLine(); Int32 position; if(Int32.TryParse(input, out position)){ Console.WriteLine("Move to " + position); ev3.MotorA.MoveTo(50, position); } else{ Console.WriteLine("Enter a valid number"); } break; } } while (cki.Key != ConsoleKey.Q); }