blob: 34b246795eaa66ac95a53ff9d861a6bf1ec85065 [file] [log] [blame]
package frc971;
// Represents all of the data for a single potentiometer and indexed encoder
// pair.
// The units on all of the positions are the same.
// All encoder values are relative to where the encoder was at some arbitrary
// point in time. All potentiometer values are relative to some arbitrary 0
// position which varies with each robot.
struct PotAndIndexPosition {
// Current position read from the encoder.
double encoder;
// Current position read from the potentiometer.
double pot;
// Position from the encoder latched at the last index pulse.
double latched_encoder;
// Position from the potentiometer latched at the last index pulse.
double latched_pot;
// How many index pulses we've seen since startup. Starts at 0.
uint32_t index_pulses;
};
// The internal state of a zeroing estimator.
struct EstimatorState {
// If true, there has been a fatal error for the estimator.
bool error;
// If the joint has seen an index pulse and is zeroed.
bool zeroed;
// The estimated position of the joint.
double position;
// The estimated position not using the index pulse.
double pot_position;
};
// A left/right pair of PotAndIndexPositions.
struct PotAndIndexPair {
PotAndIndexPosition left;
PotAndIndexPosition right;
};
// Records edges captured on a single hall effect sensor.
struct HallEffectStruct {
bool current;
int32_t posedge_count;
int32_t negedge_count;
double posedge_value;
double negedge_value;
};
// Records the positions for a mechanism with edge-capturing sensors on it.
struct HallEffectPositions {
double current;
double posedge;
double negedge;
};
// Records edges captured on a single hall effect sensor.
struct PosedgeOnlyCountedHallEffectStruct {
bool current;
int32_t posedge_count;
int32_t negedge_count;
double posedge_value;
};