Cortex Training -

Cortex Training -

ROBOTC for CORTEX ROBOTC Overview Thinking about Programming Background Information ROBOTC is developed specifically with teachers, classrooms, and competitions in mind

Complete programming solution for the VEX PIC, VEX Cortex, and several other popular robot platforms Only programming language for the VEX PIC and VEX Cortex with a real-time debugger Youll learn more about this feature later on Very similar to industry-standard C programming

Students get real-world programming experience Industry Standard Skillsets Java and C++, along with the Eclipse and Visual Studio IDEs have been used to program:

Microsoft Windows Mac OSX

US Navy UAV Drones Flight Simulators DVD Player Firmware Video Games Microwaves

CAT Scanners Smart Cars

Satellites Cell Phones Electronic Toys ROBOTC! Much, much more! ROBOTC Features

Platform Type Allows you to toggle ROBOTCs programming mode between the VEX PIC and VEX Cortex, will enable features and commands for the system ROBOTC Start Page

Displays the latest ROBOTC news, version of ROBOTC, and ROBOTC Resources Sample Programs Over 75 Included ROBOTC Sample programs, organized by robot behavior

ROBOTC Help In-depth explanations about the ROBOTC interface, commands, debugger, etc Function Library Lists the available functions, with a description.

List of available functions will expand or shrink depending on the Menu Level Menu Level Customizes the ROBOTC interface and Function Library based on the users experience level

Motors and Sensor Setup One central place to configure and name all of the motors and sensors attached to your Cortex VEX Cortex Download Method

Allows you to specify: 1. 2. How programs are downloaded Whether the Cortex looks for a VEXnet connection when it starts up

Download Using VEXnet or USB is always the safe choice, but the Cortex will look for a VEXnet connection for up to10 seconds before running code Program Planning Planning and Behaviors

Behavior Based Programming A behavior is anything your robot does: turning on a single motor, moving forward, tracking a line, navigating a maze Three main types of behaviors: basic behaviors single commands to the robot (turn on a motor) simple behaviors simple task performed by the robot (move

forward, track a line) and complex behaviors robot performs a complex task (solve the maze) Complex behaviors can always be broken down into simple behaviors, which are then broken down into basic behaviors

The Labyrinth Challenge The Labyrinth Challenge Programming Discussion The Challenge: The Labyrinth The Solution: ??? The Programmers (your) Role

Plan out the robots path / actions - Pseudocoding Understanding Program Flow and Behavior Based Programming Translate the Pseudocode into real code The Robots role To carry out your instructions! The Solution: Programmer and Robot working

together, fulfilling their roles True for all robotic challenges! Comments Comments are used to make notes in code for the human programmers Every sample program contains comments pertaining to robot configuration, ROBOTC

commands, robot behavior, etc // Single line comment everything after // is ignored by the ROBOTC compiler /* Multi-line comment*/ - everything between the /* and */ symbols is ignored by the ROBOTC compiler Pseudocode

Pseudocode is a shorthand notation for programming which uses informal programming structures (if touch1 is pressed) verbal descriptions of code (move forward, stop) Emphasis is placed on expressing the behavior or outcome of each portion of code rather than on correct syntax (it should be reasonable,

though). Your lines of Pseudocode should also be listed in the same order as they will appear in the ROBOTC Program Pseudocode Sample Pseudocode:

Pseudocode Additional Details: Pseudocode is used to outline a program before translating it into proper syntax. Helps in the initial planning of a program, by creating the logical framework and sequence of the code. An additional benefit is that it can be translated into different programming languages and is therefore

somewhat universal. Putting it all Together Effective Program Planning is essential to writing correct code. Carrying out that plan is equally important! Once you have your plan, dont try to implement it all at once!

Systematically add sections of code, testing at every step! Behavior Based Programming Additional Resources VEX Cortex Video Trainer (VCVT)

(In Development) 45 tutorial videos (60+ planned) teach step-by-step how to program using ROBOTC and the Cortex system 75+ pages of supplementary helper guides 40+ programming challenges

Freely available at Behavior Based Programming ROBOTC Natural Language ROBOTC Natural Language

New, developed specifically for PLTW Goal is to lower the barrier of entry into syntax-based programming by simplifying the code and using more natural command names Lines of code for common robot behaviors are consolidated into single commands

