Introductory Robotics Workshop “Successful Strategies in Robotics”
description
Transcript of Introductory Robotics Workshop “Successful Strategies in Robotics”
![Page 1: Introductory Robotics Workshop “Successful Strategies in Robotics”](https://reader036.fdocuments.net/reader036/viewer/2022062400/56816865550346895ddec251/html5/thumbnails/1.jpg)
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”](https://reader036.fdocuments.net/reader036/viewer/2022062400/56816865550346895ddec251/html5/thumbnails/2.jpg)
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”](https://reader036.fdocuments.net/reader036/viewer/2022062400/56816865550346895ddec251/html5/thumbnails/3.jpg)
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”](https://reader036.fdocuments.net/reader036/viewer/2022062400/56816865550346895ddec251/html5/thumbnails/4.jpg)
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”](https://reader036.fdocuments.net/reader036/viewer/2022062400/56816865550346895ddec251/html5/thumbnails/5.jpg)
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”](https://reader036.fdocuments.net/reader036/viewer/2022062400/56816865550346895ddec251/html5/thumbnails/6.jpg)
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”](https://reader036.fdocuments.net/reader036/viewer/2022062400/56816865550346895ddec251/html5/thumbnails/7.jpg)
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”](https://reader036.fdocuments.net/reader036/viewer/2022062400/56816865550346895ddec251/html5/thumbnails/8.jpg)
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”](https://reader036.fdocuments.net/reader036/viewer/2022062400/56816865550346895ddec251/html5/thumbnails/9.jpg)
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”](https://reader036.fdocuments.net/reader036/viewer/2022062400/56816865550346895ddec251/html5/thumbnails/10.jpg)
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”](https://reader036.fdocuments.net/reader036/viewer/2022062400/56816865550346895ddec251/html5/thumbnails/11.jpg)
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”](https://reader036.fdocuments.net/reader036/viewer/2022062400/56816865550346895ddec251/html5/thumbnails/12.jpg)
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”](https://reader036.fdocuments.net/reader036/viewer/2022062400/56816865550346895ddec251/html5/thumbnails/13.jpg)
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”](https://reader036.fdocuments.net/reader036/viewer/2022062400/56816865550346895ddec251/html5/thumbnails/14.jpg)
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”](https://reader036.fdocuments.net/reader036/viewer/2022062400/56816865550346895ddec251/html5/thumbnails/15.jpg)
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”](https://reader036.fdocuments.net/reader036/viewer/2022062400/56816865550346895ddec251/html5/thumbnails/16.jpg)
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”](https://reader036.fdocuments.net/reader036/viewer/2022062400/56816865550346895ddec251/html5/thumbnails/17.jpg)
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”](https://reader036.fdocuments.net/reader036/viewer/2022062400/56816865550346895ddec251/html5/thumbnails/18.jpg)
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”](https://reader036.fdocuments.net/reader036/viewer/2022062400/56816865550346895ddec251/html5/thumbnails/19.jpg)
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”](https://reader036.fdocuments.net/reader036/viewer/2022062400/56816865550346895ddec251/html5/thumbnails/20.jpg)
Object Avoidance Example
![Page 21: Introductory Robotics Workshop “Successful Strategies in Robotics”](https://reader036.fdocuments.net/reader036/viewer/2022062400/56816865550346895ddec251/html5/thumbnails/21.jpg)
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”](https://reader036.fdocuments.net/reader036/viewer/2022062400/56816865550346895ddec251/html5/thumbnails/22.jpg)
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”](https://reader036.fdocuments.net/reader036/viewer/2022062400/56816865550346895ddec251/html5/thumbnails/23.jpg)
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”](https://reader036.fdocuments.net/reader036/viewer/2022062400/56816865550346895ddec251/html5/thumbnails/24.jpg)
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”](https://reader036.fdocuments.net/reader036/viewer/2022062400/56816865550346895ddec251/html5/thumbnails/25.jpg)
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”](https://reader036.fdocuments.net/reader036/viewer/2022062400/56816865550346895ddec251/html5/thumbnails/26.jpg)
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”](https://reader036.fdocuments.net/reader036/viewer/2022062400/56816865550346895ddec251/html5/thumbnails/27.jpg)
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”](https://reader036.fdocuments.net/reader036/viewer/2022062400/56816865550346895ddec251/html5/thumbnails/28.jpg)
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