4 * Copyright (c) 1993-2002 Sun Microsystems, Inc. All Rights Reserved.
\r
6 * This software is the confidential and proprietary information of Sun
\r
7 * Microsystems, Inc. ("Confidential Information"). You shall not
\r
8 * disclose such Confidential Information and shall use it only in
\r
9 * accordance with the terms of the license agreement you entered into
\r
12 * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF
\r
13 * THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
\r
14 * TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
\r
15 * PARTICULAR PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR
\r
16 * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
\r
17 * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.
\r
21 * StrategyMgr - an isolation class ment for programmers to modify and create
\r
22 * thier own code for robot strategy.
\r
24 * @author Michael Gesundheit
\r
27 public class StrategyMgr {
\r
29 private PWMControl pwmControl;
\r
30 private int zeroSpeed = 45;
\r
31 private Random rand;
\r
32 private boolean DEBUGL = true;
\r
33 // private boolean DEBUGL = false;
\r
35 // private boolean DEBUG = true;
\r
36 private boolean DEBUG = true;
\r
39 * Constructor - Invoke communication to remote application thread
\r
41 StrategyMgr(PWMManager pwmManager) {
\r
42 this.pwmControl = pwmManager.getPWMControl();
\r
43 rand = new Random();
\r
46 void processSonars(byte sonarSensors) {
\r
48 // 5 sensors. 1,2 are fromnt left and right.
\r
49 // Sensor 3 is right side, 4 back and 5 is left side.
\r
50 if ((sonarSensors & 0x1f) == 0) {
\r
51 // No sensor data may mean dead area between sensors.
\r
52 // Continue with the last gesture until any sensor
\r
55 System.out.println("sonar: NO SONARS!!!!!!!!");
\r
57 } else if ((sonarSensors & (RobotMain.LF_RT_FRONT)) == (RobotMain.LF_RT_FRONT)) {
\r
59 System.out.println("sonar: straight");
\r
62 } else if ((sonarSensors & RobotMain.LF_FRONT) == RobotMain.LF_FRONT) {
\r
64 System.out.println("sonar: bearLeft");
\r
67 } else if ((sonarSensors & RobotMain.RT_FRONT) == RobotMain.RT_FRONT) {
\r
69 System.out.println("sonar: bearRight");
\r
72 } else if ((sonarSensors & RobotMain.RT_SIDE) == RobotMain.RT_SIDE) {
\r
74 System.out.println("sonar: right");
\r
77 } else if ((sonarSensors & RobotMain.LF_SIDE) == RobotMain.LF_SIDE) {
\r
79 System.out.println("sonar: left");
\r
82 } else if ((sonarSensors & RobotMain.BK_SIDE) == RobotMain.BK_SIDE) {
\r
84 System.out.println("sonar: spin180");
\r
90 void processLineSensors(byte lineSensorsMask) {
\r
91 while ((lineSensorsMask & RobotMain.LS_ALL) != 0) {
\r
92 if ((lineSensorsMask & RobotMain.LS_ALL) == RobotMain.LS_ALL) {
\r
94 System.out.println("Line Sensors - ALL");
\r
96 } else if ((lineSensorsMask & RobotMain.LS_LEFT_RIGHT) == RobotMain.LS_LEFT_RIGHT) {
\r
98 System.out.println("Line Sensors - Left & Right");
\r
101 // Thread.sleep(1000);
\r
102 } catch (InterruptedException ie) {
\r
106 // Thread.sleep(1000);
\r
107 } catch (InterruptedException ie) {
\r
109 } else if ((lineSensorsMask & RobotMain.LS_LEFT_REAR) == RobotMain.LS_LEFT_REAR) {
\r
111 System.out.println("Line Sensors - Left & Rear");
\r
114 // Thread.sleep(1000);
\r
115 } catch (InterruptedException ie) {
\r
117 } else if ((lineSensorsMask & RobotMain.LS_RIGHT_REAR) == RobotMain.LS_RIGHT_REAR) {
\r
119 System.out.println("Line Sensors - Right & Rear");
\r
122 // Thread.sleep(1000);
\r
123 } catch (InterruptedException ie) {
\r
125 } else if ((lineSensorsMask & RobotMain.LS_LEFT) == RobotMain.LS_LEFT) {
\r
127 System.out.println("Line Sensors - Left");
\r
130 // Thread.sleep(1000);
\r
131 } catch (InterruptedException ie) {
\r
133 } else if ((lineSensorsMask & RobotMain.LS_RIGHT) == RobotMain.LS_RIGHT) {
\r
135 System.out.println("Line Sensors - Right");
\r
138 // Thread.sleep(1000);
\r
139 } catch (InterruptedException ie) {
\r
141 } else if ((lineSensorsMask & RobotMain.LS_REAR) == RobotMain.LS_REAR) {
\r
143 System.out.println("Line Sensors - Rear");
\r
146 // Thread.sleep(1000);
\r
147 } catch (InterruptedException ie) {
\r
150 lineSensorsMask = TestSensorInput.getCommand();
\r
154 public void stop() {
\r
156 System.out.println("StrageyMgr: stop....");
\r
157 pwmControl.setSpeedLeft(zeroSpeed);
\r
158 pwmControl.setSpeedRight(zeroSpeed);
\r
161 public void search() {
\r
163 System.out.println("StrategyMgr: search....");
\r
164 pwmControl.setSpeedLeft(70);
\r
165 pwmControl.setSpeedRight(50);
\r
168 public void straight() {
\r
170 System.out.println("StrategyMgr: strait....");
\r
171 pwmControl.setSpeedLeft(100);
\r
172 pwmControl.setSpeedRight(100);
\r
175 public void spinRight() {
\r
177 System.out.println("StrategyMgr: spinRight....");
\r
178 pwmControl.setSpeedSpinLeft(100);
\r
179 pwmControl.setSpeedSpinRight(0);
\r
182 public void spinLeft() {
\r
184 System.out.println("StrategyMgr: spinLeft....");
\r
185 pwmControl.setSpeedSpinLeft(0);
\r
186 pwmControl.setSpeedSpinRight(100);
\r
189 public void spin180() {
\r
190 int mod = (rand.nextInt() % 2);
\r
193 System.out.println("StrategyMgr: spin180....");
\r
195 pwmControl.setSpeedSpinLeft(0);
\r
196 pwmControl.setSpeedSpinRight(100);
\r
198 pwmControl.setSpeedSpinLeft(100);
\r
199 pwmControl.setSpeedSpinRight(0);
\r
203 public void right() {
\r
205 System.out.println("StrategyMgr: right....");
\r
206 pwmControl.setSpeedTurnLeft(100);
\r
207 pwmControl.setSpeedRight(zeroSpeed);
\r
210 public void left() {
\r
212 System.out.println("StrategyMgr: left....");
\r
213 pwmControl.setSpeedLeft(zeroSpeed);
\r
214 pwmControl.setSpeedTurnRight(100);
\r
217 public void bearRight() {
\r
219 System.out.println("StrategyMgr: bearRight....");
\r
220 pwmControl.setSpeedTurnLeft(100);
\r
221 pwmControl.setSpeedTurnRight(60);
\r
224 public void bearLeft() {
\r
226 System.out.println("StrategyMgr: bearLeft....");
\r
227 pwmControl.setSpeedTurnLeft(60);
\r
228 pwmControl.setSpeedTurnRight(100);
\r
231 public void back() {
\r
233 System.out.println("StrategyMgr: back....");
\r
234 pwmControl.setSpeedLeft(0);
\r
235 pwmControl.setSpeedRight(0);
\r
238 public void backBearLeft() {
\r
240 System.out.println("StrategyMgr: backBearLeft....");
\r
241 pwmControl.setSpeedLeft(30);
\r
242 pwmControl.setSpeedRight(0);
\r
245 public void backBearRight() {
\r
247 System.out.println("StrategyMgr: backBearRight....");
\r
248 pwmControl.setSpeedLeft(0);
\r
249 pwmControl.setSpeedRight(30);
\r