Overview | Package | Class | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## PER.rover.control
Class RoverState

    java.lang.Object
      PER.rover.control.RoverState

Direct Known Subclasses:
  ActionConstants

public class RoverState
extends java.lang.Object

Allows one to determine the current status of the rover. The state is updated when commands are sent to the rover or by calling refresh in RoverController. The constants in this class are used to represent the rovers current status as well as used as Action return values.

See Also:
  `RoverController.refresh()`, `Action.getReturnValue()`

Field Summary
`static int` | `BAD_INPUT` Function call to the Stayton with bad input arguments.
`static int` | `BATTERY_LOW` Battery voltage low.
`static int` | `CAMERA_TIMEOUT` The cameara failed to respond.
`static int` | `CEREB_DRIVETO`
`static int` | `CEREB_IDLE`
`static int` | `CEREB_SCAN`
`static int` | `CEREB_STARTING`
`static int` | `CEREB_TIMEOUT` The cerebellum failed to respond.
`static int` | `CEREB_TURNTO`
`int` | `cerebThreadState` The state of the cerebellum thread.
`static int` | `COMM_DEAD` Wireless communication not working.
`static int` | `FULL_PACKET_LENGTH` Length of a packet from the rover.
`static int` | `HIT_WALL` Came too close to a wall.
`static int` | `HL_CONTINUE` This code indicates that the rover is currently doing a DriveTo or TurnTo
`static int` | `INVALID_PACKET_LENGTH` Response from Stayton is the wrong length.
`static int` | `KILLED` Manually terminated.
`static int` | `LEGS_LOCK`
`int` | `locks` A bitmask telling you what parts of the rover are in use.
`static int` | `NOT_CONNECTED` Not connected to the robot.
`static int` | `OBSTACLE_DETECTED` IR Rangefinder detected an obstacle.
`static int` | `PAN_LOCK`
`static int` | `RESOURCE_CONFLICT` What you're trying to do can't be done because the resource is already in use.
`static int` | `STAYTON_INVALID_LENGTH` Command to the Stayton is the wrong length.
`static int` | `STAYTON_IO_ERROR` Error on Stayton.
`static int` | `STAYTON_UNKNOWN_TYPE` The Stayton does not recognize the command sent to it.
`static int` | `SUCCESS` Command successful.
`static int` | `TILT_LOCK`
`static int` | `UNKNOWN_PACKET_TYPE` Sent unknown packet type to Stayton.
`static int` | `UV_ON`
`static int` | `WEBCAM_CYCLE_NOPIC`
`static int` | `WEBCAM_CYCLE_PIC`
`static int` | `WEBCAM_CYCLY_NOPIC` Deprecated. As of PER 5.1.2, replaced by `WEBCAM_CYCLE_NOPIC`
`static int` | `WEBCAM_GRAB`
`static int` | `WEBCAM_IDLE`
`static int` | `WEBCAM_MEAN`
`static int` | `WEBCAM_MOTION`
`static int` | `WEBCAM_PIC`
`static int` | `WEBCAM_PROPERTIES`
`static int` | `WEBCAM_STOP`
`static int` | `WEBCAM_TRACK`
`int` | `webCamThreadState` The state of the webcam thread.

Constructor Summary
`RoverState()` Creates new RoverState

