Vex Cortex Controller System Programming

Download Report

Transcript Vex Cortex Controller System Programming

Who are we?

Naomi Fitzsimmons
 [email protected]
 Parts replacement

Matt Lapolla
 [email protected]
 Programming, Technical issues, Rules, etc.

John Robertson
 [email protected]
 Policies, Technical Issues, Scoring

Bill Ryan
 [email protected]
 Everything else
Overview





Terminology
Hardware Overview
Programming Languages
Installing Easy C
Programming example







Defining Inputs
Defining Outputs
Input - Output Relationship
Write Program
Test Program
Other Useful Functions
Appendix
Press to
Play
Non-Proportional
(Digital)
Dimmer
Light
Switch
Proportional
(Analog)
Terminology:
Proportional or Non-Proportional
Regular
Light
Switch
Servo vs Motor
Robot
Transmitter
-127
127
-64
-32
64
32
0
Cortex Controller
Motor
Servo
Terminology:
Programming software

Compile – changes your C program into
object code that the linker understands.

Link – combines your program’s object
code with the Intelitek library and other
libraries to create code that is executable
on the Cortex processor.

Download / Bootload – transfers the
machine code version of your program
from the PC to the Cortex where it will
execute (the IFI/Intelitek Loader will
perform the transfer via the PC USB cable)
Hardware Overview:
Joystick
8 buttons on top
2 XY analog joysticks
Power switch
6 AAA
rechargeable
batteries
Plug-in USB/ WiFi Key
4 Button on front-side
Partner/ Buddy Control Support
3 Axis Accelerometer
(XY Tilt, XYZ Accel, Shake)
Hardware Overview:
Joystick – What you will use
8 buttons on top
2 XY analog joysticks
Power switch
6 AAA
rechargeable
batteries
Plug-in USB/ WiFi Key
4 Button on front-side
Partner/ Buddy Control Support
3 Axis Accelerometer
(XY Tilt)
Tilt, XYZ Accel, Shake)
Hardware Overview:
Cortex Controller
USB
Standard Serial
Interfaces
(UART, I2C)
1
Analog
in
8
1
2-wire motor
2
Digital
in/out
Speaker
Out
1
12
9
SP
10
3-wire PWM
servo/motor ctrl
2-wire motor
Hardware Overview:
Cortex Controller – What you will use
USB
Standard Serial
Interfaces
(UART, I2C)
1
Analog
in
8
1
2-wire motor
2
Digital
in/out
in
Speaker
Out
1
12
9
SP
10
3-wire PWM
servo/motor ctrl
2-wire motor
Hardware Overview:
Cortex Controller
This will only be important
on Game Day.
configuration switch
(used for special
procedures)
backup battery port for
WiFi communications
(9V)
75MHz crystal interface ports
Install before each match.
On/Off
switch
Remove
after each match.
main battery port (7.2V)
Hardware Overview:
Cortex Controller – What you will use
configuration switch
(used for special
procedures)
backup battery port for
WiFi communications
(9V)
75MHz crystal interface ports
On/Off switch
main battery port (7.2V)
Hardware Overview:
Cortex Controller
Ground
+ 5V
Signal/Control
+ Battery Power
+ Motor Power
(for + control input)
- Motor Power
(for – control input)
Hardware Overview:
DC Motors
Do not solder to motors. Use spade connectors instead.
Polarity is NOT marked on motors: positive(+), negative(-)
Wiring and programming will determine clockwise or counter
clockwise rotation for positive stick movement
Mount motors with 8-32 machine screws
Machine screws
must be cut to
proper length to
avoid motor damage!
max screw depth=
~1/8” (small motor)
~1/4” (large motor)
Hardware Overview:
DC Motors
If using built-in motor controller(s)
connect via 2-wire screw terminal cables (red/black)
use motor ports 1 & 10 only
If using external motor controller(s)
connect via 3-wire external motor controller + 2-wire screw
terminal cable
use motor ports 2 thru 9 only
Hardware Overview:
2 wire Motor connection Ports 1, 10
Screw terminals
for attaching
motor wires
Connector is not keyed.
Allows swapping polarity.
Port 1 Built-In Motor
and
Controllers
Port 10
Hardware Overview:
3 wire Motor connection Ports 2 - 9
External Motor
Controller
Suggest using
a 4” wire tie or
heat shrink tubing here
Standard 2-wire
motor cable
Standard 3-wire
PWM connector
Plug in to
Motor Ports 2 thru 9
Screw terminals
for attaching
motor leads
Hardware Overview:
Servo – Electrical Connection
Futaba S3003 or S3004 series
Maximum 120 degree rotation (+60, -60)
Connection to Cortex controller
via 3-wire PWM + 2x3 pin header
use motor ports 2 thru 9 only
Servo horns may be modified
servo horns
(2)
(2)
(1)
2x3 pin header
Hardware Overview:
Servo – Electrical Connection
Insert a 2x3 pin header
Occupies 2 ports
Converts VEX female port
to male port
Because Futaba servos
have female connectors
Hardware Overview:
Servo – Electrical Connection
Servo connectors are
keyed for proper insertion.
(small tab shown)
Servo Cables
White= Data
Red = +Batt Voltage
Black = Gnd
Second half of 2x3
pin header.
Hardware Overview:
Servo – Mounting Hardware
Futaba 3003/3004 Servos
4 per Kit
Mounting Hardware for each
To eliminate damage to
mounting holes
Servo Mounting Hardware
Rubber grommet (2)
Brass spacer (4)
Mounting screw (4)
Note: There are 16 of each screw, spacer, grommet in the Return Kit.
Hardware Overview:
Servo – Mounting Hardware
1. No h/w attached
3. Insert brass spacers
2. Attach rubber grommets
4. Secure servo with screws
Hardware Overview:
Digital Input/Output
Use for switches
Connect to Cortex digital inputs using 2-wire sensor screw terminal
cables (white/black wires)
sensor screw terminal cable
Connect to switch
Connect to Cortex
digital input port
Hardware Overview:
Digital Input / Output
must program digital port for proper direction (input)
Open: Program reads as ‘1’ ; Closed: Program Reads as ‘0’
sensor cable
connector is keyed
use digital ports
1 thru 12
Programming Languages