forward(); lineTrackforTime(); stop(); untilBump();

ROBOTC Natural Language The Natural Language is an additional Platform Type in ROBOTC: ROBOT Motion Commands that cause the entire robot to perform a

behavior Setup Allows you to specify what type of robot configuration you have from prespecified models (RECBOT,

Swervebot) Movement Commands that allow you to control individual motors / servos

Special Commands that control the more unique VEX Hardware LEDs and Flashlights Until

Commands that allow you to create behaviors where the robot acts until a certain event Button Press Encoder Count Reached

Wait Commands that wait for an elapsed amount of time in seconds or milliseconds

Sample Programs Moving Forward and Backward PLTW Template PLTW Template Top comment section for students to

fill their personal information, as well as program planning work. Section between lines 18 and 21 is designated for the actual program. Testbed Overview

GTT Testbed VEX Cortex Microcontroller VEX Cortex (VEX 2.0) 12 digital ports Touch Sensor, Ultrasonic Rangefinder, Shaft Encoders

8 analog inputs Light Sensors, Line Tracking Sensors, Potentiometers, Accelerometers, Gyroscope 10 motor ports 8 standard 3-wire PWM 2 new 2-wire motor ports

Built-In VEXnet Connection Enables Wireless Programming, Wireless Debugging, and Remote Control Two UART Ports (Serial) LCD Screen, Other External Devices

One I2C port Will connect to multiple new smart sensors Download Firmware Download Firmware Troubleshooting

Computer will not Recognize the Cortex Was the correct startup sequence followed when connecting the Cortex to the computer? Is the connected battery sufficiently charged? Does the Cortex need to be power cycled? Try another USB port on the computer. Make sure that your computer allows for new hardware to be connected. Extremely locked down

computers may prohibit new hardware such as the VEX Cortex from being connected. Motors and Sensors Setup Open the PLTW Template Save the file as testbed default Go to Motors and Sensors Setup

Motors and Sensors Setup The Motors and Sensor Setup window allows you to give your motors and sensors custom names. The names, however: Should be descriptive of the sensor or motor they refer to (rightMotor, frontBumper, ect.) Must be all one word made up of letters, numbers, and spaces

Must contain no special characters (&, $, /, ect.) Cannot already be a ROBOTC reserved word (task, motor, true) Motors and Sensors Setup Motors and Sensors Setup

Motors and Sensors Setup Debugger Window Power on the Cortex. View motor and sensor debugger windows.

Click Robot. Click Compile and Download Program. Click Robot, Debug Windows, then Motors Click Robot, Debug Windows, then Sensors

Increase the debugger window area at the bottom Note that this window can be viewed any time by clicking Robot then Debugger. Debugger Window Debugger Window

ROBOTC Basics Part 1 Part 2 Basic Programming: Motor and Wait Commands VEX Motors

3 Main Types: Original 3-wire motor Newer 2-wire motor 269 Newer 2-wire motor 393 All motors are programmed the same way in ROBOTC Accept values between 127 (full forward) and -127

(full reverse) Connecting the Motors Two-wire motors can be plugged directly into MOTOR ports 1 & 10 on the Cortex, and 2-9 using the Motor

Controller 29 Zip tie wires together to prevent loose connections Lets write a program! Step 1 complete project information and pseudocode.

Sample Program 1 PLTW 5/22/11 Period 3 Turn on one motor for 5 seconds. Turn right motor on Wait 5 seconds Turn right motor off

Motor 2 on for 5 Seconds Displays configuration changes from the Motors and Sensors Setup Defines the main task of the robot All commands belonging to task main must

be in-between these curly braces Motor 2 on for 5 Seconds Turns the port2 rightMotor on at half power forward Motor 2 on for 5 Seconds

Causes the robot to wait here in the program for 5.0 seconds Motor 2 on for 5 Seconds Stops the port2 rightMotor.

End Result: rightMotor spins for 5.0 seconds. Lets write a program! Sample Program 1 PLTW 5/22/11 Period 3

Turn on one motor for 5 seconds. Turn right motor on Wait 5 seconds Turn right motor off Quick ROBOTC Exercise Create this program yourself and download it to the Robot

