RobotC - Home of Team Unlimited

advertisement
Coding for the
FIRST Tech Challenge:
RobotC
Presented by:
Team Unlimited FTC 0001
Presentation Overview
 Why RobotC?
 Where to Download
 Coding Basics
 RobotC Overview & Basics
 Sample code
 References
Q&A
 More Code
RobotC
Why RobotC?
 Speed
 RobotC runs quicker on the NXT
 Differences in speed are small until larger code is written
 Control
 In RobotC you have control over almost everything
 Real Time Debugger to allow viewing of code line by line while
running
 Personal Preference
 Text base control
 Advanced math functions
 Team Decision
RobotC
Downloading
RobotC can be downloaded from robotc.net/ftc
RobotC
Hardware Review
 Servo
Can only go 180 degrees
180°
In code, it is from 0 to 255
 DC Motor
0
Continuous
Controlled by power rather than degree (+100
forward to -100 backward)
RobotC
255
Plan the Code
 Get a diagram of the field
 Draw the general routine w/ arrows and numbers
 Make side notes noting what happens at each time interval
 Start your first draft of the code
RobotC
Coding Basics
Comments:
“//” is used as a line comment
“/*” is the beginning of a group comment
“*/” ends a group comment
Comments never affect the function of code
Always comment code so your team members understand it!
Example:
RobotC
Dead Reckoning vs. Sensing
 Dead Reckoning
 A prewritten routine
 Code flows A to B to C
 If interrupted, will only try to continue
 Easier to write
 Sensing
 Routine that can adapt
 Code flows, but can respond
 If interrupted, can attempt to correct
 More complicated
RobotC
Time vs. Rotations
 Time
 Dependant on battery life
 Useful for squaring on a wall
 Can be imprecise
 Used often for manipulators
 Rotations
 Independent of battery life
 Useful for replicating a routine repeatedly
 Very precise, always the same rotations
 Used often for movement
RobotC
Reacting to the Environment
 Sense the world and react to it
 Touch switch is pressed, against something
 Ultrasonic rapidly changes, something crossed paths
 Light sensor spikes, on a line or off a line
 Useful to be able to change course
 Code “thinks” for itself
 Only as smart as YOU code it!
RobotC
Flow of the Code
 Flow from place to place
 DON’T JUMP ALL OVER THE PLACE!
 Structure the code ahead of time, plan it out
 Make things easy to fix
 Make your code neat and clean
 Plan the code out ahead of time
 Don’t haphazardly place code in
 Order your code
 Do you want an interrupt?
 Is there an importance to the steps?
RobotC
Commenting
 Use comments to remind yourself
 Often you will forget why something is in the code
 Explains to the JUDGES what you were thinking
 Allows for easy corrections
 Write complete thoughts
“Checks for a touch sensor being pressed, if not, continue”
 Use them LIBERALLY
RobotC
RobotC Home Screen
RobotC
RobotC Basics
 Make sure you are on version 3.00
 If not, uninstall RobotC COMPLETELY before installing the newest
version
 Use the Sample codes included in RobotC
 Access by File > Open Sample Programs
 Save RobotC files in separate location on Hard Drive
 Download and watch coding presentations at Robotics
Academy
RobotC
Starting up RobotC
 Open RobotC
 Change Menu Level to Expert (for FTC purposes)
 Window > Menu Level > Expert
 Change Platform to FTC
 Robot > Platform Type > FIRST Tech Challenge (NXT)
 Close RobotC and Reopen
 Open a blank file
 File > New
 Ctrl + N
 Download Firmware to NXT
 Robot > Download Firmware (more to come later)
 Rename NXT
 Robot > Download Firmware (more to come later)
RobotC
Connect NXT
RobotC
Select NXT Brick
RobotC
Selecting the Firmware
RobotC
Download and Complete
 Make sure this message appears before exiting