Best Inc provides 3 different
programming languages:
 Simulink by The Mathworks
 Robot C by Carnegie Mellon University
Robotics Academy
 Easy C by Intelitek
Programming Languages:
Simulink
Is a graphical simulation/programming
environment
 Links with Easy C for compiling and
programming
 OK BEST support will be limited by our
lack of knowledge. We haven’t even
been given a copy of the software to
test.

Programming Languages:
Robot C

Created by Carnegie Mellon University
 Leader in the robot world
Has debugging feature
 OKBEST has a copy of the software
 Support will be limited – our introduction
webinar is scheduled for September 8th and
lasts 6 weeks.
 Website available

 http://www.education.rec.ri.cmu.edu/fire/competitions/
best/
 Look for items containing Cortex Controller
Programming Languages:
Easy C
A graphical programming language
 Still need a basic understanding of
programming in C
 Good for rapid simple programming
 Applicable for most teams needs
 Highly supportable by OKBEST staff

Installing Easy C:
What you will need

Minimum System Requirements
 Windows XP/Vista/Win7, Mac not supported
 PIII-450MHz+, 256MB+ RAM, 120MB Hard Disk
Space
 Administrator Access on the PC
 1 USB port available for Cortex programming

Software & Installation




Software provided on CD
Installer auto runs from CD
4-month license begins at installation, 3 seats
Updates available at
http://www.intellitekdownloads.com
Installing Easy C:
What is installed
 Prolific
USB to Serial Driver
 EasyC Integrated Development
Environment
 IFI/Intelitek Loader
 EasyC libraries
 IFI VEXnet firmware upgrade*
 Many example projects
 14 Integrated Tutorials
* Note: Firmware upgrade requires administrator mode on Windows VISTA.
Right click on “IFI VEXnet Firmware Upgrade” in Programs
Menu and select “Run as administrator”.
Installing Easy C:
What you will need

Projects and Libraries are added here
 My Documents\Intelitek\easyC V4 for Cortex
Installing Easy C:
Installing Application






Must be in the administrator account (or
administrator mode)
Run the easyC_V4_for_Cortex4001.exe program
Follow the on screen instructions
Check the “Install Prolific USB to Serial adapter
driver“ checkbox before clicking the Finish button,
the driver installer will startup after a few seconds
Sample files copied into a “Intelitek” subfolder in the
Documents (or My Documents in XP) folder
Sample files must be copied to each users folder if
the software will be shared by multiple users on the
same machine.
Installing Easy C:
Installing Application

On the first startup of the software, there
will a prompt for registration code

Enter the registration code provided with
your CD
Programming Example:
Steps to creating a program
 Open new Easy C workspace
 Define Inputs
 Define Outputs
 Define Input to Output relationship
 Write a program
 Compile Program
 Download
 Test Program
Programming Example:
Open Easy C
Programming Example:
Open New Project
Programming Example:
Open New Project
Programming Example:
Save your New Program
Programming Example
Defining Inputs:
Joystick, Switches and Digital Signals

What are the
Inputs?
Joystick Input
Options
Proportional
Channel 1
Channel 2
Channel 3
Channel 4
Tilt X
Tilt Y
Digital Inputs
Channel 5 Up, Down
Channel 6 Up, Down
Channel 7 U, D, R, L
Channel 8 U, D, R, L
Controller Input
Options
Digital 1
Digital 2
Digital 3
Digital 4
Digital 5
Digital 6
Digital 7
Digital 8
Digital 9
Digital 10
Digital 11
Digital 12
Defining Inputs:
Joystick, Switches and Digital Signals

Channel 1
 Drive: Turn Right Left

Channel 2
 Drive: Forward/Reverse
Joystick Input
Options
Proportional
Channel 1
Channel 2
Channel 3
Channel 4
Tilt X
Tilt Y
Digital Inputs
Channel 5 Up, Down
Channel 6 Up, Down
Channel 7 U, D, R, L
Channel 8 U, D, R, L
Controller Input
Options
Digital 1
Digital 2
Digital 3
Digital 4
Digital 5
Digital 6
Digital 7
Digital 8
Digital 9
Digital 10
Digital 11
Digital 12
Defining Inputs:
Joystick, Switches and Digital Signals

Channel 1
 Drive: Turn Right Left

Channel 2
 Drive: Forward/Reverse

Channel 3
 Arm: Raise and Lower
Joystick Input
Options
Proportional
Channel 1
Channel 2
Channel 3
Channel 4
Tilt X
Tilt Y
Digital Inputs
Channel 5 Up, Down
Channel 6 Up, Down
Channel 7 U, D, R, L
Channel 8 U, D, R, L
Controller Input
Options
Digital 1
Digital 2
Digital 3
Digital 4
Digital 5
Digital 6
Digital 7
Digital 8
Digital 9
Digital 10
Digital 11
Digital 12
Defining Inputs:
Joystick, Switches and Digital Signals

Channel 1
 Drive: Turn Right Left

Channel 2
 Drive: Forward/Reverse

Channel 3
 Arm: Raise and Lower

Digital 1
 Arm: Upper Limit

Digital 2
 Arm: Lower Limit
Joystick Input
Options
Proportional
Channel 1
Channel 2
Channel 3
Channel 4
Tilt X
Tilt Y
Digital Inputs
Channel 5 Up, Down
Channel 6 Up, Down
Channel 7 U, D, R, L
Channel 8 U, D, R, L
Controller Input
Options
Digital 1
Digital 2
Digital 3
Digital 4
Digital 5
Digital 6
Digital 7
Digital 8
Digital 9
Digital 10
Digital 11
Digital 12
Defining Inputs:
Joystick, Switches and Digital Signals

Channel 1
 Drive: Turn Right Left

Channel 2
 Drive: Forward/Reverse

Channel 3
 Arm: Raise and Lower

Digital 1
 Arm: Upper Limit

Digital 2
 Arm: Lower Limit

Channel 5 Up
 Wrist: Rotate Up

Channel 5 Down
 Wrist: Rotate Down
