RobotC - Home of Team Unlimited
Download
Report
Transcript RobotC - Home of Team Unlimited
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