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 @LATTICE("C<V,V<T,V*")
\r
28 @METHODDEFAULT("THIS<IN,IN*,THISLOC=THIS,GLOBALLOC=THIS")
\r
29 public class StrategyMgr {
\r
32 private MotorControl mc;
\r
33 private static final int zeroSpeed = 45;
\r
35 private Random rand;
\r
37 private boolean DEBUGL = true;
\r
38 // private boolean DEBUGL = false;
\r
40 // private boolean DEBUG = true;
\r
42 private boolean DEBUG = true;
\r
45 * Constructor - Invoke communication to remote application thread
\r
47 public StrategyMgr(@DELEGATE MotorControl motorControl) {
\r
49 rand = new Random();
\r
52 void processSonars(@LOC("IN") byte sonarSensors) {
\r
54 // 5 sensors. 1,2 are fromnt left and right.
\r
55 // Sensor 3 is right side, 4 back and 5 is left side.
\r
56 if ((sonarSensors & 0x1f) == 0) {
\r
57 // No sensor data may mean dead area between sensors.
\r
58 // Continue with the last gesture until any sensor
\r
61 System.out.println("sonar: NO SONARS!!!!!!!!");
\r
63 } else if ((sonarSensors & (RobotMain.LF_RT_FRONT)) == (RobotMain.LF_RT_FRONT)) {
\r
65 System.out.println("sonar: straight");
\r
68 } else if ((sonarSensors & RobotMain.LF_FRONT) == RobotMain.LF_FRONT) {
\r
70 System.out.println("sonar: bearLeft");
\r
73 } else if ((sonarSensors & RobotMain.RT_FRONT) == RobotMain.RT_FRONT) {
\r
75 System.out.println("sonar: bearRight");
\r
78 } else if ((sonarSensors & RobotMain.RT_SIDE) == RobotMain.RT_SIDE) {
\r
80 System.out.println("sonar: right");
\r
83 } else if ((sonarSensors & RobotMain.LF_SIDE) == RobotMain.LF_SIDE) {
\r
85 System.out.println("sonar: left");
\r
88 } else if ((sonarSensors & RobotMain.BK_SIDE) == RobotMain.BK_SIDE) {
\r
90 System.out.println("sonar: spin180");
\r
96 void processLineSensors(@LOC("IN") byte lineSensorsMask) {
\r
98 @LOC("IN") int count = 0;
\r
100 while ((lineSensorsMask & RobotMain.LS_ALL) != 0) {
\r
103 // if the robot fail to get out of weird condition wihtin 100 steps,
\r
104 // terminate while loop for stabilizing behavior.
\r
110 if ((lineSensorsMask & RobotMain.LS_ALL) == RobotMain.LS_ALL) {
\r
112 System.out.println("Line Sensors - ALL");
\r
114 } else if ((lineSensorsMask & RobotMain.LS_LEFT_RIGHT) == RobotMain.LS_LEFT_RIGHT) {
\r
116 System.out.println("Line Sensors - Left & Right");
\r
119 // Thread.sleep(1000);
\r
120 } catch (InterruptedException ie) {
\r
124 // Thread.sleep(1000);
\r
125 } catch (InterruptedException ie) {
\r
127 } else if ((lineSensorsMask & RobotMain.LS_LEFT_REAR) == RobotMain.LS_LEFT_REAR) {
\r
129 System.out.println("Line Sensors - Left & Rear");
\r
132 // Thread.sleep(1000);
\r
133 } catch (InterruptedException ie) {
\r
135 } else if ((lineSensorsMask & RobotMain.LS_RIGHT_REAR) == RobotMain.LS_RIGHT_REAR) {
\r
137 System.out.println("Line Sensors - Right & Rear");
\r
140 // Thread.sleep(1000);
\r
141 } catch (InterruptedException ie) {
\r
143 } else if ((lineSensorsMask & RobotMain.LS_LEFT) == RobotMain.LS_LEFT) {
\r
145 System.out.println("Line Sensors - Left");
\r
149 // Thread.sleep(1000);
\r
150 } catch (InterruptedException ie) {
\r
152 } else if ((lineSensorsMask & RobotMain.LS_RIGHT) == RobotMain.LS_RIGHT) {
\r
154 System.out.println("Line Sensors - Right");
\r
157 // Thread.sleep(1000);
\r
158 } catch (InterruptedException ie) {
\r
160 } else if ((lineSensorsMask & RobotMain.LS_REAR) == RobotMain.LS_REAR) {
\r
162 System.out.println("Line Sensors - Rear");
\r
165 // Thread.sleep(1000);
\r
166 } catch (InterruptedException ie) {
\r
169 lineSensorsMask = TestSensorInput.getCommand();
\r
173 public void stop() {
\r
175 System.out.println("StrageyMgr: stop....");
\r
176 mc.setSpeedLeft(zeroSpeed);
\r
177 mc.setSpeedRight(zeroSpeed);
\r
180 public void search() {
\r
182 System.out.println("StrategyMgr: search....");
\r
183 mc.setSpeedLeft(70);
\r
184 mc.setSpeedRight(50);
\r
187 public void straight() {
\r
189 System.out.println("StrategyMgr: strait....");
\r
190 mc.setSpeedLeft(100);
\r
191 mc.setSpeedRight(100);
\r
194 public void spinRight() {
\r
196 System.out.println("StrategyMgr: spinRight....");
\r
197 mc.setSpeedSpinLeft(100);
\r
198 mc.setSpeedSpinRight(0);
\r
201 public void spinLeft() {
\r
203 System.out.println("StrategyMgr: spinLeft....");
\r
204 mc.setSpeedSpinLeft(0);
\r
205 mc.setSpeedSpinRight(100);
\r
208 public void spin180() {
\r
209 @LOC("THIS,StrategyMgr.V") int mod = (rand.nextInt() % 2);
\r
212 System.out.println("StrategyMgr: spin180....");
\r
214 mc.setSpeedSpinLeft(0);
\r
215 mc.setSpeedSpinRight(100);
\r
217 mc.setSpeedSpinLeft(100);
\r
218 mc.setSpeedSpinRight(0);
\r
222 public void right() {
\r
224 System.out.println("StrategyMgr: right....");
\r
225 mc.setSpeedTurnLeft(100);
\r
226 mc.setSpeedRight(zeroSpeed);
\r
229 public void left() {
\r
231 System.out.println("StrategyMgr: left....");
\r
232 mc.setSpeedLeft(zeroSpeed);
\r
233 mc.setSpeedTurnRight(100);
\r
236 public void bearRight() {
\r
238 System.out.println("StrategyMgr: bearRight....");
\r
239 mc.setSpeedTurnLeft(100);
\r
240 mc.setSpeedTurnRight(60);
\r
243 public void bearLeft() {
\r
245 System.out.println("StrategyMgr: bearLeft....");
\r
246 mc.setSpeedTurnLeft(60);
\r
247 mc.setSpeedTurnRight(100);
\r
250 public void back() {
\r
252 System.out.println("StrategyMgr: back....");
\r
253 mc.setSpeedLeft(0);
\r
254 mc.setSpeedRight(0);
\r
257 public void backBearLeft() {
\r
259 System.out.println("StrategyMgr: backBearLeft....");
\r
260 mc.setSpeedLeft(30);
\r
261 mc.setSpeedRight(0);
\r
264 public void backBearRight() {
\r
266 System.out.println("StrategyMgr: backBearRight....");
\r
267 mc.setSpeedLeft(0);
\r
268 mc.setSpeedRight(30);
\r