All Packages  Class Hierarchy  This Package  Previous  Next  Index

Interface EDU.gatech.cc.is.abstractrobot.SimpleInterface

public interface SimpleInterface
Defines the basic capabilites all robot classes should provide. A simple robot can detect obstacles, its position, and turn and move. The intention is for this interface to be implemented for several types of physical robots (e.g. Nomad 150s, Hummers, Dennings, etc.).

Frames of reference
We use a standard cartesian coordinate system in meters and radians. Pretend you are looking down on the robot: +x goes out to your right (East), +y goes up (North). When the robot is initialized, it is facing the +x direction. Headings are given in radians, with East=0, North=PI/2 and so on CCW around to 2*PI. Some methods return "egocentric" vectors. An egocentric vector is given relative to the center of the robot in the same heading reference frame as global coordinates. An object one meter east of the robot is at (1,0) egocentrically.

Sensors
The Simple robot can sense it's location and obstacles.

Timestamps
Many of the sensor and motor command methods (e.g. get* and set*) require a timestamp as a parameter. This is to help reduce the amount of I/O to the physical robot. If the timestamp is less than or equal to the value sent on the last call to one of these methods, old data is returned. If the timestamp is -1 or greater than the last timestamp, the robot is queried, and new data is returned. The idea is that during each control cycle the higher level software will increment the timestamp and use it for all calls to these methods. Copyright (c)1998 Tucker Balch

Version:
$Revision: 1.1 $
Author:
Tucker Balch

Method Index

 o getID()
Get the unique ID of the robot.
 o getID(long)
Get the unique ID of the robot (>=0).
 o getObstacles(long)
Get an array of Vec2s that point egocentrically from the center of the robot to the obstacles currently sensed by the robot's sensors
 o getPosition(long)
Get the position of the robot in global coordinates.
 o getSteerHeading(long)
Get the current heading of the steering motor.
 o getTime()
Gets time elapsed since the robot was instantiated.
 o quit()
Quit the robot and release any resources it has reserved.
 o resetPosition(Vec2)
Reset the odometry of the robot in global coordinates.
 o resetSteerHeading(double)
Reset the steering odometry of the robot in global coordinates.
 o setBaseSpeed(double)
Set the base speed for the robot (translation) in meters per second.
 o setDisplayString(String)
Set the String that is printed on the robot's display.
 o setID(int)
Set the unique ID of the robot.
 o setObstacleMaxRange(double)
Set the maximum range at which a sensor reading should be considered an obstacle.
 o setSpeed(long, double)
Set the desired speed for the robot (translation).
 o setSteerHeading(long, double)
Set the desired heading for the steering motor.

Methods

 o quit
 public abstract void quit()
Quit the robot and release any resources it has reserved.

 o getTime
 public abstract long getTime()
Gets time elapsed since the robot was instantiated. This does not necessarily match real elapsed time since it may run faster than that in simulation. This is the appropriate source of time for timestamps.

 o getObstacles
 public abstract Vec2[] getObstacles(long timestamp)
Get an array of Vec2s that point egocentrically from the center of the robot to the obstacles currently sensed by the robot's sensors

Parameters:
timestamp - only get new information if timestamp > than last call or == -1.
Returns:
the sensed obstacles.
 o setObstacleMaxRange
 public abstract void setObstacleMaxRange(double range)
Set the maximum range at which a sensor reading should be considered an obstacle. Beyond this range, the readings are ignored. The default range on startup is 1 meter.

Parameters:
range - the range in meters.
 o getPosition
 public abstract Vec2 getPosition(long timestamp)
Get the position of the robot in global coordinates.

Parameters:
timestamp - only get new information if timestamp > than last call or timestamp == -1.
Returns:
the position.
 o setID
 public abstract void setID(int id)
Set the unique ID of the robot.

Parameters:
set - the robot's ID.
Returns:
the id.
 o getID
 public abstract int getID(long timestamp)
Get the unique ID of the robot (>=0). This number unique, but no other guarantees are made. It is possible for instance, for four robots to be numbered 8, 9, 11, 37. To get sequential numbers for a team, use methods in the KinSensor class.

Parameters:
timestamp - only get new information if timestamp > than last call or timestamp == -1.
Returns:
the id.
 o getID
 public abstract int getID()
Get the unique ID of the robot.

Returns:
the id.
 o resetPosition
 public abstract void resetPosition(Vec2 position)
Reset the odometry of the robot in global coordinates. This might be done when reliable sensor information provides a very good estimate of the robot's location. Do this only if you are certain you're right!

Parameters:
position - the new position.
See Also:
getPosition
 o getSteerHeading
 public abstract double getSteerHeading(long timestamp)
Get the current heading of the steering motor.

Parameters:
timestamp - only get new information if timestamp > than last call or timestamp == -1.
Returns:
the heading in radians.
See Also:
setSteerHeading
 o resetSteerHeading
 public abstract void resetSteerHeading(double heading)
Reset the steering odometry of the robot in global coordinates. This might be done when reliable sensor information provides a very good estimate of the robot's heading. Do this only if you are certain you're right!

Parameters:
heading - the new heading in radians.
See Also:
getSteerHeading, setSteerHeading
 o setSteerHeading
 public abstract void setSteerHeading(long timestamp,
                                      double heading)
Set the desired heading for the steering motor.

Parameters:
heading - the heading in radians.
timestamp - only get new information if timestamp > than last call or timestamp == -1.
See Also:
getSteerHeading
 o setSpeed
 public abstract void setSpeed(long timestamp,
                               double speed)
Set the desired speed for the robot (translation). The speed must be between 0 and 1; where 0 is stopped and 1.0 is "full blast". It will be clipped to whichever limit it exceeds. Also, underlying software will keep the actual speed at zero until the steering motor is close to the desired heading. Use setBaseSpeed to adjust the top speed.

Parameters:
timestamp - only get new information if timestamp > than last call or timestamp == -1.
speed - the desired speed from 0 to 1.0, where 1.0 is the base speed.
See Also:
setSteerHeading, setBaseSpeed
 o setDisplayString
 public abstract void setDisplayString(String s)
Set the String that is printed on the robot's display. For real robots, this is printed on the console. For simulated robots, this appears printed below the agent when view "Robot State" is selected.

Parameters:
s - String, the text to display.
 o setBaseSpeed
 public abstract void setBaseSpeed(double speed)
Set the base speed for the robot (translation) in meters per second. Base speed is how fast the robot will move when setSpeed(1.0) is called. The speed must be between 0 and MAX_TRANSLATION. It will be clipped to whichever limit it exceeds.

Parameters:
speed - the desired speed from 0 to 1.0, where 1.0 is the base speed.
See Also:
setSpeed

All Packages  Class Hierarchy  This Package  Previous  Next  Index