| package frc971; |
| |
| // Represents all of the data for a single indexed encoder. In other words, |
| // just a relative encoder with an index pulse. |
| // 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 IndexPosition { |
| // Current position read from the encoder. |
| double encoder; |
| // Position from the encoder latched at the last index pulse. |
| double latched_encoder; |
| // How many index pulses we've seen since startup. Starts at 0. |
| uint32_t index_pulses; |
| }; |
| |
| // 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; |
| }; |
| |
| // Represents all of the data for a single potentiometer with an absolute and |
| // relative encoder pair. |
| // The units on all of the positions are the same. |
| // The relative 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 PotAndAbsolutePosition { |
| // Current position read from each encoder. |
| double encoder; |
| double absolute_encoder; |
| |
| // Current position read from the potentiometer. |
| double pot; |
| }; |
| |
| // 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; |
| }; |
| |
| // The internal state of a zeroing estimator. |
| struct AbsoluteEstimatorState { |
| // 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; |
| }; |
| |
| // Parameters for the motion profiles. |
| struct ProfileParameters { |
| // Maximum velocity for the profile. |
| float max_velocity; |
| // Maximum acceleration for the profile. |
| float max_acceleration; |
| }; |