3#include "ctre/phoenix/ErrorCode.h"
4#include "ctre/phoenix/paramEnum.h"
5#include "ctre/phoenix/core/GadgeteerUartClient.h"
6#include "ctre/phoenix/motorcontrol/IMotorController.h"
7#include "ctre/phoenix/motorcontrol/ControlMode.h"
8#include "ctre/phoenix/motorcontrol/DemandType.h"
9#include "ctre/phoenix/motorcontrol/Faults.h"
10#include "ctre/phoenix/motorcontrol/FollowerType.h"
11#include "ctre/phoenix/motorcontrol/InvertType.h"
12#include "ctre/phoenix/motorcontrol/StickyFaults.h"
13#include "ctre/phoenix/motorcontrol/VelocityMeasPeriod.h"
14#include "ctre/phoenix/motion/TrajectoryPoint.h"
15#include "ctre/phoenix/motion/MotionProfileStatus.h"
16#include "ctre/phoenix/motion/BufferedTrajectoryPointStream.h"
17#include "ctre/phoenix/CANBusAddressable.h"
18#include "ctre/phoenix/CustomParamConfiguration.h"
19#include "ctre/phoenix/motorcontrol/VictorSPXSimCollection.h"
20#include "ctre/phoenix/sensors/SensorVelocityMeasPeriod.h"
30 namespace motorcontrol {
33 class MotControllerWithBuffer_LowLevel;
34 class MotController_LowLevel;
42 namespace motorcontrol {
73 std::string
toString(
const std::string& prependString) {
111 std::string retstr = prependString +
".remoteSensorDeviceID = " + std::to_string(
remoteSensorDeviceID) +
";\n";
134 static bool FilterConfigurationDifferent(
const FilterConfiguration& settings) {
return RemoteSensorDeviceIDDifferent(settings) || RemoteSensorSourceDifferent(settings); }
230 std::string retstr = prependString +
".kP = " + std::to_string(
kP) +
";\n";
231 retstr += prependString +
".kI = " + std::to_string(
kI) +
";\n";
232 retstr += prependString +
".kD = " + std::to_string(
kD) +
";\n";
233 retstr += prependString +
".kF = " + std::to_string(
kF) +
";\n";
234 retstr += prependString +
".integralZone = " + std::to_string(
integralZone) +
";\n";
237 retstr += prependString +
".closedLoopPeakOutput = " + std::to_string(
closedLoopPeakOutput) +
";\n";
238 retstr += prependString +
".closedLoopPeriod = " + std::to_string(
closedLoopPeriod) +
";\n";
260 static bool KIDifferent(
const SlotConfiguration& settings) {
return (!(settings.
kI == _default.
kI)); }
261 static bool KDDifferent(
const SlotConfiguration& settings) {
return (!(settings.kD == _default.
kD)); }
262 static bool KFDifferent(
const SlotConfiguration& settings) {
return (!(settings.kF == _default.
kF)); }
263 static bool IntegralZoneDifferent(
const SlotConfiguration& settings) {
return (!(settings.integralZone == _default.
integralZone)); }
264 static bool AllowableClosedloopErrorDifferent(
const SlotConfiguration& settings) {
return (!(settings.allowableClosedloopError == _default.
allowableClosedloopError)); }
265 static bool MaxIntegralAccumulatorDifferent(
const SlotConfiguration& settings) {
return (!(settings.maxIntegralAccumulator == _default.
maxIntegralAccumulator)); }
266 static bool ClosedLoopPeakOutputDifferent(
const SlotConfiguration& settings) {
return (!(settings.closedLoopPeakOutput == _default.
closedLoopPeakOutput)); }
267 static bool ClosedLoopPeriodDifferent(
const SlotConfiguration& settings) {
return (!(settings.closedLoopPeriod == _default.
closedLoopPeriod)); }
484 std::string retstr = prependString +
".openloopRamp = " + std::to_string(
openloopRamp) +
";\n";
485 retstr += prependString +
".closedloopRamp = " + std::to_string(
closedloopRamp) +
";\n";
486 retstr += prependString +
".peakOutputForward = " + std::to_string(
peakOutputForward) +
";\n";
487 retstr += prependString +
".peakOutputReverse = " + std::to_string(
peakOutputReverse) +
";\n";
488 retstr += prependString +
".nominalOutputForward = " + std::to_string(
nominalOutputForward) +
";\n";
489 retstr += prependString +
".nominalOutputReverse = " + std::to_string(
nominalOutputReverse) +
";\n";
490 retstr += prependString +
".neutralDeadband = " + std::to_string(
neutralDeadband) +
";\n";
491 retstr += prependString +
".voltageCompSaturation = " + std::to_string(
voltageCompSaturation) +
";\n";
503 retstr += prependString +
".auxPIDPolarity = " + std::to_string(
auxPIDPolarity) +
";\n";
506 retstr += prependString +
".motionCruiseVelocity = " + std::to_string(
motionCruiseVelocity) +
";\n";
507 retstr += prependString +
".motionAcceleration = " + std::to_string(
motionAcceleration) +
";\n";
508 retstr += prependString +
".motionCurveStrength = " + std::to_string(
motionCurveStrength) +
";\n";
510 retstr += prependString +
".feedbackNotContinuous = " + std::to_string(
feedbackNotContinuous) +
";\n";
512 retstr += prependString +
".clearPositionOnLimitF = " + std::to_string(
clearPositionOnLimitF) +
";\n";
513 retstr += prependString +
".clearPositionOnLimitR = " + std::to_string(
clearPositionOnLimitR) +
";\n";
544 static bool PeakOutputForwardDifferent(
const BaseMotorControllerConfiguration& settings) {
return (!(settings.peakOutputForward == _default.
peakOutputForward)) || !settings.enableOptimizations; }
545 static bool PeakOutputReverseDifferent(
const BaseMotorControllerConfiguration& settings) {
return (!(settings.peakOutputReverse == _default.
peakOutputReverse)) || !settings.enableOptimizations; }
546 static bool NominalOutputForwardDifferent(
const BaseMotorControllerConfiguration& settings) {
return (!(settings.nominalOutputForward == _default.
nominalOutputForward)) || !settings.enableOptimizations; }
547 static bool NominalOutputReverseDifferent(
const BaseMotorControllerConfiguration& settings) {
return (!(settings.nominalOutputReverse == _default.
nominalOutputReverse)) || !settings.enableOptimizations; }
548 static bool NeutralDeadbandDifferent(
const BaseMotorControllerConfiguration& settings) {
return (!(settings.neutralDeadband == _default.
neutralDeadband)) || !settings.enableOptimizations; }
549 static bool VoltageCompSaturationDifferent(
const BaseMotorControllerConfiguration& settings) {
return (!(settings.voltageCompSaturation == _default.
voltageCompSaturation)) || !settings.enableOptimizations; }
550 static bool VoltageMeasurementFilterDifferent(
const BaseMotorControllerConfiguration& settings) {
return (!(settings.voltageMeasurementFilter == _default.
voltageMeasurementFilter)) || !settings.enableOptimizations; }
551 static bool VelocityMeasurementPeriodDifferent(
const BaseMotorControllerConfiguration& settings) {
return (!(settings.velocityMeasurementPeriod == _default.
velocityMeasurementPeriod)) || !settings.enableOptimizations; }
552 static bool VelocityMeasurementWindowDifferent(
const BaseMotorControllerConfiguration& settings) {
return (!(settings.velocityMeasurementWindow == _default.
velocityMeasurementWindow)) || !settings.enableOptimizations; }
553 static bool ForwardSoftLimitThresholdDifferent(
const BaseMotorControllerConfiguration& settings) {
return (!(settings.forwardSoftLimitThreshold == _default.
forwardSoftLimitThreshold)) || !settings.enableOptimizations; }
554 static bool ReverseSoftLimitThresholdDifferent(
const BaseMotorControllerConfiguration& settings) {
return (!(settings.reverseSoftLimitThreshold == _default.
reverseSoftLimitThreshold)) || !settings.enableOptimizations; }
555 static bool ForwardSoftLimitEnableDifferent(
const BaseMotorControllerConfiguration& settings) {
return (!(settings.forwardSoftLimitEnable == _default.
forwardSoftLimitEnable)) || !settings.enableOptimizations; }
556 static bool ReverseSoftLimitEnableDifferent(
const BaseMotorControllerConfiguration& settings) {
return (!(settings.reverseSoftLimitEnable == _default.
reverseSoftLimitEnable)) || !settings.enableOptimizations; }
557 static bool AuxPIDPolarityDifferent(
const BaseMotorControllerConfiguration& settings) {
return (!(settings.auxPIDPolarity == _default.
auxPIDPolarity)) || !settings.enableOptimizations; }
558 static bool MotionCruiseVelocityDifferent(
const BaseMotorControllerConfiguration& settings) {
return (!(settings.motionCruiseVelocity == _default.
motionCruiseVelocity)) || !settings.enableOptimizations; }
559 static bool MotionAccelerationDifferent(
const BaseMotorControllerConfiguration& settings) {
return (!(settings.motionAcceleration == _default.
motionAcceleration)) || !settings.enableOptimizations; }
560 static bool MotionSCurveStrength(
const BaseMotorControllerConfiguration& settings) {
return (!(settings.motionCurveStrength == _default.
motionCurveStrength)) || !settings.enableOptimizations; }
561 static bool MotionProfileTrajectoryPeriodDifferent(
const BaseMotorControllerConfiguration& settings) {
return (!(settings.motionProfileTrajectoryPeriod == _default.
motionProfileTrajectoryPeriod)) || !settings.enableOptimizations; }
562 static bool FeedbackNotContinuousDifferent(
const BaseMotorControllerConfiguration& settings) {
return (!(settings.feedbackNotContinuous == _default.
feedbackNotContinuous)) || !settings.enableOptimizations; }
563 static bool RemoteSensorClosedLoopDisableNeutralOnLOSDifferent(
const BaseMotorControllerConfiguration& settings) {
return (!(settings.remoteSensorClosedLoopDisableNeutralOnLOS == _default.
remoteSensorClosedLoopDisableNeutralOnLOS)) || !settings.enableOptimizations; }
564 static bool ClearPositionOnLimitFDifferent(
const BaseMotorControllerConfiguration& settings) {
return (!(settings.clearPositionOnLimitF == _default.
clearPositionOnLimitF)) || !settings.enableOptimizations; }
565 static bool ClearPositionOnLimitRDifferent(
const BaseMotorControllerConfiguration& settings) {
return (!(settings.clearPositionOnLimitR == _default.
clearPositionOnLimitR)) || !settings.enableOptimizations; }
566 static bool ClearPositionOnQuadIdxDifferent(
const BaseMotorControllerConfiguration& settings) {
return (!(settings.clearPositionOnQuadIdx == _default.
clearPositionOnQuadIdx)) || !settings.enableOptimizations; }
567 static bool LimitSwitchDisableNeutralOnLOSDifferent(
const BaseMotorControllerConfiguration& settings) {
return (!(settings.limitSwitchDisableNeutralOnLOS == _default.
limitSwitchDisableNeutralOnLOS)) || !settings.enableOptimizations; }
568 static bool SoftLimitDisableNeutralOnLOSDifferent(
const BaseMotorControllerConfiguration& settings) {
return (!(settings.softLimitDisableNeutralOnLOS == _default.
softLimitDisableNeutralOnLOS)) || !settings.enableOptimizations; }
569 static bool PulseWidthPeriod_EdgesPerRotDifferent(
const BaseMotorControllerConfiguration& settings) {
return (!(settings.pulseWidthPeriod_EdgesPerRot == _default.
pulseWidthPeriod_EdgesPerRot)) || !settings.enableOptimizations; }
570 static bool PulseWidthPeriod_FilterWindowSzDifferent(
const BaseMotorControllerConfiguration& settings) {
return (!(settings.pulseWidthPeriod_FilterWindowSz == _default.
pulseWidthPeriod_FilterWindowSz)) || !settings.enableOptimizations; }
571 static bool TrajectoryInterpolationEnableDifferent(
const BaseMotorControllerConfiguration& settings) {
return (!(settings.trajectoryInterpolationEnable == _default.
trajectoryInterpolationEnable)) || !settings.enableOptimizations; }
582 double m_setPoint = 0;
593 bool _isVcompEn =
false;
997 FeedbackDevice feedbackDevice,
int pidIdx = 0,
int timeoutMs = 0);
1018 double coefficient,
int pidIdx = 0,
int timeoutMs = 0);
1195 uint8_t periodMs,
int timeoutMs = 0);
1236 [[deprecated(
"Use the overload with SensorVelocityMeasPeriod instead.")]]
1277 int deviceID,
int timeoutMs = 0);
1299 int deviceID,
int timeoutMs = 0);
1525 double allowableCloseLoopError,
int timeoutMs = 0);
2169 uint8_t subValue,
int ordinal,
int timeoutMs = 0);
2204 int32_t& valueReceived, uint8_t& subValue, int32_t ordinal,
Definition: BufferedTrajectoryPointStream.h:12
Definition: IMotorController.h:34
static std::string toString(RemoteSensorSource value)
Definition: RemoteSensorSource.h:100
Definition: VictorSPXSimCollection.h:25
Definition: BaseMotorController.h:577
virtual ctre::phoenix::ErrorCode ConfigVelocityMeasurementWindow(int windowSize, int timeoutMs=0)
virtual void NeutralOutput()
virtual ctre::phoenix::ErrorCode ConfigClosedLoopPeakOutput(int slotIdx, double percentOut, int timeoutMs=0)
virtual ctre::phoenix::ErrorCode ChangeMotionControlFramePeriod(int periodMs)
virtual ErrorCode ConfigRemoteFeedbackFilter(ctre::phoenix::motorcontrol::can::BaseTalon &talonRef, int remoteOrdinal, int timeoutMs=0)
virtual ErrorCode ConfigClearPositionOnQuadIdx(bool clearPositionOnQuadIdx, int timeoutMs=0)
virtual ctre::phoenix::ErrorCode SelectProfileSlot(int slotIdx, int pidIdx)
virtual ctre::phoenix::ErrorCode ClearStickyFaults(int timeoutMs=0)
virtual void EnableVoltageCompensation(bool enable)
virtual ErrorCode ConfigLimitSwitchDisableNeutralOnLOS(bool limitSwitchDisableNeutralOnLOS, int timeoutMs=0)
virtual ctre::phoenix::ErrorCode ConfigVoltageMeasurementFilter(int filterWindowSamples, int timeoutMs=0)
virtual ErrorCode ConfigRemoteFeedbackFilter(ctre::phoenix::sensors::CANCoder &canCoderRef, int remoteOrdinal, int timeoutMs=0)
virtual void OverrideSoftLimitsEnable(bool enable)
virtual double GetSelectedSensorPosition(int pidIdx=0)
virtual ctre::phoenix::ErrorCode ConfigSensorTerm(SensorTerm sensorTerm, FeedbackDevice feedbackDevice, int timeoutMs=0)
virtual ErrorCode ConfigGetParameter(ParamEnum param, int32_t valueToSend, int32_t &valueReceived, uint8_t &subValue, int32_t ordinal, int32_t timeoutMs)
virtual ctre::phoenix::ErrorCode Config_kP(int slotIdx, double value, int timeoutMs=0)
virtual double GetIntegralAccumulator(int pidIdx=0)
virtual ctre::phoenix::ErrorCode ConfigReverseSoftLimitEnable(bool enable, int timeoutMs=0)
virtual ctre::phoenix::ErrorCode ConfigSelectedFeedbackSensor(RemoteFeedbackDevice feedbackDevice, int pidIdx=0, int timeoutMs=0)
virtual bool IsVoltageCompensationEnabled()
virtual ctre::phoenix::ErrorCode BaseConfigAllSettings(const BaseMotorControllerConfiguration &allConfigs, int timeoutMs)
virtual ctre::phoenix::ErrorCode ConfigAllowableClosedloopError(int slotIdx, double allowableCloseLoopError, int timeoutMs=0)
virtual ErrorCode ConfigPulseWidthPeriod_EdgesPerRot(int pulseWidthPeriod_EdgesPerRot, int timeoutMs=0)
virtual void SetInverted(bool invert)
virtual double GetSelectedSensorVelocity(int pidIdx=0)
virtual double GetMotorOutputPercent()
virtual ctre::phoenix::ErrorCode Config_kI(int slotIdx, double value, int timeoutMs=0)
virtual ErrorCode ConfigFeedbackNotContinuous(bool feedbackNotContinuous, int timeoutMs=0)
virtual ctre::phoenix::ErrorCode ConfigMotionCruiseVelocity(double sensorUnitsPer100ms, int timeoutMs=0)
virtual double GetTemperature()
virtual double GetClosedLoopTarget(int pidIdx=0)
virtual ctre::phoenix::ErrorCode ConfigClosedLoopPeriod(int slotIdx, int loopTimeMs, int timeoutMs=0)
virtual ErrorCode ConfigSoftLimitDisableNeutralOnLOS(bool softLimitDisableNeutralOnLOS, int timeoutMs=0)
virtual int GetFirmwareVersion()
virtual double GetBusVoltage()
virtual ErrorCode ConfigClearPositionOnLimitR(bool clearPositionOnLimitR, int timeoutMs=0)
virtual ctre::phoenix::ErrorCode ConfigForwardSoftLimitThreshold(double forwardSensorLimit, int timeoutMs=0)
virtual void SetNeutralMode(NeutralMode neutralMode)
virtual ctre::phoenix::ErrorCode PushMotionProfileTrajectory(const ctre::phoenix::motion::TrajectoryPoint &trajPt)
virtual ctre::phoenix::ErrorCode ConfigSelectedFeedbackSensor(FeedbackDevice feedbackDevice, int pidIdx=0, int timeoutMs=0)
virtual ctre::phoenix::ErrorCode ConfigMotionSCurveStrength(int curveStrength, int timeoutMs=0)
virtual ctre::phoenix::ErrorCode Config_kF(int slotIdx, double value, int timeoutMs=0)
virtual ctre::phoenix::ErrorCode ClearMotionProfileHasUnderrun(int timeoutMs=0)
virtual ctre::phoenix::ErrorCode ConfigMaxIntegralAccumulator(int slotIdx, double iaccum, int timeoutMs=0)
virtual ctre::phoenix::ErrorCode ConfigNeutralDeadband(double percentDeadband, int timeoutMs=0)
virtual double GetClosedLoopError(int pidIdx=0)
virtual ctre::phoenix::ErrorCode ConfigFactoryDefault(int timeoutMs=50)
virtual ErrorCode ConfigRemoteSensorClosedLoopDisableNeutralOnLOS(bool remoteSensorClosedLoopDisableNeutralOnLOS, int timeoutMs=0)
virtual double GetActiveTrajectoryVelocity(int pidIdx=0)
virtual void SetSensorPhase(bool PhaseSensor)
virtual int GetDeviceID()
virtual double GetOutputCurrent()
virtual ctre::phoenix::ErrorCode ConfigNominalOutputForward(double percentOut, int timeoutMs=0)
static void DestroyAllMotControllers()
virtual ctre::phoenix::ErrorCode ConfigNominalOutputReverse(double percentOut, int timeoutMs=0)
void Follow(IMotorController &masterToFollow, ctre::phoenix::motorcontrol::FollowerType followerType)
virtual void BaseGetPIDConfigs(BasePIDSetConfiguration &pid, int pidIdx, int timeoutMs)
virtual int GetStatusFramePeriod(StatusFrame frame, int timeoutMs=0)
virtual ctre::phoenix::ErrorCode ConfigPeakOutputForward(double percentOut, int timeoutMs=0)
virtual ctre::phoenix::ErrorCode StartMotionProfile(ctre::phoenix::motion::BufferedTrajectoryPointStream &stream, uint32_t minBufferedPts, ControlMode motionProfControlMode)
Simple one-shot firing of a complete MP. Starting in 2019, MPs can be fired by building a Buffered Tr...
virtual ctre::phoenix::ErrorCode ConfigReverseSoftLimitThreshold(double reverseSensorLimit, int timeoutMs=0)
virtual ctre::phoenix::ErrorCode ConfigPeakOutputReverse(double percentOut, int timeoutMs=0)
virtual void Set(ControlMode mode, double demand0, DemandType demand1Type, double demand1)
virtual ctre::phoenix::ErrorCode ConfigRemoteFeedbackFilter(int deviceID, RemoteSensorSource remoteSensorSource, int remoteOrdinal, int timeoutMs=0)
virtual ctre::phoenix::ErrorCode ConfigAuxPIDPolarity(bool invert, int timeoutMs=0)
virtual bool IsMotionProfileTopLevelBufferFull()
virtual ErrorCode ConfigClearPositionOnLimitF(bool clearPositionOnLimitF, int timeoutMs=0)
virtual ctre::phoenix::ErrorCode ConfigClosedloopRamp(double secondsFromNeutralToFull, int timeoutMs=0)
virtual void SetInverted(InvertType invertType)
virtual ctre::phoenix::ErrorCode SetStatusFramePeriod(StatusFrame frame, uint8_t periodMs, int timeoutMs=0)
virtual ErrorCode ConfigPulseWidthPeriod_FilterWindowSz(int pulseWidthPeriod_FilterWindowSz, int timeoutMs=0)
virtual double ConfigGetParameter(ctre::phoenix::ParamEnum param, int ordinal, int timeoutMs=0)
virtual bool GetInverted() const
virtual int ConfigGetCustomParam(int paramIndex, int timeoutMs=0)
void GetFilterConfigs(FilterConfiguration &Filter, int ordinal=0, int timeoutMs=50)
virtual ctre::phoenix::ErrorCode ConfigSensorTerm(SensorTerm sensorTerm, RemoteFeedbackDevice feedbackDevice, int timeoutMs=0)
virtual ctre::phoenix::ErrorCode ConfigReverseLimitSwitchSource(LimitSwitchSource type, LimitSwitchNormal normalOpenOrClose, int timeoutMs=0)
virtual ControlMode GetControlMode()
virtual ctre::phoenix::ErrorCode GetLastError()
virtual ctre::phoenix::ErrorCode SetStatusFramePeriod(StatusFrameEnhanced frame, uint8_t periodMs, int timeoutMs=0)
virtual bool IsMotionProfileFinished()
Determine if running MP is complete. This requires using the StartMotionProfile routine to start the ...
virtual ctre::phoenix::ErrorCode ConfigSetCustomParam(int newValue, int paramIndex, int timeoutMs=0)
virtual ctre::phoenix::ErrorCode GetMotionProfileStatus(ctre::phoenix::motion::MotionProfileStatus &statusToFill)
virtual ctre::phoenix::ErrorCode ConfigMotionAcceleration(double sensorUnitsPer100msPerSec, int timeoutMs=0)
virtual void BaseGetAllConfigs(BaseMotorControllerConfiguration &allConfigs, int timeoutMs)
virtual void Follow(IMotorController &masterToFollow)
void GetSlotConfigs(SlotConfiguration &slot, int slotIdx=0, int timeoutMs=50)
virtual ctre::phoenix::ErrorCode SetIntegralAccumulator(double iaccum, int pidIdx=0, int timeoutMs=0)
virtual void ValueUpdated()
virtual ctre::phoenix::ErrorCode ConfigOpenloopRamp(double secondsFromNeutralToFull, int timeoutMs=0)
virtual ctre::phoenix::ErrorCode GetFaults(Faults &toFill)
virtual ctre::phoenix::ErrorCode ConfigMotionProfileTrajectoryInterpolationEnable(bool enable, int timeoutMs=0)
virtual ctre::phoenix::ErrorCode ConfigForwardSoftLimitEnable(bool enable, int timeoutMs=0)
virtual ctre::phoenix::ErrorCode ConfigSetParameter(ctre::phoenix::ParamEnum param, double value, uint8_t subValue, int ordinal, int timeoutMs=0)
virtual ctre::phoenix::ErrorCode ConfigReverseLimitSwitchSource(RemoteLimitSwitchSource type, LimitSwitchNormal normalOpenOrClose, int deviceID, int timeoutMs=0)
virtual ctre::phoenix::ErrorCode ConfigSelectedFeedbackCoefficient(double coefficient, int pidIdx=0, int timeoutMs=0)
virtual ErrorCode ClearMotionProfileTrajectories()
virtual ctre::phoenix::ErrorCode ConfigVoltageCompSaturation(double voltage, int timeoutMs=0)
virtual ctre::phoenix::ErrorCode ConfigMotionProfileTrajectoryPeriod(int baseTrajDurationMs, int timeoutMs=0)
virtual int GetStatusFramePeriod(StatusFrameEnhanced frame, int timeoutMs=0)
virtual double GetActiveTrajectoryArbFeedFwd(int pidIdx=0)
virtual int GetMotionProfileTopLevelBufferCount()
virtual bool HasResetOccurred()
virtual ctre::phoenix::ErrorCode ConfigForwardLimitSwitchSource(RemoteLimitSwitchSource type, LimitSwitchNormal normalOpenOrClose, int deviceID, int timeoutMs=0)
virtual ctre::phoenix::ErrorCode Config_IntegralZone(int slotIdx, double izone, int timeoutMs=0)
virtual ctre::phoenix::ErrorCode GetStickyFaults(StickyFaults &toFill)
virtual ctre::phoenix::ErrorCode SetControlFramePeriod(ControlFrame frame, int periodMs)
virtual void ProcessMotionProfileBuffer()
virtual double GetActiveTrajectoryPosition(int pidIdx=0)
virtual ctre::phoenix::ErrorCode Config_kD(int slotIdx, double value, int timeoutMs=0)
virtual ctre::phoenix::ErrorCode ConfigVelocityMeasurementPeriod(ctre::phoenix::sensors::SensorVelocityMeasPeriod period, int timeoutMs=0)
void OverrideLimitSwitchesEnable(bool enable)
virtual double GetMotorOutputVoltage()
virtual void Set(ControlMode mode, double value)
virtual ctre::phoenix::ErrorCode ConfigForwardLimitSwitchSource(LimitSwitchSource type, LimitSwitchNormal normalOpenOrClose, int timeoutMs=0)
BaseMotorController(int deviceNumber, const char *model, std::string const &canbus="")
virtual double GetErrorDerivative(int pidIdx=0)
virtual ctre::phoenix::ErrorCode SetSelectedSensorPosition(double sensorPos, int pidIdx=0, int timeoutMs=50)
Definition: BaseMotorController.h:532
static bool OpenloopRampDifferent(const BaseMotorControllerConfiguration &settings)
Definition: BaseMotorController.h:542
Definition: BaseTalon.h:266
Definition: BaseMotorController.h:249
static bool KPDifferent(const SlotConfiguration &settings)
Definition: BaseMotorController.h:259
Definition: CANCoder.h:169
static std::string toString(SensorVelocityMeasPeriod value)
Definition: SensorVelocityMeasPeriod.h:57
ControlMode
Definition: ControlMode.h:10
FollowerType
Definition: FollowerType.h:10
DemandType
Definition: DemandType.h:9
InvertType
Definition: InvertType.h:13
@ None
Same as SetInverted(false)
StatusFrameEnhanced
Definition: StatusFrame.h:10
SensorTerm
Definition: SensorTerm.h:10
LimitSwitchNormal
Definition: LimitSwitchType.h:61
RemoteSensorSource
Definition: RemoteSensorSource.h:12
RemoteFeedbackDevice
Definition: FeedbackDevice.h:169
RemoteLimitSwitchSource
Definition: LimitSwitchType.h:34
FeedbackDevice
Definition: FeedbackDevice.h:13
NeutralMode
Definition: NeutralMode.h:10
ControlFrame
Definition: ControlFrame.h:10
VelocityMeasPeriod
Definition: VelocityMeasPeriod.h:12
@ Period_100Ms
Definition: VelocityMeasPeriod.h:44
StatusFrame
Definition: StatusFrame.h:94
LimitSwitchSource
Definition: LimitSwitchType.h:10
SensorVelocityMeasPeriod
Definition: SensorVelocityMeasPeriod.h:12
ParamEnum
Definition: paramEnum.h:12
ErrorCode
Definition: ErrorCode.h:12
Definition: ErrorCode.h:5
Definition: CustomParamConfiguration.h:52
Definition: CustomParamConfiguration.h:10
bool enableOptimizations
Definition: CustomParamConfiguration.h:22
std::string toString()
Definition: CustomParamConfiguration.h:33
Definition: MotionProfileStatus.h:14
Definition: TrajectoryPoint.h:10
Definition: StickyFaults.h:10
Definition: BaseMotorController.h:275
double motionCruiseVelocity
Definition: BaseMotorController.h:378
int motionCurveStrength
Definition: BaseMotorController.h:386
bool auxPIDPolarity
Definition: BaseMotorController.h:366
bool clearPositionOnQuadIdx
Definition: BaseMotorController.h:413
double motionAcceleration
Definition: BaseMotorController.h:382
SlotConfiguration slot3
Definition: BaseMotorController.h:354
bool clearPositionOnLimitR
Definition: BaseMotorController.h:409
double nominalOutputReverse
Definition: BaseMotorController.h:299
double openloopRamp
Definition: BaseMotorController.h:279
int pulseWidthPeriod_FilterWindowSz
Definition: BaseMotorController.h:429
double voltageCompSaturation
Definition: BaseMotorController.h:310
double neutralDeadband
Definition: BaseMotorController.h:303
bool remoteSensorClosedLoopDisableNeutralOnLOS
Definition: BaseMotorController.h:401
double closedloopRamp
Definition: BaseMotorController.h:283
double reverseSoftLimitThreshold
Definition: BaseMotorController.h:330
int pulseWidthPeriod_EdgesPerRot
Definition: BaseMotorController.h:425
bool softLimitDisableNeutralOnLOS
Definition: BaseMotorController.h:421
std::string toString(std::string prependString)
Definition: BaseMotorController.h:482
double peakOutputForward
Definition: BaseMotorController.h:287
int velocityMeasurementWindow
Definition: BaseMotorController.h:322
bool forwardSoftLimitEnable
Definition: BaseMotorController.h:334
SlotConfiguration slot0
Definition: BaseMotorController.h:342
int motionProfileTrajectoryPeriod
Definition: BaseMotorController.h:393
bool feedbackNotContinuous
Definition: BaseMotorController.h:397
FilterConfiguration remoteFilter1
Definition: BaseMotorController.h:374
int voltageMeasurementFilter
Definition: BaseMotorController.h:314
bool trajectoryInterpolationEnable
Definition: BaseMotorController.h:433
SlotConfiguration slot2
Definition: BaseMotorController.h:350
ctre::phoenix::sensors::SensorVelocityMeasPeriod velocityMeasurementPeriod
Definition: BaseMotorController.h:318
bool reverseSoftLimitEnable
Definition: BaseMotorController.h:338
FilterConfiguration remoteFilter0
Definition: BaseMotorController.h:370
bool clearPositionOnLimitF
Definition: BaseMotorController.h:405
bool limitSwitchDisableNeutralOnLOS
Definition: BaseMotorController.h:417
double nominalOutputForward
Definition: BaseMotorController.h:295
std::string toString()
Definition: BaseMotorController.h:473
double peakOutputReverse
Definition: BaseMotorController.h:291
SlotConfiguration slot1
Definition: BaseMotorController.h:346
double forwardSoftLimitThreshold
Definition: BaseMotorController.h:326
Definition: BaseMotorController.h:49
double selectedFeedbackCoefficient
Definition: BaseMotorController.h:54
std::string toString()
Definition: BaseMotorController.h:64
std::string toString(const std::string &prependString)
Definition: BaseMotorController.h:73
Definition: BaseMotorController.h:122
static bool RemoteSensorDeviceIDDifferent(const FilterConfiguration &settings)
Definition: BaseMotorController.h:132
Definition: BaseMotorController.h:82
std::string toString(std::string prependString)
Definition: BaseMotorController.h:110
std::string toString()
Definition: BaseMotorController.h:102
int remoteSensorDeviceID
Definition: BaseMotorController.h:87
RemoteSensorSource remoteSensorSource
Definition: BaseMotorController.h:91
Definition: BaseMotorController.h:141
double maxIntegralAccumulator
Definition: BaseMotorController.h:193
std::string toString(std::string prependString)
Definition: BaseMotorController.h:228
double allowableClosedloopError
Definition: BaseMotorController.h:189
double kD
Definition: BaseMotorController.h:167
int closedLoopPeriod
Definition: BaseMotorController.h:201
std::string toString()
Definition: BaseMotorController.h:219
double kI
Definition: BaseMotorController.h:159
double kP
Definition: BaseMotorController.h:150
double kF
Definition: BaseMotorController.h:176
double closedLoopPeakOutput
Definition: BaseMotorController.h:197
double integralZone
Definition: BaseMotorController.h:184