WPILibC++
unspecified
|
A class for driving Killough drive platforms. More...
#include <KilloughDrive.h>
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 | |
KilloughDrive & | operator= (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 |
![]() | |
RobotDriveBase (const RobotDriveBase &)=delete | |
RobotDriveBase & | operator= (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 |
![]() | |
ErrorBase (const ErrorBase &)=delete | |
ErrorBase & | operator= (const ErrorBase &)=delete |
virtual Error & | GetError () |
Retrieve the current error. More... | |
virtual const Error & | GetError () 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 | |
![]() | |
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 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 Error & | GetGlobalError () |
Retrieve the current global error. | |
![]() | |
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. | |
![]() | |
double | m_deadband = 0.02 |
double | m_maxOutput = 1.0 |
MotorSafetyHelper | m_safetyHelper {this} |
![]() | |
Error | m_error |
![]() | |
static std::mutex | _globalErrorMutex |
static Error | _globalError |
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.
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.
leftMotor | The motor on the left corner. |
rightMotor | The motor on the right corner. |
backMotor | The 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.
leftMotor | The motor on the left corner. |
rightMotor | The motor on the right corner. |
backMotor | The motor on the back corner. |
leftMotorAngle | The angle of the left wheel's forward direction of travel. |
rightMotorAngle | The angle of the right wheel's forward direction of travel. |
backMotorAngle | The angle of the back wheel's forward direction of travel. |
void KilloughDrive::DriveCartesian | ( | double | x, |
double | y, | ||
double | rotation, | ||
double | gyroAngle = 0.0 |
||
) |
Drive method for Killough platform.
x | The speed that the robot should drive in the X direction. [-1.0..1.0] |
y | The speed that the robot should drive in the Y direction. [-1.0..1.0] |
rotation | The rate of rotation for the robot that is completely independent of the translation. [-1.0..1.0] |
gyroAngle | The 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.
magnitude | The speed that the robot should drive in a given direction. [-1.0..1.0] |
angle | The direction the robot should drive in degrees. 0.0 is straight ahead. The direction and maginitude are independent of the rotation rate. |
rotation | The rate of rotation for the robot that is completely independent of the magnitude or direction. [-1.0..1.0] |