Using the Program Debug Window Making Changes to a Sample Program 1. Turn on leftMotor Download and watch result 2. Reverse both motors Download and watch result Renaming and Reversing Robot > Motors and Sensors Setup

Optional with Motors (not Sensors) Giving Motors custom names Reversing motor polarity Motor Exercises 1. Turn the rightMotor on forward at half speed for 5 seconds, then stop. 2. Turn the leftMotor on in reverse at threefourths speed for 2.5 seconds, then stop.

3. Turn both motors on at full power, and spinning in the same direction, for 7.25 seconds, then stop. GTT Example Exercise: Robot Drag Race Task description: Program a robot dragster

to travel as fast as possible over 20 feet. Robot Drag Race Notice comments within program

VEX LED Plugged into DIGITAL Port 12 Set as Digital Outs Either ON or OFF In the debugger 0 is ON and 1 is OFF

Red, Green, and Yellow colors available Basic Programming: Until Commands The Problem with Wait States Motor Speed is affected by battery power

If the battery is fully charged, the motors move quickly If the battery is running low, the motors move slowly Consequently, the robot will not move consistently as the battery power drains Anyone experience these effects? Wouldnt it be better if we could control how much the robot moves, regardless of

how long it took to complete? Sensor Information: Touch Sensors Touch Sensors Touch Sensor Check Plugged into Digital 1 & 2

How they work Digital sensor - Pressed or Released 1 = pressed 0 = released Two Types Limit Switches

Bumper Switches Using them The SensorValue[] command untilTouch, untilRelease, untilBump NL commands Touch Sensors

Other Properties Limit Switch arm can be bent to create a more ideal hit area Both sensors spring back to open position Limitations Watch out for bouncing. As the sensor is pressed or released, it may bounce between 0 and 1 very briefly and quickly. A very brief wait can be inserted after touch sensor related commands

to reduce the bouncing effect: Bumper Switch Exercise Example: Wait for the bumper switch to be bumped before the right motor turns on at half power for 5 seconds, then stops. Individual: Wait for the bumper switch to be bumped before the both motors turn

on at half power, until the sensor is bumped again. Both motors should then move in reverse at half power for 3.5 seconds. Additional Resources Sensor Information:

Potentiometer Potentiometers Potentiometer Check Analog Port 2 How they work Analog sensor

Measures rotation of a shaft between 0 and ~265 degrees Cortex returns values 0 - ~4095 Using them The SensorValue[] command untilPotentiometerGreaterThan, untilPotentiometerLessThan NL commands

Potentiometers Other Properties Internal mechanical stops prevent the potentiometer from turning a full revolution. Limitations Caution: Excess torque against the internal mechanical stops

(can be caused by hand or by a VEX motor) will cause them to wear away. The potentiometer will continue to function, but will have a dead zone where the mechanical stops were, where no new values are sent. Switching the direction the potentiometer is facing will also switch the direction it counts. For example: counter-clockwise turns will count 0 to 4095 on one side; on the other counterclockwise turns will count 4095 0.

Potentiometer Exercise Example: Turn on the greenLED until the potentiometer value is greater than 2048. Then the greenLED should turn off, and the leftMotor should turn on for 3.5 seconds. Individual: Turn on the greenLED until the potentiometer value is greater than 2048. Then the greenLED should turn off, and the

leftMotor should turn on until the potentiometer is less than 2048. Additional Resources Sensor Information Line Tracker

Line Tracking Active Light Sensor Set of 3 Analog Sensors Sends out a IR beam, and measure how much is reflected back Each reads values between 0 and 4095

Using them The SensorValue[] command untilDark, untilLight, lineTrackforDistance, lineTrackforTime NL commands Line Tracking Other Properties

The Line Tracker should be kept between and 1/8 of an inch of what its measuring for the best results. Constant, consistent lighting is also very important for achieving repeatable robot behavior. In order to use the Line Tracking sensor(s) you must first calculate a threshold that allows it to distinguish light from dark.

Thresholds Overview A Threshold is a value (usually halfway between) two extremes Light and dark (Light sensors) Near and Far (Ultrasonic) Thresholds allow your robot to make decisions via Boolean Comparisons

