WPILibC++  unspecified
frc::KilloughDrive Class Reference

A class for driving Killough drive platforms. More...

#include <KilloughDrive.h>

Inheritance diagram for frc::KilloughDrive:
Collaboration diagram for frc::KilloughDrive:

Public Member Functions

 KilloughDrive (SpeedController &leftMotor, SpeedController &rightMotor, SpeedController &backMotor)
 Construct a Killough drive with the given motors and default motor angles. More...
 
 KilloughDrive (SpeedController &leftMotor, SpeedController &rightMotor, SpeedController &backMotor, double leftMotorAngle, double rightMotorAngle, double backMotorAngle)
 Construct a Killough drive with the given motors. More...
 
 KilloughDrive (const KilloughDrive &)=delete
 
KilloughDriveoperator= (const KilloughDrive &)=delete
 
void DriveCartesian (double x, double y, double rotation, double gyroAngle=0.0)
 Drive method for Killough platform. More...
 
void DrivePolar (double magnitude, double angle, double rotation)
 Drive method for Killough platform. More...
 
void StopMotor () override
 
void GetDescription (llvm::raw_ostream &desc) const override
 
- Public Member Functions inherited from frc::RobotDriveBase
 RobotDriveBase (const RobotDriveBase &)=delete
 
RobotDriveBaseoperator= (const RobotDriveBase &)=delete
 
void SetDeadband (double deadband)
 
void SetMaxOutput (double maxOutput)
 Configure the scaling factor for using RobotDrive with motor controllers in a mode other than PercentVbus. More...
 
void SetExpiration (double timeout) override
 
double GetExpiration () const override
 
bool IsAlive () const override
 
bool IsSafetyEnabled () const override
 
void SetSafetyEnabled (bool enabled) override
 
- Public Member Functions inherited from frc::ErrorBase
 ErrorBase (const ErrorBase &)=delete
 
ErrorBaseoperator= (const ErrorBase &)=delete
 
virtual ErrorGetError ()
 Retrieve the current error. More...
 
virtual const ErrorGetError () const
 
virtual void SetErrnoError (llvm::StringRef contextMessage, llvm::StringRef filename, llvm::StringRef function, int lineNumber) const
 Set error information associated with a C library call that set an error to the "errno" global variable. More...
 
virtual void SetImaqError (int success, llvm::StringRef contextMessage, llvm::StringRef filename, llvm::StringRef function, int lineNumber) const
 Set the current error information associated from the nivision Imaq API. More...
 
virtual void SetError (Error::Code code, llvm::StringRef contextMessage, llvm::StringRef filename, llvm::StringRef function, int lineNumber) const
 Set the current error information associated with this sensor. More...
 
virtual void SetErrorRange (Error::Code code, int32_t minRange, int32_t maxRange, int32_t requestedValue, llvm::StringRef contextMessage, llvm::StringRef filename, llvm::StringRef function, int lineNumber) const
 Set the current error information associated with this sensor. More...
 
virtual void SetWPIError (llvm::StringRef errorMessage, Error::Code code, llvm::StringRef contextMessage, llvm::StringRef filename, llvm::StringRef function, int lineNumber) const
 Set the current error information associated with this sensor. More...
 
virtual void CloneError (const ErrorBase &rhs) const
 
virtual void ClearError () const
 Clear the current error information associated with this sensor.
 
virtual bool StatusIsFatal () const
 Check if the current error code represents a fatal error. More...
 

Additional Inherited Members

- Public Types inherited from frc::RobotDriveBase
enum  MotorType {
  kFrontLeft = 0, kFrontRight = 1, kRearLeft = 2, kRearRight = 3,
  kLeft = 0, kRight = 1, kBack = 2
}
 The location of a motor on the robot for the purpose of driving.
 
- Static Public Member Functions inherited from frc::ErrorBase
static void SetGlobalError (Error::Code code, llvm::StringRef contextMessage, llvm::StringRef filename, llvm::StringRef function, int lineNumber)
 
static void SetGlobalWPIError (llvm::StringRef errorMessage, llvm::StringRef contextMessage, llvm::StringRef filename, llvm::StringRef function, int lineNumber)
 
static ErrorGetGlobalError ()
 Retrieve the current global error.
 
- Protected Member Functions inherited from frc::RobotDriveBase
double Limit (double number)
 Limit motor values to the -1.0 to +1.0 range.
 
double ApplyDeadband (double number, double deadband)
 Returns 0.0 if the given value is within the specified range around zero. More...
 
void Normalize (llvm::MutableArrayRef< double > wheelSpeeds)
 Normalize all wheel speeds if the magnitude of any wheel is greater than 1.0.
 
- Protected Attributes inherited from frc::RobotDriveBase
double m_deadband = 0.02
 
double m_maxOutput = 1.0
 
MotorSafetyHelper m_safetyHelper {this}
 
- Protected Attributes inherited from frc::ErrorBase
Error m_error
 
- Static Protected Attributes inherited from frc::ErrorBase
static std::mutex _globalErrorMutex
 
static Error _globalError
 

Detailed Description

A class for driving Killough drive platforms.

Killough drives are triangular with one omni wheel on each corner.

Drive base diagram:

 /_____\
/ \   / \
   \ /
   ---

Each Drive() function provides different inverse kinematic relations for a Killough drive. The default wheel vectors are parallel to their respective opposite sides, but can be overridden. See the constructor for more information.

Constructor & Destructor Documentation

KilloughDrive::KilloughDrive ( SpeedController leftMotor,
SpeedController rightMotor,
SpeedController backMotor 
)

Construct a Killough drive with the given motors and default motor angles.

The default motor angles are 120, 60, and 270 degrees for the left, right, and back motors respectively, which make the wheels on each corner parallel to their respective opposite sides.

If a motor needs to be inverted, do so before passing it in.

Parameters
leftMotorThe motor on the left corner.
rightMotorThe motor on the right corner.
backMotorThe motor on the back corner.
KilloughDrive::KilloughDrive ( SpeedController leftMotor,
SpeedController rightMotor,
SpeedController backMotor,
double  leftMotorAngle,
double  rightMotorAngle,
double  backMotorAngle 
)

Construct a Killough drive with the given motors.

Angles are measured in counter-clockwise degrees where zero degrees is straight ahead.

Parameters
leftMotorThe motor on the left corner.
rightMotorThe motor on the right corner.
backMotorThe motor on the back corner.
leftMotorAngleThe angle of the left wheel's forward direction of travel.
rightMotorAngleThe angle of the right wheel's forward direction of travel.
backMotorAngleThe angle of the back wheel's forward direction of travel.

Member Function Documentation

void KilloughDrive::DriveCartesian ( double  x,
double  y,
double  rotation,
double  gyroAngle = 0.0 
)

Drive method for Killough platform.

Parameters
xThe speed that the robot should drive in the X direction. [-1.0..1.0]
yThe speed that the robot should drive in the Y direction. [-1.0..1.0]
rotationThe rate of rotation for the robot that is completely independent of the translation. [-1.0..1.0]
gyroAngleThe current angle reading from the gyro. Use this to implement field-oriented controls.
void KilloughDrive::DrivePolar ( double  magnitude,
double  angle,
double  rotation 
)

Drive method for Killough platform.

Parameters
magnitudeThe speed that the robot should drive in a given direction. [-1.0..1.0]
angleThe direction the robot should drive in degrees. 0.0 is straight ahead. The direction and maginitude are independent of the rotation rate.
rotationThe rate of rotation for the robot that is completely independent of the magnitude or direction. [-1.0..1.0]

The documentation for this class was generated from the following files: