blob: 63e91369127a2947c63e54c92817d9b51ce38138 [file] [log] [blame]
namespace frc971.zeroing;
table HallEffectZeroingConstants {
// The absolute position of the lower edge of the hall effect sensor.
lower_hall_position:double (id: 0);
// The absolute position of the upper edge of the hall effect sensor.
upper_hall_position:double (id: 1);
// The difference in scaled units between two hall effect edges. This is the
// number of units/cycle.
index_difference:double (id: 2);
// Number of cycles we need to see the hall effect high.
hall_trigger_zeroing_length:uint64 (id: 3);
// Direction the system must be moving in order to zero. True is positive,
// False is negative direction.
zeroing_move_direction:bool (id: 4);
}
table PotAndIndexPulseZeroingConstants {
// The number of samples in the moving average filter.
average_filter_size:uint64 (id: 0);
// The difference in scaled units between two index pulses.
index_difference:double (id: 1);
// The absolute position in scaled units of one of the index pulses.
measured_index_position:double (id: 2);
// Value between 0 and .5 which determines a fraction of the index_diff
// you want to use.
allowable_encoder_error:double (id: 3);
}
table EncoderPlusIndexZeroingConstants {
// The amount of index pulses in the joint's range of motion.
index_pulse_count:int (id: 0);
// The difference in scaled units between two index pulses.
index_difference:double (id: 1);
// The absolute position in scaled units of one of the index pulses.
measured_index_position:double (id: 2);
// The index pulse that is known, going from lowest in the range of motion to
// highest (Starting at 0).
known_index_pulse:int (id: 3);
// Value between 0 and 0.5 which determines a fraction of the index_diff
// you want to use. If an index pulse deviates by more than this amount from
// where we expect to see one then we flag an error.
allowable_encoder_error:double (id: 4);
}
table PotAndAbsoluteEncoderZeroingConstants {
// The number of samples in the moving average filter.
average_filter_size:uint64 (id: 0);
// The distance that the absolute encoder needs to complete a full rotation.
one_revolution_distance:double (id: 1);
// Measured absolute position of the encoder when at zero.
measured_absolute_position:double (id: 2);
// Treshold for deciding if we are moving. moving_buffer_size samples need to
// be within this distance of each other before we use the middle one to zero.
zeroing_threshold:double (id: 3);
// Buffer size for deciding if we are moving.
moving_buffer_size:uint64 (id: 4);
// Value between 0 and 1 indicating what fraction of one_revolution_distance
// it is acceptable for the offset to move.
allowable_encoder_error:double (id: 5);
}
table RelativeEncoderZeroingConstants {}
table ContinuousAbsoluteEncoderZeroingConstants {
// The number of samples in the moving average filter.
average_filter_size:uint64 (id: 0);
// The distance that the absolute encoder needs to complete a full rotation.
// It is presumed that this will always be 2 * pi for any subsystem using this
// class, unless you have a continuous system that for some reason doesn't
// have a logical period of 1 revolution in radians.
one_revolution_distance:double (id: 1);
// Measured absolute position of the encoder when at zero.
measured_absolute_position:double (id: 2);
// Threshold for deciding if we are moving. moving_buffer_size samples need to
// be within this distance of each other before we use the middle one to zero.
zeroing_threshold:double (id: 3);
// Buffer size for deciding if we are moving.
moving_buffer_size:uint64 (id: 4);
// Value between 0 and 1 indicating what fraction of a revolution
// it is acceptable for the offset to move.
allowable_encoder_error:double (id: 5);
}
table AbsoluteEncoderZeroingConstants {
// The number of samples in the moving average filter.
average_filter_size:uint64 (id: 0);
// The distance that the absolute encoder needs to complete a full rotation.
one_revolution_distance:double (id: 1);
// Measured absolute position of the encoder when at zero.
measured_absolute_position:double (id: 2);
// Position of the middle of the range of motion in output coordinates.
middle_position:double (id: 3);
// Threshold for deciding if we are moving. moving_buffer_size samples need to
// be within this distance of each other before we use the middle one to zero.
zeroing_threshold:double (id: 4);
// Buffer size for deciding if we are moving.
moving_buffer_size:uint64 (id: 5);
// Value between 0 and 1 indicating what fraction of one_revolution_distance
// it is acceptable for the offset to move.
allowable_encoder_error:double (id: 6);
}
table AbsoluteAndAbsoluteEncoderZeroingConstants {
// The number of samples in the moving average filter.
average_filter_size:uint64 (id: 0);
// The distance that the absolute encoder needs to complete a full rotation.
one_revolution_distance:double (id: 1);
// Measured absolute position of the encoder when at zero.
measured_absolute_position:double (id: 2);
// The distance that the single turn absolute encoder needs to complete a full
// rotation.
single_turn_one_revolution_distance:double (id: 3);
// Measured absolute position of the single turn encoder when at zero.
single_turn_measured_absolute_position:double (id: 4);
// Position of the middle of the range of motion in output coordinates.
single_turn_middle_position:double (id: 5);
// Threshold for deciding if we are moving. moving_buffer_size samples need to
// be within this distance of each other before we use the middle one to zero.
zeroing_threshold:double (id: 6);
// Buffer size for deciding if we are moving.
moving_buffer_size:uint64 (id: 7);
// Value between 0 and 1 indicating what fraction of one_revolution_distance
// it is acceptable for the offset to move.
allowable_encoder_error:double (id: 8);
}