Method Summary
`int` | `getDist()` Returns the absolute value of how far the rover has traveled.
`int` | `getPan()` Gets the pan angle.
`double[]` | `getPosition()` Returns the current coordinates of the robot.
`int` | `getRange()` Returns the raw IR rangefinder reading from the cerebellum.
`int` | `getRangeCM()` This function attempts to translate the range from the range sensing output of the sensor to centimeters.
`int` | `getRawVoltage()` Gets the raw voltage reading from the cerebellum.
`double` | `getRealVoltage()` Gets a translated voltage reading on the robot.
`int` | `getStatus()` Gets the last status code that the rover sent back.
`java.lang.String` | `getStatusMessage()` Gives a description of the status of the last command sent.
`int` | `getTilt()` Gets the tilt angle.
`boolean` | `isTerminationCondition()` Function to help with high level commands.
`boolean` | `parsePacket(byte[] packet)` Parses a packet from the rover.
`void` | `setCrabAngle(int cA)` Set the current angle representing the direction of motion of the robot regardless of it's heading.
`void` | `setPan(int pan)` Sets the current status; This should only be done in ReceiveThread.
`void` | `setPosition(double x, double y, double theta)` Sets the current coordinate position.
`void` | `setSign(int sign)` Set the current sign representing the direction of motion of the robot.
`void` | `setStatus(int status)` Sets the current status; This should only be done in RoverController.
`void` | `setTilt(int tilt)` Sets the current status; This should only be done in ReceiveThread.

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### locks

    public int locks

  A bitmask telling you what parts of the rover are in use.

  1 = LEGS_LOCK - the legs are in use
  2 = PAN_LOCK - the pan is in use
  4 = TILT_LOCK - the tilt is in use
  8 = UV_ON - the light is on

### cerebThreadState

    public int cerebThreadState

  The state of the cerebellum thread.

  0 = CEREB_IDLE - no requests have been received
  1 = CEREB_STARTING - a request has been received, but it hasn't started
  2 = CEREB_SCAN - doing a scan
  3 = CEREB_TURNTO - doing a turn to
  4 = CEREB_DRIVETO - doing a drive to

### webCamThreadState

    public int webCamThreadState

  The state of the webcam thread.

  0 = WEBCAM_IDLE - thread doing nothing
  1 = WEBCAM_STOP - thread doing nothing
  2 = WEBCAM_GRAB - grabbing a new picture
  3 = WEBCAM_PROPERTIES - getting camera properties
  50 = WEBCAM_CYCLE_PIC - cycling through safety positions with pictures being taken
  51 = WEBCAM_CYCLE_NOPIC - cycling through safety positions without pictures being taken
  52 = WEBCAM_PIC - taking constant pictures
  53 = WEBCAM_TRACK - doing tracking
  54 = WEBCAM_MEAN - getting mean
  55 = WEBCAM_MOTION - getting motion

  Note that the above values are consistent with Stargate software version 2.1 and later and are not guaranteed to be compatible with earlier Stargate software versions.

### LEGS_LOCK

    public static final int LEGS_LOCK

See Also:
  Constant Field Values

### PAN_LOCK

    public static final int PAN_LOCK

See Also:
  Constant Field Values

### TILT_LOCK

    public static final int TILT_LOCK

See Also:
  Constant Field Values

### UV_ON

    public static final int UV_ON

See Also:
  Constant Field Values

### CEREB_IDLE

    public static final int CEREB_IDLE

See Also:
  Constant Field Values

### CEREB_STARTING

    public static final int CEREB_STARTING

See Also:
  Constant Field Values

### CEREB_SCAN

    public static final int CEREB_SCAN

See Also:
  Constant Field Values

### CEREB_TURNTO

    public static final int CEREB_TURNTO

See Also:
  Constant Field Values

### CEREB_DRIVETO

    public static final int CEREB_DRIVETO

See Also:
  Constant Field Values

### WEBCAM_IDLE

    public static final int WEBCAM_IDLE

See Also:
  Constant Field Values

### WEBCAM_STOP

    public static final int WEBCAM_STOP

See Also:
  Constant Field Values

### WEBCAM_CYCLE_PIC

    public static final int WEBCAM_CYCLE_PIC

See Also:
  Constant Field Values

### WEBCAM_CYCLY_NOPIC

    public static final int WEBCAM_CYCLY_NOPIC

  Deprecated. As of PER 5.1.2, replaced by `WEBCAM_CYCLE_NOPIC`

  See Also:
    Constant Field Values

