edu.wpi.first.wpilibj
Class Gyro

java.lang.Object
  extended by edu.wpi.first.wpilibj.SensorBase
      extended by edu.wpi.first.wpilibj.Gyro
All Implemented Interfaces:
IDevice, ISensor, PIDSource, FrcBotSimComponent
Direct Known Subclasses:
SendableGyro

public class Gyro
extends SensorBase
implements PIDSource, ISensor

Use a rate gyro to return the robots heading relative to a starting position. The Gyro class tracks the robots heading based on the starting position. As the robot rotates the new heading is computed by integrating the rate of rotation returned by the sensor. When the class is instantiated, it does a short calibration routine where it samples the gyro while at rest to determine the default offset. This is subtracted from each sample to determine the heading.


Field Summary
 
Fields inherited from class edu.wpi.first.wpilibj.SensorBase
kAnalogChannels, kAnalogModules, kDigitalChannels, kPwmChannels, kRelayChannels, kSolenoidChannels, kSolenoidModules, kSystemClockTicksPerMicrosecond, n_simProperties
 
Constructor Summary
Gyro(AnalogChannel channel)
          Gyro constructor with a precreated analog channel object.
Gyro(int channel)
          Gyro constructor with only a channel.
Gyro(int slot, int channel)
          Gyro constructor given a slot and a channel.
 
Method Summary
 void free()
          Delete (free) the accumulator and the analog components used for the gyro.
 double getAngle()
          Return the actual angle in degrees that the robot is currently facing.
 double pidGet()
          Get the angle of the gyro for use with PIDControllers
 void reset()
          Reset the gyro.
 void setSensitivity(double voltsPerDegreePerSecond)
          Set the gyro type based on the sensitivity.
 
Methods inherited from class edu.wpi.first.wpilibj.SensorBase
checkAnalogChannel, checkAnalogModule, checkDigitalChannel, checkDigitalModule, checkPWMChannel, checkPWMModule, checkRelayChannel, checkRelayModule, checkSolenoidChannel, checkSolenoidModule, getDefaultAnalogModule, getDefaultDigitalModule, getDefaultSolenoidModule, getSimProperties, setDefaultAnalogModule, setDefaultDigitalModule, setDefaultSolenoidModule
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

Gyro

public Gyro(int slot,
            int channel)
Gyro constructor given a slot and a channel. .

Parameters:
slot - The cRIO slot for the analog module the gyro is connected to.
channel - The analog channel the gyro is connected to.

Gyro

public Gyro(int channel)
Gyro constructor with only a channel. Use the default analog module slot.

Parameters:
channel - The analog channel the gyro is connected to.

Gyro

public Gyro(AnalogChannel channel)
Gyro constructor with a precreated analog channel object. Use this constructor when the analog channel needs to be shared. There is no reference counting when an AnalogChannel is passed to the gyro.

Parameters:
channel - The AnalogChannel object that the gyro is connected to.
Method Detail

reset

public void reset()
Reset the gyro. Resets the gyro to a heading of zero. This can be used if there is significant drift in the gyro and it needs to be recalibrated after it has been running.


free

public void free()
Delete (free) the accumulator and the analog components used for the gyro.

Overrides:
free in class SensorBase

getAngle

public double getAngle()
Return the actual angle in degrees that the robot is currently facing. The angle is based on the current accumulator value corrected by the oversampling rate, the gyro type and the A/D calibration values. The angle is continuous, that is can go beyond 360 degrees. This make algorithms that wouldn't want to see a discontinuity in the gyro output as it sweeps past 0 on the second time around.

Returns:
the current heading of the robot in degrees. This heading is based on integration of the returned rate from the gyro.

setSensitivity

public void setSensitivity(double voltsPerDegreePerSecond)
Set the gyro type based on the sensitivity. This takes the number of volts/degree/second sensitivity of the gyro and uses it in subsequent calculations to allow the code to work with multiple gyros.

Parameters:
voltsPerDegreePerSecond - The type of gyro specified as the voltage that represents one degree/second.

pidGet

public double pidGet()
Get the angle of the gyro for use with PIDControllers

Specified by:
pidGet in interface PIDSource
Returns:
the current angle according to the gyro