Presentation based on: “Robotics: with the Boe-Bot" Parallax, Inc. www.parallax.com 599 Menlo Drive Suite 100 Rocklin, CA 95765 1 Copyrights and Trademarks This documentation is copyright 2004 by Parallax, Inc. By downloading or obtaining a printed copy of this documentation or software you agree that it is to be used exclusively with Parallax products. Any other uses are not permitted and may represent a violation of Parallax copyrights, legally punishable according to Federal copyright or intellectual property laws. Any duplication of this documentation for commercial uses is expressly prohibited by Parallax, Inc. Duplication for educational use is permitted subject to the following conditions: Parallax grants the user a conditional right to download, duplicate, and distribute this text without Parallax's permission. This right is based on the following conditions: the document, or any portion thereof, may not be duplicated for commercial use; it may be duplicated only for educational purposes when used solely in conjunction with Parallax products, and the user may recover from the student only the cost of duplication. BASIC Stamp, Stamps in Class, and Board of Education are registered trademarks of Parallax, Inc. If you decide to use the names BASIC Stamp, Stamps in Class, and/or Board of Education on your web page or in printed material, you must state that "BASIC Stamp is a registered trademark of Parallax, Inc.," "Stamps in Class is a registered trademark of Parallax, Inc.," and/or "Board of Education is a registered trademark of Parallax, Inc.," respectively, upon the first appearance of the trademark name. Other brand and product names are trademarks or registered trademarks of their respective holders. 2 What's New In Robotics 15 14 Vdd 13 12 Red Black X4 X5 Vin New Servos • Adjustable potentiometer • Faster, quieter, draw less power New Board of Education • Power Switch • Jumper New Wheels and Tires New Whiskers New Infrared Emitters New Text – v2.0 3 Select the Servo Power Supply New jumper - connects servo power to either • Vin – Battery Voltage • Vdd – Regulated 5V supply Select Vin for use with 4 AA batteries Pull jumper off pins, then push onto Vin pin 15 14 Vdd 13 12 Red Black X4 X5 Vin 4 Center the Boe-Bot Servos Plug the battery pack into the BOE • Note the correct polarity Plug the servos in to the BOE • Important!! Black wire closest to breadboard! Turn the switch to Position 1 Enter and Run "CenterServoP12.bs2" pg. 65 Repeat for "CenterServoP13.bs2" pg. 66 5 Center the Boe-Bot Servos Move the switch to Position 2 If the servos do not stay still, adjust them with your Parallax screwdriver • Do not push too hard • Use the Phillips end Adjust each servo so it stays completely still 6 Build the Boe-Bot Build the robot by following instructions from your manual (pages 85-99) 7 Build the Start/Reset Indicator Brownout • Batteries drop below 5.2 V • Brownout detector circuit resets the BASIC Stamp • Program starts over from beginning Low Battery Indicator • Add speaker to Boe-Bot • "Beep" first thing in program If Boe-Bot beeps during navigation, must have reset Thus batteries are low P4 To Servos 15 14 Vdd 13 12 Red Black Vss X4 Vdd X5 Vin Vss X3 P15 P14 P13 P12 P11 P10 P9 P8 P7 P6 P5 P4 P3 P2 P1 P0 X2 + Board of Education Rev C © 2000-2003 8 Test the Low Battery Indicator Run "StartResetIndicator.bs2" Test by pressing the Reset button on the BOE Should beep each time reset DEBUG CLS, "Beep!!!" FREQOUT 4, 2000, 3000 ' Display while speaker beeps. ' Signal program start/reset. DO DEBUG CR, "Waiting for reset…" PAUSE 500 LOOP ' DO...LOOP ' Display message ' every 0.5 seconds 9 Servo Positioning Direction • Determined by the width of the pulse Distance • Each pulse causes the servo to rotate a small amount Speed • Maximum at 1.3 and 1.7 ms. • Decreases as approaches 1.5 ms Pulse Width Direction of Rotation PULSOUT Period 1.3 ms Clockwise 650 1.5 ms Stopped 750 1.7 ms Counter-clockwise 850 10 Controlling Distance Run "BoeBotForwardThreeSeconds.bs2" Follow the instructions on p. 118 to make the Boe-Bot go half as far forward Add code to make the Boe-Bot go backward, left, and right, as shown on pages 119-120 FOR counter = 1 TO 122 PULSOUT 13, 850 PULSOUT 12, 650 PAUSE 20 NEXT 11 EEPROM Navigation Run "EEPROMNavigation.bs2" p. 141 Modify the DATA directive to make your own motion sequence • DATA "FFFBBLFFRFFQ" F = Forward, B = Backward, L = Left, R = Right, Q = Quit DO address instruction ' ' DATA VAR VAR Byte Byte Address: 0123456789 |||||||||| "FLFFRBLBBQ" READ address, instruction address = address + 1 SELECT instruction CASE "F": GOSUB Forward CASE "B": GOSUB Backward CASE "L": GOSUB Left_Turn CASE "R": GOSUB Right_Turn ENDSELECT LOOP UNTIL instruction = "Q" 12 Tactile Navigation with Whiskers Activities: Building and Testing the Whiskers • Page 154-165 • See also wiring diagram next slide 13 Build the Whisker Circuit Left Whisker To Servos 15 14 Vdd 13 12 Vdd Red Black X4 Vdd X5 Vin 10 k 10 k Right Whisker Left Whisker Vss P7 X3 P15 P14 P13 P12 P11 P10 P9 P8 P7 P6 P5 P4 P3 P2 P1 P0 X2 Vdd 220 P5 220 + Vss Vss Board of Education Rev C © 2000-2003 Right Whisker 14 Testing the Whiskers Run "TestWhiskers.bs2" p.160 Press on each whisker and examine the Debug Terminal output. Each whisker should display 1 when not pressed, 0 when pressed. Position the whisker wires to make good contact with the headers DEBUG "WHISKER STATES", CR, "Left Right", CR, "-----------" DO DEBUG CRSRXY, 0, 3, "P5 = ", BIN1 IN5, " P7 = ", BIN1 IN7 PAUSE 50 LOOP 15 Navigation With Whiskers Run "Roaming with Whiskers.bs2" Compare with pushbuttons exercise from the previous day DO IF (IN5 = 0) AND (IN7 = 0) THEN GOSUB Back_Up GOSUB Turn_Left GOSUB Turn_Left ELSEIF (IN5 = 0) THEN GOSUB Back_Up GOSUB Turn_Right ELSEIF (IN7 = 0) THEN GOSUB Back_Up GOSUB Turn_Left ELSE GOSUB Forward_Pulse ENDIF LOOP ' Both whiskers detect obstacle ' Back up & U-turn (left twice) ' Left whisker contacts ' Back up & turn right ' Right whisker contacts ' Back up & turn left ' Both whiskers 1, no contacts ' Apply a forward pulse ' and check again 16 Navigation with Infrared Headlights Activities: Understanding Infrared Object Detection Building and Testing the IR Circuit Object Detection and Avoidance Object Detection and Avoidance in Real-Time 17 Using Infrared Headlights to See the Road IR reflect off obstacles IR LED emits light in infrared region (780 nm) Detector shows "0" if detects IR, "1" otherwise Detector tuned to 38,500 Hz only 18 Building and testing the IR Pairs 15 14 Vdd 13 12 Vdd Red Black P2 X4 Vdd 1 k 220 Vss Vss Vdd P8 1 k IR LED P0 220 Vss Vin Vss X3 IR LED P9 X5 Vss P15 P14 P13 P12 P11 P10 P9 P8 P7 P6 P5 P4 P3 P2 P1 P0 X2 + Board of Education Rev C © 2000-2003 Run "TestLeftIrPair.bs2" Follow directions on p. 223 to test right IR pair 19 How the IR Test Program Works ' Robotics with the Boe-Bot - TestLeftIrPair.bs2 ' Test IR object detection circuits, IR LED connected to P8 ' and detector connected to P9. ' {$STAMP BS2} ' {$PBASIC 2.5} irDetectLeft VAR Bit DO FREQOUT 8, 1, 38500 irDetectLeft = IN9 DEBUG HOME, "irDetectLeft = ", BIN1 irDetectLeft PAUSE 100 LOOP 20 Object Detection and Avoidance Run "RoamingWithIr.bs2" IF (irDetectLeft = 0) AND (irDetectRight = 0) THEN GOSUB Back_Up GOSUB Turn_Left GOSUB Turn_Left ELSEIF (irDetectLeft = 0) THEN GOSUB Back_Up GOSUB Turn_Right ELSEIF (irDetectRight = 0) THEN GOSUB Back_Up GOSUB Turn_Left ELSE GOSUB Forward_Pulse ENDIF Place the Boe-Bot on the floor Your Boe-Bot should roam around and avoid objects 21 Fast IR Roaming Run "FastIRRoaming.bs2" Again the Boe-Bot should roam around and avoid objects Observe: How does this behavior differ from that of "RoamingWithIr.bs2"? IF (irDetectLeft = 0) AND (irDetectRight = 0) THEN pulseLeft = 650 pulseRight = 850 ELSEIF (irDetectLeft = 0) THEN pulseLeft = 850 pulseRight = 850 ELSEIF (irDetectRight = 0) THEN pulseLeft = 650 pulseRight = 650 ELSE pulseLeft = 850 pulseRight = 650 ENDIF 22 Understanding Filter Sensitivity Object 15 14 Vd d 13 12 Red Black X4 Vdd X5 Vin Vss X3 P15 P14 P13 P12 P11 P10 P9 P8 P7 P6 P5 P4 P3 P2 P1 P0 X2 Zone 0 41500 Hz + Board of Education © 20 00 -2 00 3 Zone 1 40500 Hz Zone 2 Zone 3 39500 Hz 38250 Hz Zone 4 37500 Hz Zone 5 No Detection at any Frequency 23 Testing Distance Detection Run "TestLeftFrequencySweep. bs2" Place the Boe-Bot in front of some obstacle (Wall, book, etc) Observe the readings change as you move the Boe-Bot closer to and further away from the obstacle 24 Boe-Bot Shadow Vehicle Follow the detailed instructions on p. 259-260 In summary: • • • • Run "FollowingBoeBot.bs2" Place a sheet of paper in front of your Boe-Bot Move the paper around The Boe-Bot should follow the paper at a constant distance If the Boe-Bot backs away instead, contact the instructor for assistance. Your right/left servos are probably reversed. 25 Boe-Bot Follow-the-Leader Place sticky notes on the back of all Boe-Bots Now select two or three Boe-Bots from the class to be "Leader" BoeBots Create "Leader" Boe-Bots by following the instructions on p. 263 All other Boe-Bots keep the previous program, "FollowingBoeBot.bs2" The "Shadow" Boe-Bots will follow the "Leader" Boe-Bots See how many Boe-Bots will follow in a row, like a train 26 Following a Stripe Create Stripe-Following Boe-Bots Follow the instructions on pp. 264-271 Make sure to point IR pairs downward as detailed in text 15 1 4 V dd 13 1 2 6- 9VD C 9 V dc B a t t er y R ed Bl ack X4 X5 V dd V in VVssss V ss X3 P1 P 3 P 15 P 5 P 14 P 7 P 13 P 9 P 12 P 11 P 11 P 13 P 10 P 15 P 9 V in P 8 X1 P7 P6 P5 P4 P3 + R eset P2 P1 P0 X2 0 1 2 B o a r d o f E d uc a t i o n Pw r R ev C © 2 000 -2 003 22” (56 cm) Start TM ST i n AM PS C LAS S © 200 0- 200 3 R ev C 1 2 X1 X3 V ss X3 P1 P 3 P1 P 155 P 5 P1 P 144 P 133 P 7 P1 P 122 P 9 P1 P 111 P 11 P1 P 1 3 P1 P 100 P 1 5 PP99 P8 V i n P8 P7 P7 P6 P6 P5 P5 P4 P4 P3 P3 P2 P2 P1 P1 P0 P0 X2 Pw r B o a rd o f E d u ca t i o n + Vd d V in X4 V ss X5 R ed B lac k 9Vdc B a t e ry 6- 9V DC 1514 V dd 1312 P9 P8 R ese t P 11 P 10 0 P 14 P 13 P 12 Vs s P0 P2 P4 P6 P8 P1 0 P1 2 P1 4 Vd d U1 w w w . st a m ps i nc la ss .c om V in V ss R st V dd P 15 P 14 P 13 P 12 P 11 P6 P7 P 10 P9 P8 P1 P2 P3 P4 P5 U1 V ss R st V dd P 15 1 S in AT N V ss P0 V ss P0 P2 P4 P6 P8 P 10 P 12 P 14 V dd P5 P6 P7 V in w w w .s t am ps in cl as s. co m TM S out S in ATN V ss P0 P1 P2 P3 P4 S TAM iC n PS LAS S 1 S out Finish 28” (70 cm) 27 Focus on Proportional Control The Boe-Bot will follow a moving object by maintaining a constant distance from it. The amount of correction is directly proportional to the error. That is, the Boe-Bot will speed up or slow down a varying amount, depending on how far away the object is. Distance Reading Meaning Left Wheel PULSOUT Wheel Direction Robot motion 0 Far Away 650 Clockwise Backward fast 2 Desired distance 680 Clockwise Backward slow 5 Very close 750 Stopped Stopped 820 Counterclockwise Forward slow 850 Counterclockwise Forward fast 28 Proportional Control Block Diagram Center pulse width 750 Output adjust +70 Error = -2 Kp X error -35 X -2 + - + + Left servo output 820 Measured left distance = 4 System Desired Distance Measured Distance Boe-Bot is… What to do… Error Output Adjustment Left Servo Output Robot Motion 2 4 A bit too close Go backward 2–4 = -2 -35 * -2 = -70 750 + (-70) = 680 Backwards slow 2 5 Much too close Go backward 2-5 = -3 -35 * -3 = -105 750 + (-105) = 645 Backwards fast 2 1 Much too far away Go forward ? ? ? ? 2 2 A bit too far away ? ? ? ? ? 29 The End We hope you enjoyed this Educator's Course Don't hesitate to contact us for any reason! 30