Files
allwpilib/wpilibc/sim/include/AnalogGyro.h
Peter Johnson 59267da72b Namespace all wpilibc functions/classes into "frc" namespace. (#311)
Base.h provides a backwards compatibility shim (enabled unless
NAMESPACED_WPILIB is defined) that does a "using namespace frc".
However, as some header files do not include Base.h, this may
be a breaking change in some corner cases (with an easy fix).

Fixes #218.
2016-11-01 22:33:12 -07:00

56 lines
1.8 KiB
C++

/*----------------------------------------------------------------------------*/
/* Copyright (c) FIRST 2008-2016. All Rights Reserved. */
/* Open Source Software - may be modified and shared by FRC teams. The code */
/* must be accompanied by the FIRST BSD license file in the root directory of */
/* the project. */
/*----------------------------------------------------------------------------*/
#pragma once
#include <memory>
#include "GyroBase.h"
#include "simulation/SimGyro.h"
namespace frc {
class AnalogInput;
class AnalogModule;
/**
* Use a rate gyro to return the robots heading relative to a starting position.
*
* The AnalogGyro 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. This gyro class must be used with a channel that is
* assigned one of the Analog accumulators from the FPGA. See AnalogInput for
* the current accumulator assignments.
*/
class AnalogGyro : public GyroBase {
public:
static const int kOversampleBits;
static const int kAverageBits;
static const float kSamplesPerSecond;
static const float kCalibrationSampleTime;
static const float kDefaultVoltsPerDegreePerSecond;
explicit AnalogGyro(int channel);
virtual ~AnalogGyro() = default;
float GetAngle() const;
void Calibrate() override;
double GetRate() const;
void Reset();
private:
void InitAnalogGyro(int channel);
SimGyro* impl;
std::shared_ptr<ITable> m_table;
};
} // namespace frc