Line Following Kits come with 3 sensors To use all three, you must choose a Threshold that will work with all 3 sensors, or 3 separate Thresholds If you are only using one sensor, then you only need to calculate the Threshold for that sensor Threshold Calculation Calculate an appropriate Threshold with the

aid of the Sensor Debug Window Threshold Calculation Verify that the Program Debug Windows Refresh Rate does not display Continuous. *Press the Continuous button if it does.

Threshold Calculation Add the two values and divide by two. The result is the threshold for that sensor. Light reading + Dark Reading = Threshold 2 Line Tracker Exercise Example: Program the claw to open until

the line tracking sensor is covered, then program it to stay open until the sensor is uncovered. Individual: Start with the LED On. Turn LED off when your hand covers line follower. Then turn the LED on for 5 seconds when hand is removed.

Decision Making: while loops and Boolean Logic While Loops A while loop is a structure within ROBOTC which allows a section of code to be repeated as long as a certain condition remains true.

There are three main parts to every while loop. 1. The word while Every while loop begins with the keyword while. 2. The Condition The condition controls how long or how many times a while loop repeats. While the condition is true, the while

loop repeats; when the condition is false, the while loop ends and the robot moves on in the program. The condition is checked every time the loop repeats, before the commands between the curly braces are run. 3. Commands to be Repeated Commands placed between the curly braces will repeat

while the (condition) is true when the program checks at the beginning of each pass through the loop. Boolean Logic Decisions robots make must always based on questions which have only two possible answers: yes or no, true or false. Statements that can be only true or false are

called Boolean statements, and their trueor-false value is called a truth value. Boolean Logic While Loop Exercise 1 Example: Program the greenLED to repeatedly turn on for 2 seconds, then off for 2 seconds, while the limit switch isnt

pressed. Individual: Expand the previous program to loop only while the the potentiometer reads less than 2048. GTT Example Exercise: Terry Traffic Tamer Task description:

Install a traffic light that turns a green light on for 5 seconds, then yellow light for 1 second and red light for 5 seconds. When a pushbutton switch is pressed and held the light timing changes so that the red light stays on until emergency vehicle(s) passes through the intersection. When the

pushbutton is released the normal light sequence starts over again. Terry the Traffic Tamer Timers More loop control please? Question: Where would the wait statement go if we wanted the

loop to repeat for a controlled amount of time? Answer: We need something else. Solution: Timers Can be thought of as internal stopwatches (4 available) Timers should be cleared anytime before they are used Watch where you clear them!

Timers In the program below, timer T1 is used as the condition for the while loop, which will run for 30 seconds: While Loop Exercise 2 Example: Program the greenLED to repeatedly turn on for 2 seconds, then off for 2 seconds, while less than 20 seconds

have elapsed. Individual: Program the greenLED to repeatedly turn on for 2 seconds, then off for 2 seconds, forever. GTT Example Exercise: Terry Traffic Tamer Bonus Task description:

Install a traffic light that turns a green light on for 5 seconds, then yellow light for 1 second and red light for 5 seconds. When a pushbutton switch is pressed and held the light timing changes immediately so that the red light stays on until emergency vehicle(s) passes through the

intersection. When the pushbutton is released the normal light sequence starts over again. Terry the Traffic Tamer Bonus Notice the emergency

button is checked within the time each light is on. Decision Making: if, if-else, and Boolean Logic

If Statements When your robot reaches an if Statement in the program, it evaluates the condition contained between the parenthesis. If the condition is true, any commands between the braces are run. If the condition is false, those same commands are ignored. Very similar to how a while loop works, but does not

repeat the code! If-else statements The if-else Statement is an expansion of the basic if Statement. The if section still checks the condition and runs the appropriate commands when it evaluates to true Using the else allows for specific code to be run only when the

condition is false. Either the if or the else branch is always run; no more, no less. If-else Exercise 1 Example: Program the greenLED to turn on if the bumperSwitch is pressed, and off

if its released. Loop Forever. Individual: Convert the previous program to use an if-else. Multiple If-else Statements Be careful when using two separate if-else statements, particularly when they are used to control the same mechanism.

One branch of each if-else statement is always run, so you may create a scenario where the two sets of fight eachother. Multiple If-else Statements In this example, if one of the touch sensors is pressed,

