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

Introductory Robotics Workshop “Successful Strategies in Robotics”

Feb 25, 2016

Download

Documents

morey

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
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
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/042/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•Forming

Create 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 ExampleIC4void 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 voltagebk(1); backward, negative voltageMotor(1, x); x = -100 to 100off(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