introductory robotics workshop “successful strategies in robotics”

28
Introductory Robotics Workshop “Successful Strategies in Robotics” Terry Grant, NASA, Ames Research Center Jeneva Westendorf, Foothill High School 2/5/04 2/12/04

Upload: conan-keith

Post on 31-Dec-2015

39 views

Category:

Documents


0 download

DESCRIPTION

Introductory Robotics Workshop “Successful Strategies in Robotics”. Terry Grant, NASA, Ames Research Center Jeneva Westendorf, Foothill High School 2/5/04 2/12/04. Outline. 2/5 Introductions Team Building & Strategy Robotics Hardware & Software Architecture - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Introductory Robotics Workshop  “Successful Strategies in Robotics”

Introductory Robotics Workshop “Successful Strategies in Robotics”

Terry Grant,NASA, Ames Research Center

Jeneva Westendorf,Foothill High School

2/5/04

2/12/04

Page 2: Introductory Robotics Workshop  “Successful Strategies in Robotics”

Outline• 2/5

– Introductions – Team Building & Strategy– Robotics Hardware & Software Architecture– Programming in C Introduction – with the HB

• 2/12 – Review: Robot Project Requirements & Example – Object Avoidance Mission– Go + Throw Example– Teacher as Coach– Wrap-up

Page 3: Introductory Robotics Workshop  “Successful Strategies in Robotics”

Team Development

•FormingCreate Ground Rules/ Key Result StatementGain Buy-in on Code of ConductDiscuss Roles

•StormingEstablish TrustManage Conflict

•NormingSolve ProblemsMake Decisions

•Performing•Start competition strategy & plans

Page 4: Introductory Robotics Workshop  “Successful Strategies in Robotics”

Team Strategy & Plans

• Translating a Challenge into Requirements– Robot physical capabilities– Robot behavior (high level code)– Operator – robot interaction

• Assigning tasks and milestones

• Writing a total schedule (initial and revised)– Plan to test capabilities & behavior– Plan for full robot tests & re-planning– Plan for team coordination meetings

Page 5: Introductory Robotics Workshop  “Successful Strategies in Robotics”

Robot Building & Coding• Completed LEGO robot from MLCAD

– Ref: http://www.lm-software.com/mlcad/

– Art of LEGO Design

– http://handyboard.com/techdocs/artoflego.pdf

• Pictures and Code from the Jan ’03 Workshop– http://robotics.nasa.gov/edu/BBworkshop03

• IC4 Environment downloads:– http://www.botball.org/about_botball/ic4.html

• Hands-on Challenges Ref:– http://robotics.nasa.gov/students/challenge.htm

Page 6: Introductory Robotics Workshop  “Successful Strategies in Robotics”

Robotics H/W & S/W Architecture

Interactive C v. 4.10* Editor* Debug Interpreter* LoaderOther Apps

Desktop Operating System

Desktop Hardware

Bot Multi-tasking S/W Components Real-Time Operating System * P-code interpreter * Input/Output Drivers - Clock * Load/Run modes

Handy Board or RCX H/W*Central Processor* Random Access Memory* Special I/O Circuits* Battery & Power Conditioner

Serial Data Interface

Charger (HB only)

Lego Motors& Sensors

LegoMechanical

IR for RCX*

Page 7: Introductory Robotics Workshop  “Successful Strategies in Robotics”

Robot Project Requirements

• Hardware configuration and general environmental constraints

• Operator Requirements

• Controller requirements

All Three Elements are needed and should be written down for a common team understanding

Page 8: Introductory Robotics Workshop  “Successful Strategies in Robotics”

Programming in C - Introduction

• IC4 provides an editing, compiling, and downloading environment for either RCX or Handy Board.

• Follows C syntax (grammar)• Uses functions < xyz() > declared and called• Many functions for Input/Output are preloaded in a

library• Good tutorial examples provided with the application • Multi-tasking capability in O.S.

– allows sampling & holding multiple conditions in parallel:

position, direction, and other sensors