RobotC
Rename NXT
RobotC
Name Your NXT
 Type in the name for your NXT (default is NXT)
 Recommended name is your team number to four digits (i.e
FTC #0001 is 0001
 If you have more than one NXT, place an A, B, etc. after the
number
RobotC
Connecting to Bluetooth
1. Go to Robot > NXT Brick > Link Setup
RobotC
Connecting to Bluetooth
2. Make sure that this box
is checked to perform a
bluetooth search
2. Select here to make a
pair between the NXT and
your laptop
RobotC
Bluetooth at the Competition
 Take from the Field Preparation Guide (you can find it
here)
 Remember to always do these steps at the Playing
Field
RobotC
Bluetooth at the Competition
RobotC
RobotC Menu
Compile and Download
Compiles and downloads
Compile Program
Compiles locally
Debugger
Scans code for errors
Motor & Sensor Setup
Set up Motor and Sensors
Download firmware
Download firmware to NXT
RobotC
RobotC Menu
Link Setup
Used to establish a link
between NXT and
Computer
Poll Brick
 “Online Window”
File Management
Manage files on the NXT
Joystick Control
“FTC Controller Station”
RobotC
RobotC Debugger
 Allows for program
control wirelessly
 Allows to view where
the code is currently
 Allows to view errors
in your code while
running
RobotC
RobotC Debugger Buttons
 Start/Stop – Starts or Aborts Program
 Suspend – Pauses code
 Step Into – Pauses code and proceeds to next line
 Step Over – Pauses code and skips over next procedure
 Step Out - Pauses code and exits procedure
 Clear All – Resets all values to default
 Refresh Rate
 Once – Refreshes values manually
 Continuous/Stop – Switch between continuous and
stop updating
RobotC
RobotC Debugger Joystick Control
 “FTC Controller
Station”
 Allows control over
Teleoperator and
Autonomous
 Views controller data
RobotC
RobotC “Loops”
 While statement
 Performs code as long as the statement is true
I.e. while (ServoValue[Servo1] < 255)
 If statement
 Performs entirety of code if statement is true
I.e. if (sensorValue[Touch] == 0)
 Else statement
 Performs entirety of code if “If Statement” is false
i.e. else
RobotC
RobotC Punctuation
 Brackets { }
 Used to control flow of code
 Semicolons ;
 Used after lines to denote an end
 Square Brackets [ ]
 Used for sensors and motor declarations
 Parenthesis ()
 Used for time and math functions
RobotC
RobotC Operators
 == (test a condition)
i.e. while (sensorValue[Touch] == 0)
 = (equals)
i.e. motor[motorD] = 0;
 < , > (less than, greater than)
i.e. if ( -10 < joystick.joy1_y1 < 10 )
 || (or)
i.e. if ( joy1Btn(1) || joystick.joy2_TopHat == 0 )
RobotC
RobotC Commenting
 // TEXT
 Comments out a single line of text
 /* TEXT */
 Comments out all text within the /* and */
 /*
 Comments out all text after
RobotC
RobotC Simple Program
RobotC
Sample Code
 FTC Template
 Joystick Control
 DC Drive Motor sample
 NXT Motor sample
 Servo sample
 Touch Sensor sample
 Light Sensor sample
 Ultrasonic Sensor sample
 Compass Sensor sample
RobotC
Using FTC Templates
 Using the Template (take from here)
RobotC
Using FTC Templates
RobotC
Using FTC Templates
RobotC
Teleop Template
RobotC
Autonomous Template
RobotC
Joystick Control Sample
RobotC
DC Motor Sample
RobotC
NXT Motor Sample
RobotC
Servo Sample
RobotC
Touch Center Sample
RobotC
Light Sensor Sample
RobotC
Light Sensor Sample
RobotC
Ultrasonic Sensor Sample
RobotC
Compass Sensor Sample
RobotC
Field Diagram
RobotC
RobotC Resources
 RobotC
 RobotC Forums
 Robotics Academy
 FTC Function Guide (From Robotics Academy)
 Setting up Dual Template Mode
 Field Procedures for Bluetooth
 Software Information (Links at our website)
 Code and Software Presentation
RobotC
RobotC Resources
 RobotC Sample code
 Program files > Robotics Academy > RobotC for Mindstorms >
Sample Programs > NXT
 File > Open Sample Programs (if RobotC is open)
RobotC
Coding for the
FIRST Tech Challenge:
RobotC
Questions?
unlimited.syraweb.org
Download