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
29 public class StrategyMgr {
\r
32 private MotorControl mc;
\r
33 private static final int zeroSpeed = 45;
\r
35 private boolean DEBUGL = true;
\r
36 // private boolean DEBUGL = false;
\r
38 // private boolean DEBUG = true;
\r
40 private boolean DEBUG = true;
\r
43 * Constructor - Invoke communication to remote application thread
\r
45 public StrategyMgr(@DELEGATE MotorControl motorControl) {
\r
47 RandomWrapper.init();
\r
50 void processSonars( byte sonarSensors) {
\r
52 // 5 sensors. 1,2 are fromnt left and right.
\r
53 // Sensor 3 is right side, 4 back and 5 is left side.
\r
54 if ((sonarSensors & 0x1f) == 0) {
\r
55 // No sensor data may mean dead area between sensors.
\r
56 // Continue with the last gesture until any sensor
\r
59 System.out.println("sonar: NO SONARS!!!!!!!!");
\r
61 } else if ((sonarSensors & (RobotMain.LF_RT_FRONT)) == (RobotMain.LF_RT_FRONT)) {
\r
63 System.out.println("sonar: straight");
\r
66 } else if ((sonarSensors & RobotMain.LF_FRONT) == RobotMain.LF_FRONT) {
\r
68 System.out.println("sonar: bearLeft");
\r
71 } else if ((sonarSensors & RobotMain.RT_FRONT) == RobotMain.RT_FRONT) {
\r
73 System.out.println("sonar: bearRight");
\r
76 } else if ((sonarSensors & RobotMain.RT_SIDE) == RobotMain.RT_SIDE) {
\r
78 System.out.println("sonar: right");
\r
81 } else if ((sonarSensors & RobotMain.LF_SIDE) == RobotMain.LF_SIDE) {
\r
83 System.out.println("sonar: left");
\r
86 } else if ((sonarSensors & RobotMain.BK_SIDE) == RobotMain.BK_SIDE) {
\r
88 System.out.println("sonar: spin180");
\r
94 void processLineSensors( byte lineSensorsMask) {
\r
98 while ((lineSensorsMask & RobotMain.LS_ALL) != 0) {
\r
101 // if the robot fail to get out of weird condition wihtin 100 steps,
\r
102 // terminate while loop for stabilizing behavior.
\r
108 if ((lineSensorsMask & RobotMain.LS_ALL) == RobotMain.LS_ALL) {
\r
110 System.out.println("Line Sensors - ALL");
\r
112 } else if ((lineSensorsMask & RobotMain.LS_LEFT_RIGHT) == RobotMain.LS_LEFT_RIGHT) {
\r
114 System.out.println("Line Sensors - Left & Right");
\r
117 // Thread.sleep(1000);
\r
118 } catch (InterruptedException ie) {
\r
122 // Thread.sleep(1000);
\r
123 } catch (InterruptedException ie) {
\r
125 } else if ((lineSensorsMask & RobotMain.LS_LEFT_REAR) == RobotMain.LS_LEFT_REAR) {
\r
127 System.out.println("Line Sensors - Left & Rear");
\r
130 // Thread.sleep(1000);
\r
131 } catch (InterruptedException ie) {
\r
133 } else if ((lineSensorsMask & RobotMain.LS_RIGHT_REAR) == RobotMain.LS_RIGHT_REAR) {
\r
135 System.out.println("Line Sensors - Right & Rear");
\r
138 // Thread.sleep(1000);
\r
139 } catch (InterruptedException ie) {
\r
141 } else if ((lineSensorsMask & RobotMain.LS_LEFT) == RobotMain.LS_LEFT) {
\r
143 System.out.println("Line Sensors - Left");
\r
147 // Thread.sleep(1000);
\r
148 } catch (InterruptedException ie) {
\r
150 } else if ((lineSensorsMask & RobotMain.LS_RIGHT) == RobotMain.LS_RIGHT) {
\r
152 System.out.println("Line Sensors - Right");
\r
155 // Thread.sleep(1000);
\r
156 } catch (InterruptedException ie) {
\r
158 } else if ((lineSensorsMask & RobotMain.LS_REAR) == RobotMain.LS_REAR) {
\r
160 System.out.println("Line Sensors - Rear");
\r
163 // Thread.sleep(1000);
\r
164 } catch (InterruptedException ie) {
\r
167 lineSensorsMask = TestSensorInput.getCommand();
\r
171 public void stop() {
\r
173 System.out.println("StrageyMgr: stop....");
\r
174 mc.setSpeedLeft(zeroSpeed);
\r
175 mc.setSpeedRight(zeroSpeed);
\r
178 public void search() {
\r
180 System.out.println("StrategyMgr: search....");
\r
181 mc.setSpeedLeft(70);
\r
182 mc.setSpeedRight(50);
\r
185 public void straight() {
\r
187 System.out.println("StrategyMgr: strait....");
\r
188 mc.setSpeedLeft(100);
\r
189 mc.setSpeedRight(100);
\r
192 public void spinRight() {
\r
194 System.out.println("StrategyMgr: spinRight....");
\r
195 mc.setSpeedSpinLeft(100);
\r
196 mc.setSpeedSpinRight(0);
\r
199 public void spinLeft() {
\r
201 System.out.println("StrategyMgr: spinLeft....");
\r
202 mc.setSpeedSpinLeft(0);
\r
203 mc.setSpeedSpinRight(100);
\r
206 public void spin180() {
\r
207 int mod = (RandomWrapper.nextInt() % 2);
\r
210 System.out.println("StrategyMgr: spin180....");
\r
212 mc.setSpeedSpinLeft(0);
\r
213 mc.setSpeedSpinRight(100);
\r
215 mc.setSpeedSpinLeft(100);
\r
216 mc.setSpeedSpinRight(0);
\r
220 public void right() {
\r
222 System.out.println("StrategyMgr: right....");
\r
223 mc.setSpeedTurnLeft(100);
\r
224 mc.setSpeedRight(zeroSpeed);
\r
227 public void left() {
\r
229 System.out.println("StrategyMgr: left....");
\r
230 mc.setSpeedLeft(zeroSpeed);
\r
231 mc.setSpeedTurnRight(100);
\r
234 public void bearRight() {
\r
236 System.out.println("StrategyMgr: bearRight....");
\r
237 mc.setSpeedTurnLeft(100);
\r
238 mc.setSpeedTurnRight(60);
\r
241 public void bearLeft() {
\r
243 System.out.println("StrategyMgr: bearLeft....");
\r
244 mc.setSpeedTurnLeft(60);
\r
245 mc.setSpeedTurnRight(100);
\r
248 public void back() {
\r
250 System.out.println("StrategyMgr: back....");
\r
251 mc.setSpeedLeft(0);
\r
252 mc.setSpeedRight(0);
\r
255 public void backBearLeft() {
\r
257 System.out.println("StrategyMgr: backBearLeft....");
\r
258 mc.setSpeedLeft(30);
\r
259 mc.setSpeedRight(0);
\r
262 public void backBearRight() {
\r
264 System.out.println("StrategyMgr: backBearRight....");
\r
265 mc.setSpeedLeft(0);
\r
266 mc.setSpeedRight(30);
\r