ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.
-
Upload
barbra-douglas -
Category
Documents
-
view
279 -
download
1
Transcript of ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.
![Page 1: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/1.jpg)
ROBOTC for CORTEX
![Page 2: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/2.jpg)
ROBOTC Overview
Thinking about Programming
![Page 3: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/3.jpg)
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– You’ll learn more about this feature later on
• Very similar to industry-standard C programming– Students get real-world programming experience
![Page 4: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/4.jpg)
Industry Standard Skillsets
Java and C++, along with the Eclipse and Visual Studio IDE’s 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!
![Page 5: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/5.jpg)
ROBOTC Features
![Page 6: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/6.jpg)
Platform Type
Allows you to toggle ROBOTC’s programming mode between the VEX PIC and VEX Cortex, will enable features and commands for the system
![Page 7: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/7.jpg)
ROBOTC Start Page
Displays the latest ROBOTC news, version of ROBOTC, and ROBOTC Resources
![Page 8: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/8.jpg)
Sample Programs
Over 75 Included ROBOTC Sample programs, organized by robot behavior
![Page 9: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/9.jpg)
ROBOTC Help
In-depth explanations about the ROBOTC interface, commands, debugger, etc
![Page 10: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/10.jpg)
Function Library
Lists the available functions, with a description.List of available functions will expand or shrink depending on the “Menu Level”
![Page 11: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/11.jpg)
Menu Level
Customizes the ROBOTC interface and Function Library based on the user’s experience level
![Page 12: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/12.jpg)
Motors and Sensor Setup
• One central place to configure and name all of the motors and sensors attached to your Cortex
![Page 13: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/13.jpg)
VEX Cortex Download Method
Allows you to specify:1. How programs are downloaded
2. 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
![Page 14: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/14.jpg)
Program Planning
Planning and Behaviors
![Page 15: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/15.jpg)
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
![Page 16: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/16.jpg)
The Labyrinth Challenge
![Page 17: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/17.jpg)
The Labyrinth Challenge
![Page 18: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/18.jpg)
Programming Discussion• The Challenge: The Labyrinth • The Solution: ???• The Programmer’s (your) Role
– Plan out the robot’s path / actions - Pseudocoding– Understanding Program Flow and Behavior Based Programming– Translate the Pseudocode into real code
• The Robot’s role– To carry out your instructions!
• The Solution: Programmer and Robot working together, fulfilling their roles– True for all robotic challenges!
![Page 19: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/19.jpg)
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
![Page 20: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/20.jpg)
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
![Page 21: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/21.jpg)
Pseudocode
• Sample Pseudocode:
![Page 22: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/22.jpg)
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.
![Page 23: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/23.jpg)
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, don’t try to implement it all at once!
• Systematically add sections of code, testing at every step!
![Page 24: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/24.jpg)
Behavior Based Programming
Additional Resources
![Page 25: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/25.jpg)
![Page 26: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/26.jpg)
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 www.robotc.net
![Page 27: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/27.jpg)
![Page 28: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/28.jpg)
Behavior Based Programming
![Page 29: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/29.jpg)
ROBOTC “Natural Language”
![Page 30: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/30.jpg)
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();
![Page 31: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/31.jpg)
ROBOTC Natural Language
• The Natural Language is an additional Platform Type in ROBOTC:
![Page 32: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/32.jpg)
ROBOT Motion
• Commands that cause the entire robot to perform a behavior
![Page 33: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/33.jpg)
Setup
• Allows you to specify what type of robot configuration you have from pre-specified models (RECBOT, Swervebot)
![Page 34: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/34.jpg)
Movement
• Commands that allow you to control individual motors / servos
![Page 35: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/35.jpg)
Special
• Commands that control the more unique VEX Hardware – LED’s and Flashlights
![Page 36: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/36.jpg)
Until
• Commands that allow you to create behaviors where the robot acts “until” a certain event – Button Press– Encoder Count
Reached
![Page 37: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/37.jpg)
Wait
• Commands that wait for an elapsed amount of time in seconds or milliseconds
![Page 38: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/38.jpg)
Sample Programs
![Page 39: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/39.jpg)
Moving Forward and Backward
![Page 40: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/40.jpg)
PLTW Template
![Page 41: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/41.jpg)
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.
![Page 42: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/42.jpg)
TestbedOverview
![Page 43: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/43.jpg)
GTT Testbed
![Page 44: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/44.jpg)
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
![Page 45: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/45.jpg)
Download Firmware
![Page 46: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/46.jpg)
Download Firmware
![Page 47: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/47.jpg)
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.
![Page 48: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/48.jpg)
Motors and Sensors Setup
• Open the PLTW Template• Save the file as “testbed default”• Go to Motors and Sensors Setup
![Page 49: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/49.jpg)
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)
![Page 50: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/50.jpg)
Motors and Sensors Setup
![Page 51: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/51.jpg)
Motors and Sensors Setup
![Page 52: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/52.jpg)
Motors and Sensors Setup
![Page 53: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/53.jpg)
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.
![Page 54: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/54.jpg)
Debugger Window
![Page 55: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/55.jpg)
Debugger Window
![Page 56: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/56.jpg)
ROBOTC Basics
• Part 1• Part 2
![Page 57: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/57.jpg)
Basic Programming:Motor and Wait Commands
![Page 58: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/58.jpg)
VEX Motors
• 3 Main Types:– Original 3-wire motor– Newer 2-wire motor 269– Newer 2-wire motor 393
• All motors are programmedthe same way in ROBOTC– Accept values between 127 (full forward) and -127
(full reverse)
![Page 59: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/59.jpg)
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
![Page 60: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/60.jpg)
Let’s write a program!Step 1 – complete project information and pseudocode.
Sample Program 1PLTW5/22/11Period 3
Turn on one motor for 5 seconds.
Turn right motor onWait 5 secondsTurn right motor off
![Page 61: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/61.jpg)
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
![Page 62: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/62.jpg)
Motor 2 on for 5 Seconds
Turns the port2 rightMotor on at half power forward
![Page 63: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/63.jpg)
Motor 2 on for 5 Seconds
Causes the robot to wait here in the program for 5.0 seconds
![Page 64: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/64.jpg)
Motor 2 on for 5 Seconds
Stops the port2 rightMotor.
End Result: rightMotor spins for 5.0 seconds.
![Page 65: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/65.jpg)
Let’s write a program!
Sample Program 1PLTW5/22/11Period 3
Turn on one motor for 5 seconds.
Turn right motor onWait 5 secondsTurn right motor off
![Page 66: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/66.jpg)
Quick ROBOTC Exercise
• Create this program yourself and download it to the Robot– Using the Program Debug Window
• Making Changes to a Sample Program1.Turn on leftMotor – Download and watch result
2.Reverse both motors – Download and watch result
![Page 67: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/67.jpg)
Renaming and Reversing• Robot > Motors and Sensors Setup
– Optional with Motors (not Sensors)– Giving Motors custom names– Reversing motor polarity
![Page 68: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/68.jpg)
Motor Exercises
1. Turn the rightMotor on forward at half speed for 5 seconds, then stop.
2. Turn the leftMotor on in reverse at three-fourths 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.
![Page 69: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/69.jpg)
GTT Example Exercise: Robot Drag Race
Task description: Program a robot dragster to travel as fast as possible over 20 feet.
![Page 70: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/70.jpg)
Robot Drag Race
Notice comments within program
![Page 71: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/71.jpg)
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
![Page 72: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/72.jpg)
Basic Programming:Until Commands
![Page 73: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/73.jpg)
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?• Wouldn’t it be better if we could control
how much the robot moves, regardless of how long it took to complete?
![Page 74: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/74.jpg)
Sensor Information:Touch Sensors
![Page 75: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/75.jpg)
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
![Page 76: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/76.jpg)
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:
![Page 77: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/77.jpg)
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.
![Page 78: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/78.jpg)
Additional Resources
![Page 79: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/79.jpg)
Sensor Information:Potentiometer
![Page 80: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/80.jpg)
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
![Page 81: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/81.jpg)
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 counter-clockwise turns will count 4095 – 0.
![Page 82: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/82.jpg)
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.
![Page 83: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/83.jpg)
Additional Resources
![Page 84: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/84.jpg)
Sensor InformationLine Tracker
![Page 85: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/85.jpg)
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
![Page 86: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/86.jpg)
Line Tracking• Other Properties
– The Line Tracker should be kept between ¼ and 1/8 of an inch of what it’s 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.
![Page 87: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/87.jpg)
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
![Page 88: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/88.jpg)
Threshold Calculation• Calculate an appropriate Threshold with the
aid of the Sensor Debug Window
![Page 89: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/89.jpg)
Threshold Calculation
Verify that the Program Debug Window’s Refresh Rate does not display “Continuous”.
*Press the “Continuous” button if it does.
![Page 90: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/90.jpg)
Threshold Calculation
Add the two values and divide by two. The result is the threshold for that sensor.
Light reading + Dark Reading
2= Threshold
![Page 91: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/91.jpg)
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.
![Page 92: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/92.jpg)
Decision Making:while loops and Boolean Logic
![Page 93: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/93.jpg)
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.
![Page 94: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/94.jpg)
1. The word “while”• Every while loop begins with the keyword “while”.
![Page 95: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/95.jpg)
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.
![Page 96: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/96.jpg)
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.
![Page 97: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/97.jpg)
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 true-or-false value is called a truth value.
![Page 98: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/98.jpg)
Boolean Logic
![Page 99: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/99.jpg)
![Page 100: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/100.jpg)
While Loop Exercise 1
• Example: Program the greenLED to repeatedly turn on for 2 seconds, then off for 2 seconds, while the limit switch isn’t pressed.
• Individual: Expand the previous program to loop only while the the potentiometer reads less than 2048.
![Page 101: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/101.jpg)
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.
![Page 102: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/102.jpg)
Terry the Traffic Tamer
![Page 103: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/103.jpg)
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!
![Page 104: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/104.jpg)
Timers
In the program below, timer T1 is used as the condition for the while loop, which will run for 30 seconds:
![Page 105: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/105.jpg)
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.
![Page 106: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/106.jpg)
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.
![Page 107: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/107.jpg)
Terry the Traffic Tamer Bonus
Notice the emergency button is checked within the time each light is on.
![Page 108: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/108.jpg)
Decision Making:if, if-else, and Boolean Logic
![Page 109: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/109.jpg)
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!
![Page 110: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/110.jpg)
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.
![Page 111: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/111.jpg)
If-else Exercise 1
• Example: Program the greenLED to turn on if the bumperSwitch is pressed, and off if it’s released. Loop Forever.
• Individual: Convert the previous program to use an if-else.
![Page 112: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/112.jpg)
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.
![Page 113: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/113.jpg)
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.
![Page 114: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/114.jpg)
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.
![Page 115: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/115.jpg)
If-else Shorthand• An embedded if-else can also be represented as
an else if:
![Page 116: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/116.jpg)
Troubleshooting
![Page 117: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/117.jpg)
Troubleshooting Questions• Step 1: Identify the problem• Step 2: What can we tell about the student’s
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!
![Page 118: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/118.jpg)
Troubleshooting• Student: I want my robot to move forward, then turn. I
had it moving forward, and added the turn. Now it’s turning, then moving forward.
![Page 119: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/119.jpg)
Troubleshooting• Student:
My code won’t compile.
![Page 120: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/120.jpg)
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.
![Page 121: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/121.jpg)
Troubleshooting
• Student: My loop should only be running for 1 minute, but it never stops.
![Page 122: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/122.jpg)
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?
![Page 123: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/123.jpg)
Questions and Discussion
![Page 124: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/124.jpg)
Resources
![Page 125: ROBOTC for CORTEX. ROBOTC Overview Thinking about Programming.](https://reader033.fdocuments.net/reader033/viewer/2022061508/5697c0051a28abf838cc4b62/html5/thumbnails/125.jpg)
CMU Resources• ROBOTC.net: http://www.robotc.net/
– The ROBOTC Forum: http://www.robotc.net/forums/• ROBOTC PLTW Page: http:// www.robotc.net/pltw• ROBOTC Webinars:
http://www.robotc.net/education/webinars/ • VEX Cortex Video Trainer
– http://www.education.rec.ri.cmu.edu/products/teaching_robotc_cortex/index.html
• Robotics Academy– http://www.education.rec.ri.cmu.edu/content/vex/index.
htm