Page 9: Introductory Robotics Workshop  “Successful Strategies in Robotics”

General Syntax

• declaring:

output type Function(inputs e.g. int x, int y) {block of statements}

• calling: Function(x, y);

• types: int x, y, z;float a, b, c;

all variables must have a declared type.– global types are defined at the top, outside of a

function, and usable by all functions.

Page 10: Introductory Robotics Workshop  “Successful Strategies in Robotics”

Introductory Checkout• This workshop will use the Handy Board (HB)

controller and a pre-built demo robot.• Checkout your configuration and understanding of

the concepts by entering and downloading the following one line program to send a message to the HB display screen:

Void main(){ printf(“Hello <your name> \n”);}

• Open Interactive C to view the actual environment & write the above code, then run it.

Page 11: Introductory Robotics Workshop  “Successful Strategies in Robotics”

Simple Example

Make a Robot Go Forward and Return– H/W & Environment:

Build a bot with the HB or RCX, wired to motors such that forward power moves wheels forward, and put on a demonstration table with enough flat surface

– Operator:Write the code, load the microcontroller, and initiate the

execution (running) of the code

– The controller:Turn on the motors forward, wait 2 seconds, reverse the motors,

wait 2 seconds, then stop.

Page 12: Introductory Robotics Workshop  “Successful Strategies in Robotics”

Simple Code ExampleIC4

void main()

{

fd(0); fd(2);

sleep(2.0);

bk(0); bk(2);

sleep(2.0);

off(0); off(2);

}

• Open Interactive C & write the code

Page 13: Introductory Robotics Workshop  “Successful Strategies in Robotics”

More Basics• Three modes: off, standby, run

• Use of ‘Interaction’ window in IC4– Test new functions for I/O, robot behavior

• Check list of library functions, global variables

• Download firmware

• Upload Arrays for spread-sheet analysis

• Edit aids– Auto-indentation

– Parenthesis matching

– Syntax checking (on download)

• Use of ‘save as’ to file new, or trial code

Page 14: Introductory Robotics Workshop  “Successful Strategies in Robotics”

Notation of IC 4IC notation is the same for

RCX & HBif ("condition"){ "statements"}else{ "statements"}

while ("condition")

{

"statements"

}

Page 15: Introductory Robotics Workshop  “Successful Strategies in Robotics”

Notation of IC4 -2

Defining a function or task:xxx “name”(){ "statements"}xxx = ‘void’ if no return variables = ‘int’ if integer return variables = ‘float’ if floating point return variables

Page 16: Introductory Robotics Workshop  “Successful Strategies in Robotics”

Notation of IC4 - 3

Starting and ending parallel tasks:

pid = start_process(taskname());

kill_process(pid);

Page 17: Introductory Robotics Workshop  “Successful Strategies in Robotics”

Notation of IC4 - 4

Inputs for RCX

- light(y) for y = 1,2, or 3

- light_passive(y)

- digital(y) or touch(y)

Page 18: Introductory Robotics Workshop  “Successful Strategies in Robotics”

Notation of IC4 - 5

IC OutputsMotor outputs, ports 0 to 3 for HB(or A to C for

RCX)

To use port 1:

fd(1); forward, positive voltage

bk(1); backward, negative voltage

Motor(1, x); x = -100 to 100

off(1); leave port ‘open’

brake(1); for the RCX only, to brake the motor

Page 19: Introductory Robotics Workshop  “Successful Strategies in Robotics”

Notation of IC4 - 6

To display on Controller LCD e.g.

printf(“Hello\n”);

printf(“X= %d\n”, x); /* x is an integer */

printf(“X= %f\n”, y); /* y is floating point */

printf(“%d -%d\n”, a, b); /* a & b are integers */

In the RCX only five characters total can be displayed,

and “\n” is not needed.

Page 20: Introductory Robotics Workshop  “Successful Strategies in Robotics”

Object Avoidance Example

Page 21: Introductory Robotics Workshop  “Successful Strategies in Robotics”

