Beginner Programming Workshop - PowerPoint PPT Presentation

1 / 37
About This Presentation
Title:

Beginner Programming Workshop

Description:

Playtime. FIRST Control Elements. Hardware. Robot Controller (RC) ... Playtime. Projects. Autonomous program to: Drive 2 ft. Turn 180o. Return to start ... – PowerPoint PPT presentation

Number of Views:68
Avg rating:3.0/5.0
Slides: 38
Provided by: hof62
Category:

less

Transcript and Presenter's Notes

Title: Beginner Programming Workshop


1
Beginner Programming Workshop
November 17th, 2007 Hauppauge High School SPBLI
- FIRST
  • Simona Doboli
  • Associate Professor
  • Computer Science Department
  • Hosftra University
  • Email Simona.Doboli_at_hofstra.edu

Mark McLeod Advisor Hauppauge Team 358 Northrop
Grumman Corp. Mark.McLeod_at_ngc.com
2
Agenda
  • FIRST Control System
  • MPLAB Environment
  • C Basics
  • FRC Default Code
  • Robot Driver Control
  • Demonstration of Basic OI Controls
  • Robot Autonomous Control
  • Demonstration of Dead Reckoning
  • Wrap-up
  • Playtime

3
FIRST Control Elements
  • Hardware
  • Robot Controller (RC)
  • User Processor vs. Master Processor
  • PWM, Relay, Digital I/O, Analog, Misc.
  • Operator Interface (OI)
  • Tether cable / Programming cable
  • Laptop
  • Programming
  • C Language
  • MPLAB/mcc18 (write compile your program)
  • IFI_Loader (download to robot controller)
  • Dashboard (optional)
  • FIRST Default Code

4
FIRST Control System
solenoid
motor
5
Robot Controller
6
Robot Controller
7
Architecture
  • User Processor
  • What we download to
  • Runs our code
  • Reads the digital/analog I/O directly
  • Master Processor
  • Controls Disable/Autonomous/Driver modes
  • Disables OI inputs most RC outputs
  • Must hear from User periodically or shuts it down
  • Software is updated each year

8
Robot Controller I/O
Motors
Analog
Gyroscope
Servo
Team LEDs
Analog Rangefinder
Potentiometer
Banner Sensor
Touch Sensor
Pressure Sensor
Switch
Digital
Encoder
Relays
TTL
Solenoid
Compressor
Camera
Limit Switch
9
Getting Started
  • Create/Open an MPLAB Project
  • Edit a File
  • Build/Compile
  • Download

10
MPLAB
IFI_Loader
.hex file
Robot Controller
Dashboard (optional)
Operator Interface
11
C Basics
  • Structure (include, functions)
  • IF, THEN, ELSE
  • WHILE
  • FOR
  • , !
  • gt, lt, , gt, lt, !
  • ,
  • Operators
  • Prototype declarations

12
C Basics Structure Program
  • include ltstdio.hgt // C header file
    standard library function
  • // prototypes
  • include myHeader.h // User header file
    user function prototypes
  • int globalVar 10 // definition
    global variable can be used anywhere
  • // in this file
  • void main(void)
  • // What your program does
  • int result // local variable
    can be used only in main() function
  • result max(1, 10) // call function max 1,
    10 actual parameters
  • int max(int i, int j) // int i, int j formal
    parameters
  • // a function definition

13
C Basics Data Types
14
C Basics A simple program
include ltstdio.hgt pragma config WDT OFF int
max(int i, int j) // function declaration void
main(void) int m, n, bigger m 10
n 20 bigger max(m,n) printf("m
d, n d, bigger d, m, n,
bigger) while(1)
// // Function definition //
int max(int i, int j) int result
if (j gt i) result i else result j
return result
15
C Basics if statement
  • if (touch 1 light ! 0 )
  • goStraight 1
  • else
  • goStraight -1
  • !!! NOTE if (touch 1) vs. if (touch 1)
  • ASSIGNMENT CONDITION

AND Logic
OR Logic ()
16
C Basics while loop
  • while (touch 0)
  • leftMotor 5
  • rightMotor 5
  • read(touch) // need to change touch inside
  • // the loop
  • // use if more than one statement in a loop

17
C Basics - Exercise
  • Write a program that computes the first n
    numbers in the Fibonnacci series
  • 0, 1, 1, 2, 3, 5, 8, 13.
  • n is an integer number between 0 and 30.

18
C Basics - Algorithm
  • int first 0, second 1, third
  • while (n gt 0)
  • third first second
  • output third
  • first second
  • second third
  • n --

19
Competition Modes
  • Three Competition Modes
  • Disabled
  • Receive all inputs
  • No outputs get out
  • Autonomous
  • Receive RC inputs
  • Do not receive OI inputs
  • Outputs all working
  • Driver
  • Receive all inputs
  • Outputs working

20
FRC Default Code Flow
User Initialization
  • Main()
  • User_Initialization()
  • Do as long as were on
  • New radio packet (slow loop)
  • Process_Data_From_Master_uP()
  • Default_Routine()
  • As long as were in auto mode do this
  • User_Autonomous_Code()
  • Fast loop stuff