### WEBCAM_CYCLE_NOPIC

    public static final int WEBCAM_CYCLE_NOPIC

See Also:
  Constant Field Values

### WEBCAM_PIC

    public static final int WEBCAM_PIC

See Also:
  Constant Field Values

### WEBCAM_GRAB

    public static final int WEBCAM_GRAB

See Also:
  Constant Field Values

### WEBCAM_PROPERTIES

    public static final int WEBCAM_PROPERTIES

See Also:
  Constant Field Values

### WEBCAM_TRACK

    public static final int WEBCAM_TRACK

See Also:
  Constant Field Values

### WEBCAM_MEAN

    public static final int WEBCAM_MEAN

See Also:
  Constant Field Values

### WEBCAM_MOTION

    public static final int WEBCAM_MOTION

See Also:
  Constant Field Values

### FULL_PACKET_LENGTH

    public static final int FULL_PACKET_LENGTH

  Length of a packet from the rover.

  See Also:
    Constant Field Values

### SUCCESS

    public static final int SUCCESS

  Command successful.

  See Also:
    Constant Field Values

### HL_CONTINUE

    public static final int HL_CONTINUE

  This code indicates that the rover is currently doing a DriveTo or TurnTo

  See Also:
    Constant Field Values

### INVALID_PACKET_LENGTH

    public static final int INVALID_PACKET_LENGTH

  Response from Stayton is the wrong length.

  See Also:
    Constant Field Values

### UNKNOWN_PACKET_TYPE

    public static final int UNKNOWN_PACKET_TYPE

  Sent unknown packet type to Stayton.

  See Also:
    Constant Field Values

### COMM_DEAD

    public static final int COMM_DEAD

  Wireless communication not working.

  See Also:
    Constant Field Values

### NOT_CONNECTED

    public static final int NOT_CONNECTED

  Not connected to the robot.

  See Also:
    Constant Field Values

### STAYTON_INVALID_LENGTH

    public static final int STAYTON_INVALID_LENGTH

  Command to the Stayton is the wrong length.

  See Also:
    Constant Field Values

### STAYTON_UNKNOWN_TYPE

    public static final int STAYTON_UNKNOWN_TYPE

  The Stayton does not recognize the command sent to it.

  See Also:
    Constant Field Values

### BAD_INPUT

    public static final int BAD_INPUT

  Function call to the Stayton with bad input arguments.

  See Also:
    Constant Field Values

### CEREB_TIMEOUT

    public static final int CEREB_TIMEOUT

  The cerebellum failed to respond.

  See Also:
    Constant Field Values

### CAMERA_TIMEOUT

    public static final int CAMERA_TIMEOUT

  The cameara failed to respond.

  See Also:
    Constant Field Values

### STAYTON_IO_ERROR

    public static final int STAYTON_IO_ERROR

  Error on Stayton.

  See Also:
    Constant Field Values

### BATTERY_LOW

    public static final int BATTERY_LOW

  Battery voltage low.

  See Also:
    Constant Field Values

### KILLED

    public static final int KILLED

  Manually terminated.

  See Also:
    Constant Field Values

### OBSTACLE_DETECTED

    public static final int OBSTACLE_DETECTED

  IR Rangefinder detected an obstacle.

  See Also:
    Constant Field Values

### HIT_WALL

    public static final int HIT_WALL

  Came too close to a wall.

  See Also:
    Constant Field Values

### RESOURCE_CONFLICT

    public static final int RESOURCE_CONFLICT

  What you're trying to do can't be done because the resource is already in use. Look at the locks, cerebThreadState, and webCamThreadState variables.

  See Also:
    Constant Field Values

Constructor Detail

### RoverState

    public RoverState()

  Creates new RoverState

Method Detail