Joystick Input
Options
Proportional
Channel 1
Channel 2
Channel 3
Channel 4
Tilt X
Tilt Y
Digital Inputs
Channel 5 Up, Down
Channel 6 Up, Down
Channel 7 U, D, R, L
Channel 8 U, D, R, L
Controller Input
Options
Digital 1
Digital 2
Digital 3
Digital 4
Digital 5
Digital 6
Digital 7
Digital 8
Digital 9
Digital 10
Digital 11
Digital 12
Programming Example
Defining Outputs:
Motors and Servos
Motor / Servo Output
Options
Proportional
Channel 1*
Channel 2#
Channel 3#
Channel 4#
Channel 5#
Channel 6#
Channel 7#
Channel 8#
Channel 9#
Channel 10*
* Can drive motor Direct, No servo control
# Can drive servo Direct, Motor with speed controller
Defining Outputs:
Motors and Servos
Motor / Servo Output
Options
Proportional
Channel 1*
Channel 2#
Channel 3#
Channel 4#
Channel 5#
Channel 6#
Channel 7#
Channel 8#
Channel 9#
Channel 10*
* Can drive motor Direct, No servo control
# Can drive servo Direct, Motor with speed controller
Defining Outputs:
Motors and Servos

What are the outputs?
Motor / Servo Output
Options
Proportional
Channel 1*
Channel 2#
Channel 3#
Channel 4#
Channel 5#
Channel 6#
Channel 7#
Channel 8#
Channel 9#
Channel 10*
* Can drive motor Direct, No servo control
# Can drive servo Direct, Motor with speed controller
Defining Outputs:
Motors and Servos

Channel 1 (Motor Large)
 Right Drive Motor

Channel 10 (Motor Large)
 Left Drive motor
Motor / Servo Output
Options
Proportional
Channel 1*
Channel 2#
Channel 3#
Channel 4#
Channel 5#
Channel 6#
Channel 7#
Channel 8#
Channel 9#
Channel 10*
* Can drive motor Direct, No servo control
# Can drive servo Direct, Motor with speed controller
Defining Outputs:
Motors and Servos

Channel 1 (Motor Large)
 Right Drive Motor

Channel 10 (Motor Large)
 Left Drive motor

Channel 2 (Motor Small)
 Raise and Lower Arm
Motor / Servo Output
Options
Proportional
Channel 1*
Channel 2#
Channel 3#
Channel 4#
Channel 5#
Channel 6#
Channel 7#
Channel 8#
Channel 9#
Channel 10*
* Can drive motor Direct, No servo control
# Can drive servo Direct, Motor with speed controller
Defining Outputs:
Motors and Servos

Channel 1 (Motor Large)
 Right Drive Motor

Channel 10 (Motor Large)
 Left Drive motor

Channel 2 (Motor Small)
 Raise and Lower Arm

Channel 3 (Servo)
Motor / Servo Output
Options
Proportional
Channel 1*
Channel 2#
Channel 3#
Channel 4#
Channel 5#
Channel 6#
Channel 7#
Channel 8#
Channel 9#
Channel 10*
 Wrist: Rotate Up/Down
