1 / 20

Control

Control. Some Material taken from RobotSubsumption.pdf. Remember Where Are We Going?. Sumo-Bot competitions. Controlling Robot Movement Based on Photo-Resistor Readings. ' -----[ Constants ]--------------------------------------- LeftDark CON 108 RightDark CON 114

adara
Download Presentation

Control

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Control Some Material taken from RobotSubsumption.pdf

  2. Remember Where Are We Going? Sumo-Bot competitions

  3. Controlling Robot Movement Based on Photo-Resistor Readings ' -----[ Constants ]--------------------------------------- LeftDark CON 108 RightDark CON 114 LeftWhite CON 20 RightWhite CON 22 ' Average light sensor value LeftThreshold CON LeftWhite + LeftDark / 2 RightThreshold CON RightWhite + RightDark / 2 ' -----[ Variables ]---------------------------------------- timeLeft VAR Word timeRight VAR Word ' -----[ Main Routine ]------------------------------------ DO GOSUB Test_Photoresistors GOSUB Navigate LOOP

  4. Code ' -----[ Subroutine - Test_Photoresistors ]-------------- Test_Photoresistors: HIGH 6 ' Left RC time measurement. PAUSE 5 RCTIME 6, 1, timeLeft HIGH 3 ' Right RC time measurement. PAUSE 5 RCTIME 3, 1, timeRight RETURN

  5. Code ' -----[ Subroutine - Navigate to avoid light ]------------- Navigate: IF (timeLeft < LeftThreshold) AND (timeRight < RightThreshold) THEN PULSOUT 13, 650 ‘ go backwards PULSOUT 12, 850 ELSEIF (timeLeft < LeftThreshold) THEN PULSOUT 13, 800 ‘ go right PULSOUT 12, 600 ELSEIF (timeRight < RightThreshold) THEN PULSOUT 13, 600 ‘ go left PULSOUT 12, 800 ELSE PULSOUT 13, 850 ‘ go forwards PULSOUT 12, 650 ENDIF PAUSE 20 RETURN

  6. Read photo- resistors backup turn right turn left go forward Finite State Machine (FSM) Representation both high left low right low both low

  7. Controlling Robot Movement Based on Proximity Measurement ' {$STAMP BS2} ' {$PBASIC 2.5} ' -----[ Pins ]----------------------------------- Trigger PIN 0 Echo PIN 1 ' -----[ Variables ]----------------------------- samples VAR Nib ' loop counter pWidth VAR Word ' pulse width sonic sensor rawDist VAR Word ' filtered distance cm VAR Word inches VAR Word irDetectLeft VAR Bit irDetectRight VAR Bit pulseCount VAR Byte ' -----[ Constants ]----------------------------------- Trig10 CON 5 ' trigger pulse = 10 uS ToCm CON 30 ' conversion factor to cm

  8. Code ' -----[ Main Routine ]----------------------------------- DO GOSUB Read_IR GOSUB Read_Sonar IF (sonarForward = 0) THEN GOSUB Forward_Pulse ELSEIF (irDetectLeft = 0) THEN GOSUB Turn_Left ELSEIF (irDetectRight = 0) THEN GOSUB Turn_Right ELSE GOSUB Forward_Pulse ENDIF LOOP

  9. Code ' -----[ Subroutines ]------------------------------------- Read_IR: FREQOUT 8, 1, 38500 irDetectLeft = IN9 FREQOUT 2, 1, 38500 irDetectRight = IN3 RETURN Read_Sonar: rawDist = 0 FOR samples = 1 TO 5 ' take five samples PULSOUT Trigger, Trig10 ' 10 uS trigger pulse PULSIN Echo, 1, pWidth ' measure pulse rawDist = rawDist + (pWidth / 5) PAUSE 10 NEXT IF ( ((rawDist / ToCm) */ $03EF) ) < 36 THEN sonarForward = 0 ELSE sonarForward = 1 ENDIF RETURN

  10. Code ' -----[ Subroutines ]-------------------------------------- Forward_Pulse: PULSOUT 13, 850 PULSOUT 12, 650 RETURN Turn_Left: PULSOUT 13, 650 PULSOUT 12, 650 RETURN

  11. Code ' -----[ Subroutines ]-------------------------------------- Turn_Right: PULSOUT 13, 850 PULSOUT 12, 850 RETURN Back_Up: PULSOUT 13, 650 PULSOUT 12, 850 RETURN

  12. No Obj Obj left Obj right Obj forward Read IR & Sonar Go forward turn right turn left go forward Finite State Machine (FSM) Representation

  13. go forward turn left turn right backup Read photo- resistors How to Put It Together? No Obj Obj left Obj right Obj forward Read IR & sonar Go forward turn right turn left go forward both high left low right low both low

  14. Possible Problems • Jerky or halting movement • Chase object over boundary • Never detect opponent • More?

  15. Possible Solution • Subsumption Architecture A programming process by which one behavior subsumes, or over-rides another based on an explicit priority that we have defined. First described by Dr. Rodney Brooks in "A robust layered control system for a mobile robot,” IEEE Journal of Robotics and Automation., RA-2, April, 14-23, 1986. • FSM with exit conditions

  16. Go forward Go backwards turn teft turn right read IR & sonar and set nextState variable read Photoresistors and set nextState variable check nextState variable and branch FSM

  17. backup turn right turn left go forward read Photoresistors and set nextState variable check nextState variable and branch Read IR Alternative FSM Go forward turn right turn left go forward

  18. Program High-Level Outline • Declare pin assignments, constants and variables • Initialize thresholds • Wait the required start delay • Read boundary line sensors and move accordingly • If the boundary line is not detected, read proximity sensors and move accordingly • Repeat steps 4 and 5 until completion

  19. Main Loop Do GOSUB Read_Line_Sensors IF (lightLeft < leftThresh) AND (lightRight < rightThresh) THEN GOSUB About_Face ' boundary ahead ELSEIF (lightLeft < leftThresh) THEN GOSUB Spin_Right ' boundary to left ELSEIF (lightRight < rightThresh) THEN GOSUB Spin_Left ' boundary to right ELSE PULSOUT LMotor, LFwdFast PULSOUT RMotor, RFwdFast GOSUB Search_For_Opponent ENDIF Loop

  20. Possible Enhancements • Optimize the position of the sensors • Optimize your mechanical design for fighting • Consider using lego components including motors • Design against being pushed out of the ring • Optimize the code to maximize bot performance • Evaluate tradeoffs in movement choices and sensor reading • Optimize the programming constructs that you use to increase processing speed • BRANCH value, (Case_0, Case_1, Case_2) • LOOKUP Index, (Value0, Value1, ...ValueN), Variable • LOOKDOWN Target, {ComparisonOp} [Value0, Value1, ...ValueN], Variable

More Related