Radio packet ?
NO
YES
Driver Routine
Auto Mode ?
NO
YES
User Autonomous
21
Miscellaneous Points
  • Slow loop vs. Fast loop
  • Slow loop
  • Can be used for rough timing
  • Cant update motors etc. any faster than this
  • Fast loop
  • Irregular duration so cant be used for timing
  • Used for sampling fast sensors, e.g., gyroscope
  • Getdata() - Putdata()
  • If Master processor doesnt see Putdata regularly
    it will shutdown the User processor.
  • Finding Bugs
  • IFI_Loader terminal window
  • printf() - include ltstdio.hgt
  • Does not print long or float directly

22
FRC Default Code
  • Files to change
  • user_routines.c (to add switches change
    controls)
  • Default_Routine()
  • User_Initialization()
  • user_routines_fast.c
  • User_Autonomous() (to add autonomous movement)
  • user_routines.h (to share variables between files)

23
Input / Output
  • OI
  • Joysticks
  • Stick x y
  • Buttons
  • Unused inputs
  • Switches
  • LEDs lights or digital readout
  • RC
  • Digital I/O for sensors and devices (0 or 1)
  • Analog for sensors, e.g., potentiometers (0 to
    1023)
  • Relay for on/off, e.g., pneumatics (forward,
    reverse, stop)
  • PWM for motors (0reverse, 127stop, 254forward)
  • Dont use PWMs 13,14,15,16
  • TTL for devices, e.g., camera or LCD screen

24
Robot Driver Control
  • What do OI joysticks do
  • 1 or 2 joystick driving
  • Operate arm
  • Add OI buttons/switches
  • Open/close grippers
  • Choose autonomous variations
  • Add RC switches/sensors
  • Choose autonomous variations
  • Limit mechanism movement, e.g. an arm
  • Add/modify code in Default_Routine() in
    user_routines.c

25
Sample OI Controls
  • (note OI switches 0 when off and 1 when on)
  • Sample uses
  • Drive
  • Control arm
  • Control turret

26
Sample OI Input/Output
  • Changing the OI LED/digital display

// LED display on the OI if (user_display_mode
0) // OI lights are in use (select switch on
OI) Pwm1_green 1 Pwm1_red
1 else // OI digital display is in use
User_Mode_byte 123
  • Sample uses
  • Trim joysticks
  • Display auto selected
  • Display backup battery voltage

27
Sample Digital Code
  • Switches on the Robot Controller (RC Digital
    Inputs)
  • (note RC switches 1 when off and 0 when on)
  • Sample uses
  • Limit switches
  • Autonomous selection
  • Field starting position
  • Pressure sensor

28
Sample Analog Code
  • Analog Inputs on the RC (e.g., a potentiometer)

// Use of arm position sensor (potentiometer) to
limit arm movement int armpot pwm01
p3_y armpot Get_Analog_Value(rc_ana_in03) //
value will be 0-1023 if ( (armpot gt 900)
(pwm01 gt 127) ) pwm01 127 //
Neutral else if (armpot lt 100) (pwm01 lt 127)
) pwm01 127 // Neutral
  • Sample uses
  • Position sensors
  • Gyroscope
  • Analog rangefinder

29
Sample Relay Code
  • Forward / Reverse / Neutral

relay8_fwd 1 relay8_rev 0
relay8_fwd 0 relay8_rev 1
relay8_fwd 0 relay8_rev 0
  • Sample uses
  • Pneumatic valves
  • Compressor on/off
  • On/off motors

30
Robot Autonomous Control
  • Must be developed under identical environment as
    in competition
  • Training the robot must be repeated over over
    to get right
  • Do the best you can developing on old robots
  • Plan on multiple autonomous options
  • Use as few distinct movements as possible
  • Add code to User_Autonomous() in
    user_routines_fast.c

31
Sample Autonomous
// Drive forward and stop Sample_Auto_1()
static int counter0 if (counterlt100)
counter pwm01 200 pwm02 54 //motor
is reversed else // Make sure it always
stops pwm01 127 pwm02 127
May need function prototype void
Sample_Auto_1(void)
32
Common Issues
  • Syntax and typos
  • Program Data Space
  • Code Too Slow trying to do too much
  • Joystick trim
  • Embedded math (variable overflow)
  • Infinite or too large loops
  • Variables keep values until you change them
  • Unfortunately, it does exactly what you tell it
    to do

33
Wrap Up
  • Projects for Next Time
  • References
  • FIRST control System
  • C
  • Playtime

34
Projects
  • Autonomous program to
  • Drive 2 ft.
  • Turn 180o
  • Return to start
  • Add a start delay so you have time to set the
    robot down
  • Convert to use seconds
  • Driver controls to
  • Add a spin in place button
  • Reverse the controls so the robot front is now
    the back
  • Add Debug printfs to tell you when you press a
    button

35
References
  • Programming Quick Start
  • FIRST RC Reference Guide
  • FIRST OI Reference Guide
  • www.chiefdelphi.com/forums Programming forum

36
Reference Books
  • C For Dummies, Volume One
  • C For Dummies, Volume Two
  • C Programming - A Modern Approach - K N King
  • The C Programming Language -Kernighan Ritchie
  • The C Answer Book - Kernighan Ritchie

37
  • Presentation slides at
  • www.cs.hofstra.edu/sdoboli
  • or
  • Team358.org
  • Questions/Help please email us.
  • Simona.Doboli_at_hofstra.edu
  • Mark.McLeod_at_ngc.com
Write a Comment
User Comments (0)
About PowerShow.com