It supposed to: Run forward until find something, wait until it is moved, and repeat.
Here are the classes:
- Code: Select all
package com.mydomain;
import lejos.nxt.*;
import lejos.robotics.subsumption.*;
//Behavior "Scan"
//Search for objects in vicinity. Stop when something is in sight.
public class Scan implements Behavior {
/**
* @param args
*/
private UltrasonicSensor sonar = new UltrasonicSensor(SensorPort.S4);
private boolean suppressed = false;
public void suppress() {
suppressed = true;
}
public boolean takeControl() {
return (sonar.getDistance() > 25);
}
public void action() {
suppressed = false;
Motor.A.setSpeed(180);
Motor.C.setSpeed(180);
Motor.A.forward();
Motor.C.forward();
while(!suppressed) {
Thread.yield();
LCD.drawInt(sonar.getDistance(),3, 5, 3);
}
Motor.A.stop();
Motor.C.stop();
}
}
- Code: Select all
package com.mydomain;
import lejos.nxt.*;
import lejos.robotics.subsumption.*;
//Stop behavior
//Just stops when it is 25 centimers/less away from object
public class Stop implements Behavior{
private UltrasonicSensor sonar = new UltrasonicSensor(SensorPort.S4);
private boolean suppressed = false;
public void suppress() {
suppressed = true;
}
public boolean takeControl() {
return (sonar.getDistance() < 25);
}
public void action() {
suppressed = false;
Motor.A.stop();
Motor.C.stop();
while(!suppressed) {
Thread.yield();
LCD.drawInt(sonar.getDistance(),3, 5, 3);
}
Motor.A.stop();
Motor.C.stop();
}
}
- Code: Select all
package com.mydomain;
import lejos.robotics.subsumption.*;
//SwarmFind
//Meant to cycle through behaviors to help swarm gather around desirable object.
public class SwarmFind {
/**
* @param args
*/
public static void main(String[] args) {
Behavior scanner = new Scan();
Behavior stop = new Stop();
Behavior[] behaviors = {scanner,stop};
Arbitrator arby = new Arbitrator(behaviors);
arby.start();
}
}
Can anyone tell me if it's a coding issue, not understanding behaviors, or ide issue?
