80 lines
2.2 KiB
Java
80 lines
2.2 KiB
Java
// INFO: See below.
|
|
|
|
public class TutorialController extends Controller {
|
|
|
|
public SpringObject object;
|
|
|
|
ComposedSpringObject cso;
|
|
|
|
/* These are the agents senses (inputs) */
|
|
DoubleFeature x; /* Positions */
|
|
DoubleFeature y;
|
|
DoubleFeature vx; /* Velocities */
|
|
DoubleFeature vy;
|
|
DoubleFeature angle; /* Angle */
|
|
|
|
/* Example:
|
|
* x.getValue() returns the vertical position of the rocket
|
|
*/
|
|
|
|
/* These are the agents actuators (outputs)*/
|
|
RocketEngine leftRocket;
|
|
RocketEngine middleRocket;
|
|
RocketEngine rightRocket;
|
|
|
|
/* Example:
|
|
* leftRocket.setBursting(true) turns on the left rocket
|
|
*/
|
|
|
|
public void init() {
|
|
cso = (ComposedSpringObject) object;
|
|
x = (DoubleFeature) cso.getObjectById("x");
|
|
y = (DoubleFeature) cso.getObjectById("y");
|
|
vx = (DoubleFeature) cso.getObjectById("vx");
|
|
vy = (DoubleFeature) cso.getObjectById("vy");
|
|
angle = (DoubleFeature) cso.getObjectById("angle");
|
|
|
|
leftRocket = (RocketEngine) cso.getObjectById("rocket_engine_left");
|
|
rightRocket = (RocketEngine) cso.getObjectById("rocket_engine_right");
|
|
middleRocket = (RocketEngine) cso.getObjectById("rocket_engine_middle");
|
|
}
|
|
|
|
public void tick(int currentTime) {
|
|
|
|
// TDDC17
|
|
// Part1: Print useful informations and use
|
|
// threshold to guide the vessel
|
|
|
|
System.out.println("Tick: " + currentTime + ". Angle: " + angle.getValue() + ", vx: " + vx.getValue() + ", vy: " + vy.getValue());
|
|
|
|
|
|
System.out.print("Vessel state: ");
|
|
if (angle.getValue() > 0.01) {
|
|
rightRocket.setBursting(true);
|
|
System.out.print("ENG_RGT ON; ");
|
|
}
|
|
else {
|
|
rightRocket.setBursting(false);
|
|
System.out.print("ENG_RGT OFF; ");
|
|
}
|
|
if (angle.getValue() < -0.01) {
|
|
leftRocket.setBursting(true);
|
|
System.out.print("ENG_LFT ON; ");
|
|
}
|
|
else {
|
|
leftRocket.setBursting(false);
|
|
System.out.print("ENG_LFT OFF; ");
|
|
}
|
|
if (vy.getValue() > 0.05) {
|
|
middleRocket.setBursting(true);
|
|
System.out.print("ENG_MDL ON; ");
|
|
}
|
|
else {
|
|
middleRocket.setBursting(false);
|
|
System.out.print("ENG_MDL OFF; ");
|
|
}
|
|
|
|
System.out.println("");
|
|
}
|
|
|
|
}
|