* Can drive motor Direct, No servo control
# Can drive servo Direct, Motor with speed controller
Programming Example
Input – Output Relationship:
Flow Chart, Pseudo-code
Inputs
Program
Outputs
Channel 1
Channel 2
Arcade
Mixing
Motor 1 (Right)
Motor 10 (Left)
Channel 3
Digital 1
Digital 2
Channel 3
If not at limit
Motor 2 (Arm)
Channel 5 Up
Channel 5 Down
Up = Rotate Up
Down = Rotate
Down
Servo 3 (Wrist)
Programming Example
Write Program:
Set Up Input / Output
The Controller Configuration window is used to
identify what the various interfaces will be used
for and whether the digital interfaces are
configured as inputs or outputs. The Controller
Configuration window can be accessed via the
Project menu. The example shown is the
BEST default program.
Write Program:
COMMENT..COMMENT!!!!
Write Program:
COMMENT..COMMENT!!!!
Write Program:
COMMENT..COMMENT!!!!
Write Program:
Endless Loop
Write Program:
Endless Loop
Most of your
program will
be inside the
endless loop
Write Program:
Drive Motors
Inputs
Channel 1
Channel 2
Program
Arcade
Mixing
Outputs
Motor 1 (Right)
Motor 10 (Left)
Write Program:
Drive Motors
Write Program:
Drive Motors
Write Program:
Drive Motors
Write Program:
Drive Motors
Set Left Motor
to Motor/Servo
Port 10
Always Joystick
#1
Set Right Motor
to Motor/Servo
Port 1
Write Program:
Drive Motors
Write Program:
Arm Raise/Lower
Inputs
Program
Outputs
Channel 1
Channel 2
Arcade
Mixing
Motor 1 (Right)
Motor 10 (Left)
Channel 3
Digital 1
Digital 2
Channel 3
If not at limit
Motor 2 (Arm)
Write Program:
Arm Raise/Lower
Write Program:
Arm Raise/Lower
Write Program:
Arm Raise/Lower
Channel 3
Always Joystick
#1
Motor/Servo 2
Limit Switch
Input 1
Limit Switch
Input 2
Write Program:
Arm Raise/Lower
Write Program:
Wrist Rotate
Inputs
Program
Outputs
Channel 1
Channel 2
Arcade
Mixing
Motor 1 (Right)
Motor 10 (Left)
Channel 3
Digital 1
Digital 2
Channel 3
If not at limit
Motor 2 (Arm)
Channel 5 Up
Channel 5 Down
Up = Rotate Up
Down = Rotate
Down
Servo 3 (Wrist)
Write Program:
Wrist Rotate
Write Program:
Wrist Rotate
Joystick
Channel 5
Select Down
Button
Select Up
Button
Servo Port 3
Set Servo Value
Set Servo Value
Programming Example
Compile and Download:
Build and Download
Compile and Download:
Verify Compile with No Errors
Compile and Download:
Download Program to Cortex

When you see the following message
connect your Cortex Controller to the PC
using the supplied USB A-A cable.

Then click on the YES button.
Compile and Download:
Download Program to Cortex

Hopefully you will see this.

Then click on the OK button.
Programming Example
Test Program

Ensure your robot is ‘safe’ to operate:
 Can’t move or fall off table (use a jack-stand)
 All team members clear of moving parts







Connect either WiFi keys or tether cable
between the joystick and the Cortex controller.
Make sure Cortex switch is in OFF position.
Attach a charged battery.
Turn on joystick (if not using tether).
Turn Cortex switch to ON position.
For WiFi comm, link should establish in ~10
sec
Test robot operations with transmitter.
Programming Example
Other Useful Functions

Program Flow
 If
 Else-IF
 Else
 While Loop
 For Loop
 Comment
Conditional
Conditional
Conditional
While condition is True …
Repeat for X number of times
PLEASE COMMENT!
Other Useful Functions

Inputs
 Digital Input…Gets Status of Digital Input

Outputs
 Motor Module…Directly send value to motor
 Servo Module…Directly send value to servo
Other Useful Functions

Joystick
 Arcade – 2 Motor
○ Use Arcade style joystick inputs and drive 2 motors
 Tank-2 Motor
○ Use Tank style joystick inputs and 2 drive motors
 Joystick to Motor
○ Take input from 1 joystick and send it to motor
Other Useful Functions

Joystick
 Joystick to Motor & Limit
○ Take joystick value straight to motor if not at limit
 Joystick to Servo
○ Take a joystick value and send it to a servo
 Joystick Digital to Motor
○ Select 2 speeds for a motor based on joystick
buttons pressed
 Joystick Digital to Motor & Limit
○ Select 2 speeds for a motor based on joystick
buttons pressed, unless limit is reached
Other Useful Functions

Joystick
 Joystick Digital to Servo
○ Select one of 2 positions of a servo based on 2
buttons on the joystick
 Get Joystick to Analog
○ Retrieves a joystick value to a variable
 Get Joystick to Digital
○ Retrieves a joystick button to a variable
Appendix: Resources

