Removed support for dual analog hall effect sensors for shifters
Change-Id: Ie521511f5181140de44c35385aac0b01b5116c06
diff --git a/frc971/control_loops/drivetrain/drivetrain_lib_test.cc b/frc971/control_loops/drivetrain/drivetrain_lib_test.cc
index c66a4e3..5cc15d1 100644
--- a/frc971/control_loops/drivetrain/drivetrain_lib_test.cc
+++ b/frc971/control_loops/drivetrain/drivetrain_lib_test.cc
@@ -31,8 +31,8 @@
// TODO(Comran): Make one that doesn't depend on the actual values for a
// specific robot.
-const constants::ShifterHallEffect kThreeStateDriveShifter{0.0, 0.0, 0.0,
- 0.0, 0.25, 0.75};
+const constants::ShifterHallEffect kThreeStateDriveShifter{0.0, 0.0, 0.25,
+ 0.75};
const DrivetrainConfig &GetDrivetrainConfig() {
static DrivetrainConfig kDrivetrainConfig{
diff --git a/frc971/shifter_hall_effect.h b/frc971/shifter_hall_effect.h
index aaa5ebd..991386d 100644
--- a/frc971/shifter_hall_effect.h
+++ b/frc971/shifter_hall_effect.h
@@ -4,18 +4,31 @@
namespace frc971 {
namespace constants {
-// Contains the voltages for an analog hall effect sensor on a shifter.
+// Contains the constants for mapping the analog voltages that the shifter
+// sensors return to the shifter position. The code which uses this is trying
+// to sort out if we are in low gear, high gear, or neutral.
struct ShifterHallEffect {
- // The numbers to use for scaling raw voltages to 0-1.
- // Low is near 0.0, high is near 1.0
- double low_gear_middle, low_gear_low;
- double high_gear_high, high_gear_middle;
+ // low_gear_low is the voltage that the shifter position sensor reads when it
+ // is all the way in low gear. high_gear_high is the voltage that the shifter
+ // position sensor reads when it is all the way in high gear. These two
+ // values are used to calculate a position from 0 to 1, where we get 0 when
+ // the shifter is in low gear, and 1 when it is high gear.
+ double low_gear_low;
+ double high_gear_high;
// The numbers for when the dog is clear of each gear.
+ // We are in low gear when the position is less than clear_low, and in high
+ // gear when the shifter position is greater than clear_high.
double clear_low, clear_high;
};
-} // constants
-} // frc971
+struct DualHallShifterHallEffect {
+ ShifterHallEffect shifter_hall_effect;
+ double low_gear_middle;
+ double high_gear_middle;
+};
+
+} // namespace constants
+} // namespace frc971
#endif
diff --git a/y2012/control_loops/drivetrain/drivetrain_base.cc b/y2012/control_loops/drivetrain/drivetrain_base.cc
index 8748d4d..aa8f9e4 100644
--- a/y2012/control_loops/drivetrain/drivetrain_base.cc
+++ b/y2012/control_loops/drivetrain/drivetrain_base.cc
@@ -15,7 +15,7 @@
using ::frc971::constants::ShifterHallEffect;
-const ShifterHallEffect kThreeStateDriveShifter{0.0, 0.0, 0.0, 0.0, 0.25, 0.75};
+const ShifterHallEffect kThreeStateDriveShifter{0.0, 0.0, 0.25, 0.75};
const DrivetrainConfig &GetDrivetrainConfig() {
static DrivetrainConfig kDrivetrainConfig{
diff --git a/y2014/constants.cc b/y2014/constants.cc
index d5a29be..8354e57 100644
--- a/y2014/constants.cc
+++ b/y2014/constants.cc
@@ -39,11 +39,11 @@
const double kPracticeLowGearRatio = kCompLowGearRatio;
const double kPracticeHighGearRatio = kCompHighGearRatio;
-const ShifterHallEffect kCompLeftDriveShifter{2.61, 2.33, 4.25, 3.28, 0.2, 0.7};
-const ShifterHallEffect kCompRightDriveShifter{2.94, 4.31, 4.32, 3.25, 0.2, 0.7};
+const DualHallShifterHallEffect kCompLeftDriveShifter{{2.33, 4.25, 0.2, 0.7}, 2.61, 3.28};
+const DualHallShifterHallEffect kCompRightDriveShifter{{4.31, 4.32, 0.2, 0.7}, 2.94, 3.25};
-const ShifterHallEffect kPracticeLeftDriveShifter{2.80, 3.05, 4.15, 3.2, 0.2, 0.7};
-const ShifterHallEffect kPracticeRightDriveShifter{2.90, 3.75, 3.80, 2.98, 0.2, 0.7};
+const DualHallShifterHallEffect kPracticeLeftDriveShifter{{3.05, 4.15, 0.2, 0.7}, 2.80, 3.2};
+const DualHallShifterHallEffect kPracticeRightDriveShifter{{3.75, 3.80, 0.2, 0.7}, 2.90, 2.98};
const double shooter_zeroing_speed = 0.05;
const double shooter_unload_speed = 0.08;
diff --git a/y2014/constants.h b/y2014/constants.h
index 7fb2507..4ce3714 100644
--- a/y2014/constants.h
+++ b/y2014/constants.h
@@ -9,7 +9,7 @@
namespace y2014 {
namespace constants {
-using ::frc971::constants::ShifterHallEffect;
+using ::frc971::constants::DualHallShifterHallEffect;
// Has all of the numbers that change for both robots and makes it easy to
// retrieve the values for the current one.
@@ -35,7 +35,7 @@
// gear.
double low_gear_ratio;
double high_gear_ratio;
- ShifterHallEffect left_drive, right_drive;
+ DualHallShifterHallEffect left_drive, right_drive;
bool clutch_transmission;
::std::function<StateFeedbackLoop<2, 2, 2>()> make_v_drivetrain_loop;
diff --git a/y2014/control_loops/drivetrain/drivetrain_base.cc b/y2014/control_loops/drivetrain/drivetrain_base.cc
index ffb0ee3..2c3a6f8 100644
--- a/y2014/control_loops/drivetrain/drivetrain_base.cc
+++ b/y2014/control_loops/drivetrain/drivetrain_base.cc
@@ -30,8 +30,8 @@
constants::GetValues().high_gear_ratio,
constants::GetValues().low_gear_ratio,
- constants::GetValues().left_drive,
- constants::GetValues().right_drive,
+ constants::GetValues().left_drive.shifter_hall_effect,
+ constants::GetValues().right_drive.shifter_hall_effect,
true,
0,
0.25,
diff --git a/y2014/wpilib_interface.cc b/y2014/wpilib_interface.cc
index b5dee33..a130544 100644
--- a/y2014/wpilib_interface.cc
+++ b/y2014/wpilib_interface.cc
@@ -86,14 +86,16 @@
(3.5 /*wheel diameter*/ * 2.54 / 100.0 * M_PI) * 2.0 / 2.0;
}
-float hall_translate(const constants::ShifterHallEffect &k, float in_low,
+float hall_translate(const constants::DualHallShifterHallEffect &k, float in_low,
float in_high) {
const float low_ratio =
- 0.5 * (in_low - static_cast<float>(k.low_gear_low)) /
- static_cast<float>(k.low_gear_middle - k.low_gear_low);
+ 0.5 * (in_low - static_cast<float>(k.shifter_hall_effect.low_gear_low)) /
+ static_cast<float>(k.low_gear_middle - k.shifter_hall_effect.low_gear_low);
const float high_ratio =
- 0.5 + 0.5 * (in_high - static_cast<float>(k.high_gear_middle)) /
- static_cast<float>(k.high_gear_high - k.high_gear_middle);
+ 0.5 +
+ 0.5 * (in_high - static_cast<float>(k.high_gear_middle)) /
+ static_cast<float>(k.shifter_hall_effect.high_gear_high -
+ k.high_gear_middle);
// Return low when we are below 1/2, and high when we are above 1/2.
if (low_ratio + high_ratio < 1.0) {
diff --git a/y2014_bot3/control_loops/drivetrain/drivetrain_base.cc b/y2014_bot3/control_loops/drivetrain/drivetrain_base.cc
index afb5375..46fcb71 100644
--- a/y2014_bot3/control_loops/drivetrain/drivetrain_base.cc
+++ b/y2014_bot3/control_loops/drivetrain/drivetrain_base.cc
@@ -15,7 +15,7 @@
using ::frc971::constants::ShifterHallEffect;
-const ShifterHallEffect kThreeStateDriveShifter{0.0, 0.0, 0.0, 0.0, 0.25, 0.75};
+const ShifterHallEffect kThreeStateDriveShifter{0.0, 0.0, 0.25, 0.75};
const DrivetrainConfig &GetDrivetrainConfig() {
static DrivetrainConfig kDrivetrainConfig{
diff --git a/y2015/constants.cc b/y2015/constants.cc
index ce78344..0ce6ef1 100644
--- a/y2015/constants.cc
+++ b/y2015/constants.cc
@@ -37,14 +37,14 @@
const double kHighGearRatio = kLowGearRatio;
const ::frc971::constants::ShifterHallEffect kCompRightDriveShifter{
- 555, 657, 660, 560, 0.2, 0.7};
+ 0.0, 0.0, 0.2, 0.7};
const ::frc971::constants::ShifterHallEffect kCompLeftDriveShifter{
- 555, 660, 644, 552, 0.2, 0.7};
+ 0.0, 0.0, 0.2, 0.7};
const ::frc971::constants::ShifterHallEffect kPracticeRightDriveShifter{
- 2.95, 3.95, 3.95, 2.95, 0.2, 0.7};
+ 0.0, 0.0, 0.2, 0.7};
const ::frc971::constants::ShifterHallEffect kPracticeLeftDriveShifter{
- 2.95, 4.2, 3.95, 3.0, 0.2, 0.7};
+ 0.0, 0.0, 0.2, 0.7};
const double kToteHeight = 0.3;
// Set by Daniel on 2/13/15.
diff --git a/y2015/control_loops/drivetrain/drivetrain_base.cc b/y2015/control_loops/drivetrain/drivetrain_base.cc
index 26a283b..30e25f8 100644
--- a/y2015/control_loops/drivetrain/drivetrain_base.cc
+++ b/y2015/control_loops/drivetrain/drivetrain_base.cc
@@ -15,7 +15,7 @@
using ::frc971::constants::ShifterHallEffect;
-const ShifterHallEffect kThreeStateDriveShifter{0.0, 0.0, 0.0, 0.0, 0.25, 0.75};
+const ShifterHallEffect kThreeStateDriveShifter{0.0, 0.0, 0.25, 0.75};
const DrivetrainConfig &GetDrivetrainConfig() {
static DrivetrainConfig kDrivetrainConfig{
diff --git a/y2015_bot3/control_loops/drivetrain/drivetrain_base.cc b/y2015_bot3/control_loops/drivetrain/drivetrain_base.cc
index f7c3d2f..3af05b9 100644
--- a/y2015_bot3/control_loops/drivetrain/drivetrain_base.cc
+++ b/y2015_bot3/control_loops/drivetrain/drivetrain_base.cc
@@ -15,7 +15,7 @@
using ::frc971::constants::ShifterHallEffect;
-const ShifterHallEffect kThreeStateDriveShifter{0.0, 0.0, 0.0, 0.0, 0.25, 0.75};
+const ShifterHallEffect kThreeStateDriveShifter{0.0, 0.0, 0.25, 0.75};
const DrivetrainConfig &GetDrivetrainConfig() {
static DrivetrainConfig kDrivetrainConfig{
diff --git a/y2015_bot3/control_loops/drivetrain/drivetrain_base.h b/y2015_bot3/control_loops/drivetrain/drivetrain_base.h
index 130d549..1614b88 100644
--- a/y2015_bot3/control_loops/drivetrain/drivetrain_base.h
+++ b/y2015_bot3/control_loops/drivetrain/drivetrain_base.h
@@ -15,10 +15,10 @@
kDrivetrainEncoderRatio * 18.0 / 60.0;
constexpr double kDrivetrainLowGearRatio = kDrivetrainHighGearRatio;
const bool kDrivetrainClutchTransmission = false;
-const ::frc971::constants::ShifterHallEffect kDrivetrainRightShifter{
- 555, 657, 660, 560, 0.2, 0.7};
-const ::frc971::constants::ShifterHallEffect kDrivetrainLeftShifter{
- 555, 660, 644, 552, 0.2, 0.7};
+const ::frc971::constants::ShifterHallEffect kDrivetrainRightShifter{0.0, 0.0,
+ 0.2, 0.7};
+const ::frc971::constants::ShifterHallEffect kDrivetrainLeftShifter{0.0, 0.0,
+ 0.2, 0.7};
// End constants
const ::frc971::control_loops::drivetrain::DrivetrainConfig &
diff --git a/y2016/control_loops/drivetrain/drivetrain_base.cc b/y2016/control_loops/drivetrain/drivetrain_base.cc
index f66d963..3f15694 100644
--- a/y2016/control_loops/drivetrain/drivetrain_base.cc
+++ b/y2016/control_loops/drivetrain/drivetrain_base.cc
@@ -16,7 +16,7 @@
using ::frc971::constants::ShifterHallEffect;
-const ShifterHallEffect kThreeStateDriveShifter{0.0, 0.0, 0.0, 0.0, 0.25, 0.75};
+const ShifterHallEffect kThreeStateDriveShifter{0.0, 0.0, 0.25, 0.75};
const DrivetrainConfig &GetDrivetrainConfig() {
static DrivetrainConfig kDrivetrainConfig{
diff --git a/y2016_bot3/control_loops/drivetrain/drivetrain_base.cc b/y2016_bot3/control_loops/drivetrain/drivetrain_base.cc
index 26a551b..7a99ff3 100644
--- a/y2016_bot3/control_loops/drivetrain/drivetrain_base.cc
+++ b/y2016_bot3/control_loops/drivetrain/drivetrain_base.cc
@@ -15,7 +15,7 @@
using ::frc971::constants::ShifterHallEffect;
-const ShifterHallEffect kThreeStateDriveShifter{0.0, 0.0, 0.0, 0.0, 0.25, 0.75};
+const ShifterHallEffect kThreeStateDriveShifter{0.0, 0.0, 0.25, 0.75};
const DrivetrainConfig &GetDrivetrainConfig() {
static DrivetrainConfig kDrivetrainConfig{
diff --git a/y2016_bot4/control_loops/drivetrain/drivetrain_base.cc b/y2016_bot4/control_loops/drivetrain/drivetrain_base.cc
index 54a7321..1682f30 100644
--- a/y2016_bot4/control_loops/drivetrain/drivetrain_base.cc
+++ b/y2016_bot4/control_loops/drivetrain/drivetrain_base.cc
@@ -15,7 +15,7 @@
using ::frc971::constants::ShifterHallEffect;
-const ShifterHallEffect kThreeStateDriveShifter{0.0, 0.0, 0.0, 0.0, 0.25, 0.75};
+const ShifterHallEffect kThreeStateDriveShifter{0.0, 0.0, 0.25, 0.75};
const DrivetrainConfig &GetDrivetrainConfig() {
static DrivetrainConfig kDrivetrainConfig{
diff --git a/y2017/control_loops/drivetrain/drivetrain_base.cc b/y2017/control_loops/drivetrain/drivetrain_base.cc
index 3367fc1..9ff357b 100644
--- a/y2017/control_loops/drivetrain/drivetrain_base.cc
+++ b/y2017/control_loops/drivetrain/drivetrain_base.cc
@@ -16,7 +16,7 @@
using ::frc971::constants::ShifterHallEffect;
-const ShifterHallEffect kThreeStateDriveShifter{0.0, 0.0, 0.0, 0.0, 0.25, 0.75};
+const ShifterHallEffect kThreeStateDriveShifter{0.0, 0.0, 0.25, 0.75};
const DrivetrainConfig &GetDrivetrainConfig() {
static DrivetrainConfig kDrivetrainConfig{