Autonomous Navigation Workshop

Download Report

Transcript Autonomous Navigation Workshop

EasyC Programming Workshop

January 30, 2008 Hauppauge High School

SPBLI - FIRST

Mark McLeod Advisor Hauppauge Team 358 Northrop Grumman Corp.

[email protected]

Agenda

    FIRST Control System C Basics EasyC Environment EasyC Basics – Robot Driver Control  Demonstration of Basic OI Controls – Robot Autonomous Control  Demonstration of Dead Reckoning

FIRST Control System

solenoid motor

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 Based – Application Programmer Interface (API) – Dashboard (optional)

Robot Controller 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 – Master Code Software is updated each year

Robot Controller I/O

Analog Gyroscope Analog Rangefinder Potentiometer Motors Servo Team LEDs Banner Sensor Touch Sensor Pressure Sensor Switch Encoder Limit Switch Digital Relays Solenoid Compressor Camera TTL

Getting Started

    Tutorials – Help -> Tutorials Create/Open an EasyC Project – New Competition Template – Controller Configuration Drag & Drop Editing Build & Download – Loader Setup to select serial/USB port – Online Window to test & check RC config.

Mechanics

Dashboard (optional) Build & Download .hex file Robot Controller Operator Interface Prog Button

Project

 Controller Configuration – Set Digital as input or output

Function Blocks

        Add Variables Inputs – Digital & Analog I/O Outputs – PWM, Relay Program Flow – C statements RC Control – Drive style (tank, arcade) Camera Control – Know status (disable, auto) User Functions (Initialize, Auto, Operator)

Simple Operator Mode

While (1) { // From “Program Flow – While” Tank4(1,2,2,2,1,3,2,4,0,1,0,1); // From “RC Control – Tank – 4 motor” }

More Complex Operator Mode

unsigned char LeftJoystick; // Double click “Variables” while (1) { LeftJoystick = GetOIAInput(1,2); // From “RC Control” if(LeftJoystick > 137 || LeftJoystick < 117) // From “Program Flow” { SetPWM(1, LeftJoystick); // From “Outputs” } else { SetPWM(1, 127); } }

Simple Autonomous

SetPWM(1,200); // From “Outputs” SetPWM(2,55); Wait(10000); // From “Program Flow” (10 secs in milliseconds) SetPWM(1,127); //Be sure to stop the robot at the end SetPWM(2,127);

Sample IR Sensor Use

While(1) { if (GetDigitalInput(1) == 1) { SetOILED(1,1); //Turn 1 SetOILED(3,0); //Turn other OI lights off SetOILED(5,0); SetOILED(7,0); st OI light on SetPWM(1,200); //Drive the robot SetPWM(2,55); } if (GetDigitalInput(2) == 1) { SetOILED(1,0); //Turn other OI lights off SetOILED(3,1); //Turn 2 nd OI light on SetOILED(5,0); SetOILED(7,0); SetPWM(1,127); //Stop the robot SetPWM(2,127); } }

More Information

 Presentation slides at:

Team358.org

 Questions/Help please email us. [email protected]