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 = false;
\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
48 void processSonars(byte sonarSensors) {
\r
50 // 5 sensors. 1,2 are fromnt left and right.
\r
51 // Sensor 3 is right side, 4 back and 5 is left side.
\r
52 if ((sonarSensors & 0x1f) == 0) {
\r
53 // No sensor data may mean dead area between sensors.
\r
54 // Continue with the last gesture until any sensor
\r
57 System.out.println("sonar: NO SONARS!!!!!!!!");
\r
59 } else if ((sonarSensors & (RobotMain.LF_RT_FRONT)) == (RobotMain.LF_RT_FRONT)) {
\r
61 System.out.println("sonar: straight");
\r
64 } else if ((sonarSensors & RobotMain.LF_FRONT) == RobotMain.LF_FRONT) {
\r
66 System.out.println("sonar: bearLeft");
\r
69 } else if ((sonarSensors & RobotMain.RT_FRONT) == RobotMain.RT_FRONT) {
\r
71 System.out.println("sonar: bearRight");
\r
74 } else if ((sonarSensors & RobotMain.RT_SIDE) == RobotMain.RT_SIDE) {
\r
76 System.out.println("sonar: right");
\r
79 } else if ((sonarSensors & RobotMain.LF_SIDE) == RobotMain.LF_SIDE) {
\r
81 System.out.println("sonar: left");
\r
84 } else if ((sonarSensors & RobotMain.BK_SIDE) == RobotMain.BK_SIDE) {
\r
86 System.out.println("sonar: spin180");
\r
92 void processLineSensors(byte lineSensorsMask) {
\r
93 while ((lineSensorsMask & RobotMain.LS_ALL) != 0) {
\r
94 if ((lineSensorsMask & RobotMain.LS_ALL) == RobotMain.LS_ALL) {
\r
96 System.out.println("Line Sensors - ALL");
\r
98 } else if ((lineSensorsMask & RobotMain.LS_LEFT_RIGHT) == RobotMain.LS_LEFT_RIGHT) {
\r
100 System.out.println("Line Sensors - Left & Right");
\r
103 // Thread.sleep(1000);
\r
104 } catch (InterruptedException ie) {
\r
108 // Thread.sleep(1000);
\r
109 } catch (InterruptedException ie) {
\r
111 } else if ((lineSensorsMask & RobotMain.LS_LEFT_REAR) == RobotMain.LS_LEFT_REAR) {
\r
113 System.out.println("Line Sensors - Left & Rear");
\r
116 // Thread.sleep(1000);
\r
117 } catch (InterruptedException ie) {
\r
119 } else if ((lineSensorsMask & RobotMain.LS_RIGHT_REAR) == RobotMain.LS_RIGHT_REAR) {
\r
121 System.out.println("Line Sensors - Right & Rear");
\r
124 // Thread.sleep(1000);
\r
125 } catch (InterruptedException ie) {
\r
127 } else if ((lineSensorsMask & RobotMain.LS_LEFT) == RobotMain.LS_LEFT) {
\r
129 System.out.println("Line Sensors - Left");
\r
132 // Thread.sleep(1000);
\r
133 } catch (InterruptedException ie) {
\r
135 } else if ((lineSensorsMask & RobotMain.LS_RIGHT) == RobotMain.LS_RIGHT) {
\r
137 System.out.println("Line Sensors - Right");
\r
140 // Thread.sleep(1000);
\r
141 } catch (InterruptedException ie) {
\r
143 } else if ((lineSensorsMask & RobotMain.LS_REAR) == RobotMain.LS_REAR) {
\r
145 System.out.println("Line Sensors - Rear");
\r
148 // Thread.sleep(1000);
\r
149 } catch (InterruptedException ie) {
\r
154 // lineSensorsMask = sm.getLineSensorsState();
\r
159 public void stop() {
\r
161 System.out.println("StrageyMgr: stop....");
\r
162 pwmControl.setSpeedLeft(zeroSpeed);
\r
163 pwmControl.setSpeedRight(zeroSpeed);
\r
166 public void search() {
\r
168 System.out.println("StrategyMgr: search....");
\r
169 pwmControl.setSpeedLeft(70);
\r
170 pwmControl.setSpeedRight(50);
\r
173 public void straight() {
\r
175 System.out.println("StrategyMgr: strait....");
\r
176 pwmControl.setSpeedLeft(100);
\r
177 pwmControl.setSpeedRight(100);
\r
180 public void spinRight() {
\r
182 System.out.println("StrategyMgr: spinRight....");
\r
183 pwmControl.setSpeedSpinLeft(100);
\r
184 pwmControl.setSpeedSpinRight(0);
\r
187 public void spinLeft() {
\r
189 System.out.println("StrategyMgr: spinLeft....");
\r
190 pwmControl.setSpeedSpinLeft(0);
\r
191 pwmControl.setSpeedSpinRight(100);
\r
194 public void spin180() {
\r
195 int mod = (rand.nextInt() % 2);
\r
198 System.out.println("StrategyMgr: spin180....");
\r
200 pwmControl.setSpeedSpinLeft(0);
\r
201 pwmControl.setSpeedSpinRight(100);
\r
203 pwmControl.setSpeedSpinLeft(100);
\r
204 pwmControl.setSpeedSpinRight(0);
\r
208 public void right() {
\r
210 System.out.println("StrategyMgr: right....");
\r
211 pwmControl.setSpeedTurnLeft(100);
\r
212 pwmControl.setSpeedRight(zeroSpeed);
\r
215 public void left() {
\r
217 System.out.println("StrategyMgr: left....");
\r
218 pwmControl.setSpeedLeft(zeroSpeed);
\r
219 pwmControl.setSpeedTurnRight(100);
\r
222 public void bearRight() {
\r
224 System.out.println("StrategyMgr: bearRight....");
\r
225 pwmControl.setSpeedTurnLeft(100);
\r
226 pwmControl.setSpeedTurnRight(60);
\r
229 public void bearLeft() {
\r
231 System.out.println("StrategyMgr: bearLeft....");
\r
232 pwmControl.setSpeedTurnLeft(60);
\r
233 pwmControl.setSpeedTurnRight(100);
\r
236 public void back() {
\r
238 System.out.println("StrategyMgr: back....");
\r
239 pwmControl.setSpeedLeft(0);
\r
240 pwmControl.setSpeedRight(0);
\r
243 public void backBearLeft() {
\r
245 System.out.println("StrategyMgr: backBearLeft....");
\r
246 pwmControl.setSpeedLeft(30);
\r
247 pwmControl.setSpeedRight(0);
\r
250 public void backBearRight() {
\r
252 System.out.println("StrategyMgr: backBearRight....");
\r
253 pwmControl.setSpeedLeft(0);
\r
254 pwmControl.setSpeedRight(30);
\r