Requirements• Robots with range sensors start facing each other about one foot

apart.• Robots must start when a button is pushed or the light comes on.• Robots must stop after T (5-15) seconds.• The first robot to touch the barrier loses.

Bot 1 Bot 24’ x 4’ barrier

Starting Light

Page 22: Introductory Robotics Workshop  “Successful Strategies in Robotics”

Object Avoidance Behavior

• Display program title

• Wait for start_button push, then beep

• Wait 3 seconds to start

• Go straight forward – while T is not exceeded,

Turn if an object is sensed

– When T is exceeded stop

Page 23: Introductory Robotics Workshop  “Successful Strategies in Robotics”

Object Avoidance Code/* bang-bang control to avoid obstacles using

rangefinders - Grant 1/27/04*//******************** Robot port configuration

***********/#define R_MOTOR 2 /* motor port 2 */#define L_MOTOR 0 /* motor port 0 */#define R_ENC 1 /* encoder 1 is digital port 8 */#define L_ENC 0 /* encoder 0 is digital port 7 */#define L_RANGE 18 /* range sensor in analog 18*/#define R_RANGE 16 /* range sensor in analog 16*/#define THROW_DIST 195 /* sensor reading to throw the

ball, avoid obstacles, etc*/#define T 5000L /* run time in millisec *//*********** globals for left and right sensors, bumper

*****/int L_Range, R_Range, Bumper=0, L_Enc, R_Enc;

Page 24: Introductory Robotics Workshop  “Successful Strategies in Robotics”

Object Avoidance Code - condvoid main(){ start_process(monitor_sensors()); printf("range avoid press start\n"); start_press(); sleep(3.); /* wait for start button press */

avoid();}void monitor_sensors(){ enable_encoder(R_ENC); /*enable the encoders */ enable_encoder(L_ENC); while(1){ Bumper=digital(15); /* front bumper switch */ L_Enc=read_encoder(L_ENC); R_Enc=read_encoder(R_ENC); L_Range= 255-analog(L_RANGE); /* range reading is big for big distances */ R_Range = 255-analog(R_RANGE); defer(); }}

Page 25: Introductory Robotics Workshop  “Successful Strategies in Robotics”

Object Avoidance Code - condvoid avoid(){ int l_speed, r_speed; long time_s=mseconds()+T; while(!stop_button()&&(mseconds()<time_s)) { l_speed=r_speed=75; if(L_Range<=THROW_DIST) r_speed=0; else { if(R_Range<=THROW_DIST) l_speed=0; } motor( L_MOTOR, l_speed); motor(R_MOTOR, r_speed); defer(); } ao();}

Page 26: Introductory Robotics Workshop  “Successful Strategies in Robotics”

Light Trigger Calibration• Hardware & Environment

– L1 is the remote trigger light.

– L2 is the room lighting.

– Pd photodetector has a wide field of view.

• The Controller display helps the operator measure both the dark and light response.

• The controller [HB or RCX code] sets the “light vs. dark” threshold and waits for the threshold to be exceeded to trigger the action.

Page 27: Introductory Robotics Workshop  “Successful Strategies in Robotics”

Avoidance - Sensor Test Project

• To support a robot avoidance contest with a light start, design a robust light trigger for the action which runs the avoidance behavior for 5 seconds after a light is turned on.– Discuss all requirements (total group)– Write a code design for each Bot. – Write and debug the code

• Participate in an Avoidance contest• Compare trigger and behavior designs and results

Page 28: Introductory Robotics Workshop  “Successful Strategies in Robotics”

Avoidance - Sensor Test Behavior e.g.

• Display program title [for a few seconds]

• While start_button is not pushed,– Display sensor level and

– Prompt for start_button push

– While stop_button is pushed,

display and increment the trigger threshold

• When start_button is pushed,– Display sensor level

– Wait for sensor level to cross the trigger threshold, then go forward, etc as original object avoidance

• When T is exceeded: stop, – display “done” for a few seconds