the rightMotor will be turned on in one if-else statement, and immediately turned off in the other. Multiple If-else Statements

This can be corrected by embedding the second if-else within the else branch of the first, so that it only runs if the first condition is false.

If-else Shorthand An embedded if-else can also be represented as an else if: Troubleshooting Troubleshooting Questions

Step 1: Identify the problem Step 2: What can we tell about the students understanding based on the problem? Step 3: What could we tell the student to address the problem, and their understanding? Just giving the answer to the student teaches dependence! This method teaches!

Troubleshooting Student: I want my robot to move forward, then turn. I had it moving forward, and added the turn. Now its turning, then moving forward. Troubleshooting Student:

My code wont compile. Troubleshooting Student: I want my robot to move forward, then reverse. I had it moving forward, and added the reverse, but it never actually backs up.

Troubleshooting Student: My loop should only be running for 1 minute, but it never stops. Troubleshooting Student: My code compiles, but I get an error when I try to download it to the robot.

Check: Is the robot turned on and sufficiently powered? (blinking green light) Is the robot connected to the computer? Is the correct platform type selected in ROBOTC? Is the correct port selected in ROBOTC? Has the driver for the programming cable been installed?

Has the firmware been loaded on the VEX? Does the Master Firmware need re-downloaded? Is another ROBOTC window open, using the debugger windows? Questions and Discussion

Resources CMU Resources The ROBOTC Forum: ROBOTC PLTW Page: http:// ROBOTC Webinars:

VEX Cortex Video Trainer robotc_cortex/index.html Robotics Academy htm

Recently Viewed Presentations

  • Unveiling the WISC-IV Donna Rury Smith, Ed.D. The

    Unveiling the WISC-IV Donna Rury Smith, Ed.D. The

    Unveiling the WISC-IV Donna Rury Smith, Ed.D. The Psychological Corporation Agenda A broad look at the changes and why we made them. A closer look at the new and familiar subtests Research design of the new WISC IV Psychometric properties...
  • Victoria room - welcome slides Debra

    Victoria room - welcome slides Debra

    Winstone, Medland, Bourne, Rees & Niculescu (in prep) A partnership approach "I assume [students] are educated enough to deal constructively with the feedback they receive - otherwise they should not be at my university anyway" ... Oonagh Holland Company:
  • CAMPBELL BIOLOGY TENTH EDITION Reece  Urry  Cain  Wasserman


    The Multiplication and Addition Rules Applied to Monohybrid Crosses. The multiplication rule states that the probability that two or more independent events will occur together is the product of their individual probabilities. Probability in an F. 1. monohybrid cross can...
  • Strategy in the Global Environment - Cengage

    Strategy in the Global Environment - Cengage

    Strategy in the Global Environment ... Joint Venture Separate corporations come together to form a new corporate entity Two or more companies have an ownership stake, but combine resources for mutual benefit Sharing knowledge can be dangerous for the companies...
  • Chemistry Chem 110 -

    Chemistry Chem 110 -

    How many meters are in 134 pm? للتحويل من صغير الى كبير نقسم ... Even though 2.1 x 104 is the largest number in this question, the units of pm (picometers) are the smallest units here, making it the smallest...
  • Hernie Discale Lombaire

    Hernie Discale Lombaire

    c'est une hypoesthésie superficielle voire une anesthésie au niveau du territoire douloureux L5 ou S1. c- Les troubles de la motricité segmentaire: sera appréciée au niveau des territoires d'innervation des racines L5 et S1 .Un déficit moteur sera apprécié par...
  • GCSE Languages the accredited specification

    GCSE Languages the accredited specification

    Exampro viewer for the new specifications - digitally formatted specimen assessment materials and exemplars showing how the Writing mark schemes are applied. Online progress tests for Listening, Reading, Vocabulary and Grammar.
  • the annual negotiation process for the Alaska annual funding ...

    the annual negotiation process for the Alaska annual funding ...

    The ANHB facilitates the Alaska tribal caucus meetings. Tribal and IHS caucuses are built into the Pre- and Final Negotiations processes. The agenda is drafted by the Co-Lead negotiators and Facilitator . Consensus is used for decisions in tribal caucus...