http://best.eng.auburn.edu/b_resources.
php
 Not all information is relevant to BEST
competition

Robot C for Cortex controller
 http://www.education.rec.ri.cmu.edu/product
s/teaching_robotc_cortex/index.html
Appendix: Re-sync Controller
1. Turn off Cortex and
Joystick
2. Connect A-A USB cable
to Cortex and Joystick
3. Turn on Joystick OR
Cortex
4. Wait for Green Vexnet
Light on both Joystick
and Cortex
5. Turn off both Joystick
and Cortex
6. Disconnect cables
Appendix - Status Lights
joystick battery status
robot battery status
comm. link status
Game status
(not used by
BEST)
• Green battery – good charge
• Yellow battery - dying
• Red battery – dead
• Green VEXnet – comm. established
• Yellow VEXnet – searching
• Lights on the controller and the joystick
are the same
Appendix – Team Tips







Tin motor wires with solder before attaching to screw
terminals since frayed stranded wires can cause a
short.
Do NOT solder wires to Cortex connectors!
Sensor cables, servo wires, and servo extensions are
all keyed in correct orientation; insert and remove
carefully to avoid destroying connectors.
Tighten screws on motor and sensor connector cables
so that wires are not loose and do not pull out.
Mount Cortex to robot using #8 screws through holes
provided; be careful not to over tighten.
Avoid “hot insertion” of USB Keys.
You may operate tethered by removing the USB WiFi
key and connecting a USB A-A cable between joystick
and Cortex.
Appendix - Joystick Calibration


If the motors hum or creep (sticks not returning to zero), the joystick may need to be recalibrated
Calibration procedure (as extracted from the easyC help file)
1) The Joystick must be "Linked" to the Cortex Microcontroller using the VEXnet Keys.
2) Hold the "6U" Back Switch depressed.
3) While the "6U" Back Switch is depressed, use a small Allen Wrench (1/16" or smaller) or similar small
straight tool to depress and hold the CONFIG Switch.
4) Hold both Switches depressed until you see the Joystick LED Flash RED and GREEN - you can now
release both Switches.
a. There is a 10 second time limit to complete the following steps 5 and 6.
5) Now move both Joystick Pots to the maximum position desired in all 4 directions - Up, Back, Left, and
Right.
a. If a movement is not detected in all 4 directions, a timeout will occur after about 10 seconds and
the Cal Mode will be discontinued and the VEXnet LED will briefly Flash Red.
b. The Joystick LED will continue to Flash RED and GREEN during the calibration process.
6) After movement is detected in all 4 directions, the Joystick LED will be ON and Solid GREEN.
a. To "Save" the Calibration, depress and release the "8U" Top Switch Button.
b. If the calibration is accepted and Saved, the Joystick LED will start Flashing Fast GREEN for a few
seconds.
c. If the Calibration is not Saved, a timeout will occur after about 10 seconds and the Cal Mode will
be discontinued and the VEXnet LED will briefly Flash Red.
d. To cancel a calibration, depress and release the "7U" Top Switch Button. The Cal Mode will be
discontinued and the VEXnet LED will briefly Flash Red.
e. If the Cal Mode is discontinued or saved, the Joystick LEDs will resume their normal function after
the VEXnet LED briefly Flashes.
Appendix – Default Program
Motor/Servo
Output
Joystick
Channel
Motor 1
(Arcade Right)
Motor Limits
Positive
Direction
Negative
Direction
Channel 1 (Lt, Rt)
Channel 2 (Fwd/Rev)
None
None
Motor 2
Channel 1
Digital Input 1
Digital Input 2
Motor 3
Channel 2
Digital Input 3
Digital Input 4
Motor 4
Channel 3
Digital Input 5
Digital Input 6
Motor 5
Channel 4
Digital Input 7
Digital Input 8
Motor 6
Channel 3
None
None
Motor 7
Channel 3 Inverse
None
None
Motor 8
Channel 4
None
None
Motor 9
Channel 4 Inverse
None
None
Motor 10
(Arcade Left)
Channel 1 (Lt, Rt)
Channel 2 (Fwd/Rev)
None
None