Skip to content
Snippets Groups Projects
Commit 1965faab authored by Brutzman, Don's avatar Brutzman, Don
Browse files

twenty minutes following class

parent b5a82872
No related branches found
No related tags found
No related merge requests found
package SimkitOpenDis7Examples;
import edu.nps.moves.dis7.enumerations.DisPduType;
import edu.nps.moves.dis7.pdus.EntityStatePdu;
import edu.nps.moves.dis7.utilities.DisChannel;
import edu.nps.moves.dis7.utilities.PduFactory;
import java.util.SortedSet;
import java.util.TreeSet;
import simkit.Priority;
......@@ -16,7 +20,9 @@ import simkit.SimEntityBase;
* @author abuss@nps.edu@nps.edu
* @author brutzman@nps.edu
*/
public class TwoCraneBerthsOpenDis7 extends SimEntityBase {
public class TwoCraneBerthsOpenDis7 extends SimEntityBase
{
private final DisChannel disChannel = new DisChannel();
/**
* Queue of Ships waiting to go into the berth
......@@ -159,7 +165,7 @@ public class TwoCraneBerthsOpenDis7 extends SimEntityBase {
*/
public void doStartUnloadingOneCrane() {
SortedSet<Ship> oldQueue = getQueue();
Ship ship = queue.first();
Ship ship = queue.first(); // TODO rename ship queue
queue.remove(ship);
firePropertyChange("queue", oldQueue, getQueue());
......@@ -171,9 +177,70 @@ public class TwoCraneBerthsOpenDis7 extends SimEntityBase {
SortedSet<Ship> oldBerth = getBerth();
berth.add(ship);
firePropertyChange("berth", oldBerth, getBerth());
performCraneUnloadOperations( 10, // numberOfContainers
0.0 // initial position
); // TODO indicate berth
waitDelay("EndUnloadingOneCrane", ship.getRemainingUnloadingTime(), ship);
}
PduFactory pduFactory = new PduFactory();
public void performCraneUnloadOperations(
// which crane
// which berth
int numberOfContainers,
double positionOfCrane
// lenthOfCrane
)
{
double craneLinearSpeed = 1.0; // m/sec
double craneRotationRate = 10.0; // degrees/second
double containerHookupTime = 60.0; // seconds average
double containerDetachTime = 30.0; // seconds average
EntityStatePdu espduCrane = (EntityStatePdu) pduFactory.createPdu(DisPduType.ENTITY_STATE);
// 1. Crane at head of pier, operatior present, boom elevated vertically in stow postion
// espduCrane1.setPosition 0 0 0
// 2, Ship arrives, tug departs
// shop PDU here or assum it happened earlier
// 3. Crane moves to position of ship
espduCrane.setEntityLocation(positionOfCrane, 0.0, 0.0);
// TODO compute travel time
// update: travel to positionOfCrane by craneLinearSpeed
// 4. repeat until done: Crane rotates, lift container, rotates, lower container
for (int containerIndex = 1; containerIndex <= numberOfContainers; containerIndex++)
{
// perform one operation
espduCrane.setEntityOrientation(0, 0, 0);
disChannel.sendSinglePdu(espduCrane);
espduCrane.setEntityOrientation(0, 0, 0);
double rotationDelay = 90.0 / craneRotationRate;
disChannel.sendCommentPdu(disChannel.COMMENTPDU_NARRATIVE, "Hooking up Container " + containerIndex + " to crane");
disChannel.sendSinglePduDelayed(containerHookupTime, espduCrane);
disChannel.sendCommentPdu(disChannel.COMMENTPDU_NARRATIVE, "Container hooked up");
disChannel.sendSinglePduDelayed(containerHookupTime, espduCrane);
espduCrane.setEntityOrientation(90, 0, 0);
disChannel.sendSinglePduDelayed(rotationDelay, espduCrane);
// unhook
// rotate back
// if this container is special, meaning on watchlist, report it
}
// 4. Crane stows boom in vertical position
// espcudCrnet orientation
// 5. Crane returns to head of pier
// update: travel from positionOfCrane to head by craneLinearSpeed
espduCrane.setEntityLocation(positionOfCrane, 0.0, 0.0);
disChannel.sendSinglePdu(espduCrane);
}
/**
* Remove given Ship from berth<br>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment