Download presentation
Presentation is loading. Please wait.
Published byJerome Sanders Modified over 9 years ago
1
How to Control a Robot Kickoff 2011
2
Why, How, Where? Sense, think, act Robot, laptop, your brain GameRobot Human Game State Score External Sensors Internal Sensors Robot’s Actions Robot’s Software Human Senses Drivers Brain User Interface
3
Moving in a Circle public void UserControlledCode() { while (true) { if (robot.isAutonomous == false) { lock (studentLock) { if (true) { //Ignore leftMotor.motorSpeed = 100; rightMotor.motorSpeed = -50; } Robot’s Actions Robot’s Software
4
Types and Variables Declare: double x; Assign: x = 3.5; Use: i nt y = x; z = 8 - y + x; x = x + y; = is assignment (not equals) C#: Value type vs. Reference type C# is case sensitive
5
Avoiding Obstacles Button = new InputPort((Cpu.Pin)FEZ_Pin.Digi tal.IO4, true, Port.ResistorMode.PullUp); if (Button.Read()) { leftMotor.motorSpeed = -60; rightMotor.motorSpeed = -30; Thread.Sleep(1000); }
6
More Avoiding Obstacles External Sensors Robot’s Actions Robot’s Software
7
Program Flow Decision Consequences Should I fire the balls? Fire the Balls More Code Code Should I fire the balls? Fire the Balls More Code Code Reload the Shooter
8
Program Flow if (isFiring) {shooter.shoot()} else {shooter.reload()} if (condition1) {consequent1} else if (condition2) {cosequent2} else {alternative} Use to change behavior depending on input
9
Tank Drive //-100<=motorSpeed<=100 //0<=Joystick values<=255 leftMotor.motorSpeed = ((double)(robot.UIAnalogVals[1] - 128) * 100 / (double)128); rightMotor.motorSpeed = ((double)(robot.UIAnalogVals[3] - 128) * 100 / (double)128);
10
More Tank Drive External Sensors Robot’s Actions Robot’s Software Human Senses Drivers Brain User Interface
11
Using Objects Cat john = new Cat(10); int johnsMass = john.Eat(5); john.Purr(); john.name = "Johnny"; john.name = "John"; Console.WriteLine(john.name); Console.WriteLine(johnsMass);
12
More Objects To create: new Type(arguments,...); Field or Property: variableName.member Methods: variableName.member(argument,...)
13
Robotic Objects Declare Objects here public class StudentCode { // Variables private Robot robot; private SimpleMotorController rightMotor; private InputPort Button; //More code
14
More Robotic Objects Instantiate Objects here public StudentCode(Robot robot) { Button = new InputPort((Cpu.Pin)FEZ_Pin.Digital. IO4, true, Port.ResistorMode.PullUp); leftMotor = new SimpleMotorController(robot, "COM1", 13); rightMotor.motorBrake = 0;
15
Arrays To Create: int[] myArray = new int[5]; To access elements: variableName[index]; Size: myArray.Length myArray[0] = 12; Arrays are 0 indexed 12 -34 7 0 3 myArray[] myArray[0] myArray[1] myArray[2] myArray[3] myArray[4]
16
Relational and Equality Operators Equality x == y Inequality x != y Less than x < y Less than or equal to x <= y Greater than x > y Greater than or equal to x >= y Turn numbers into booleans
17
Boolean Operators Exercise: (!(12-3 > 8) && (3*5 == 15)) || ( !(17 < 18) || true) if ( (time <= 30) && !(mode == 2) ) { driveForward(); } And true && true Or true || false Not !true
18
Tracing a Polygon int i = 0; while (i < 5) { leftMotor.motorSpeed = 50; rightMotor.motorSpeed = 50; Thread.Sleep(1000); leftMotor.motorSpeed = -50; Thread.Sleep(500); i++; }
19
Tracing a Polygon for (int i = 0; i < 5; i++) { leftMotor.motorSpeed = 50; rightMotor.motorSpeed = 50; Thread.Sleep(1000); leftMotor.motorSpeed = -50; Thread.Sleep(500); }
20
Loops initialize while (condition) { body postBody } for (initialize; condition; postbody) { body }
21
User Controlled Code public void UserControlledCode() { if (robot.isAutonomous == false) { lock (studentLock) { //All code for the teleoperated period goes here. It is in an infinite while loop so it is continuously executed. }
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.