### parsePacket

    public boolean parsePacket(byte[] packet)

  Parses a packet from the rover. Computes coordinate changes.

  Parameters:
    `packet` - The packet, which should be FULL_PACKET_LENGTH long.
  Returns:
    true if it is the right length and the status is SUCCESS

### getStatus

    public int getStatus()

  Gets the last status code that the rover sent back.

  Returns:
    the status code
  See Also:
    `getStatusMessage()`

### getStatusMessage

    public java.lang.String getStatusMessage()

  Gives a description of the status of the last command sent.

  Returns:
    the message

### setStatus

    public void setStatus(int status)

  Sets the current status; This should only be done in RoverController.

### setPan

    public void setPan(int pan)

  Sets the current status; This should only be done in ReceiveThread.

### setTilt

    public void setTilt(int tilt)

  Sets the current status; This should only be done in ReceiveThread.

### setSign

    public void setSign(int sign)

  Set the current sign representing the direction of motion of the robot. Used in calculating the coordinates, this should only be called by RoverController.

### setCrabAngle

    public void setCrabAngle(int cA)

  Set the current angle representing the direction of motion of the robot regardless of it's heading. Used in calculating the coordinates, this should only be called by RoverController.

### setPosition

    public void setPosition(double x,
                            double y,
                            double theta)

  Sets the current coordinate position. Call on the highLevelState, as that is where the coordinates are stored. The coordinates are centered on the robot with the X axis running parallel to the rover.

  Parameters:
    `x` - The new X coordinate in centimeters
    `y` - The new Y coordinate in centimeters
    `theta` - The new orientation, in integer degrees

### getRange

    public int getRange()

  Returns the raw IR rangefinder reading from the cerebellum. This is an 8-bit value and typical values range from 0 to 140. A value of 140 means that an object is about 20cm away and the value falls off as the distance increases. The minimum useful reading is about 20 and that corresponds to an object being about 150cm away. For more information, see the data sheet for the sensor at http://www.acroname.com/robotics/parts/gp2y0a02_e.pdf

  Returns:
    The raw reading from the cerebellum.

### getRangeCM

    public int getRangeCM()

  This function attempts to translate the range from the range sensing output of the sensor to centimeters. I'm assuming that the object is more than 15cm away for this converstion. Raw values greater than 135 get mapped to 20cm and raw values less than 25 get mapped to Integer.MAX_VALUE. Other than that, the values returned by this function are very close to the actual distance.

  Returns:
    The distance in centimeters.

### getPan

    public int getPan()

  Gets the pan angle. Positive angles are to the left of center.

  Returns:
    The pan angles in degrees.

### getTilt

    public int getTilt()

  Gets the tilt angle. Positive angles are above level.

  Returns:
    The tilt angle in degrees.

### getRawVoltage

    public int getRawVoltage()

  Gets the raw voltage reading from the cerebellum.

  Returns:
    the raw voltage reading, between 0 and 255.

### getRealVoltage

    public double getRealVoltage()

  Gets a translated voltage reading on the robot. Fully charged batteries should be at about 32V. If the battery voltage falls below about 25V, the rover is programmed to stop accepting commands. As long as the voltage is above 29V, everything's fine.

  Returns:
    the voltage of the batteries in volts

### getDist

    public int getDist()

  Returns the absolute value of how far the rover has traveled. This is in cm if the last command was a goTo and degrees if the last command was a turnTo.

  Returns:
    the absolute value of how far the rover has traveled (cm for goTo or degrees for turnTo)

### getPosition

    public double[] getPosition()

  Returns the current coordinates of the robot. Call on the highLevelState, as that is where the coordinates are stored.

  Returns:
    The current coordinates as doubles in a 3 element array. (x, y, theta in centimeters and degrees). The coordinates are centered on the robot with the X axis running parallel to the rover.

### isTerminationCondition

    public boolean isTerminationCondition()

  Function to help with high level commands.

  Returns:
    true if the status returned caused the high level command to terminate.

Overview | Package | Class | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD