added more manual overrides to the indexer
diff --git a/frc971/autonomous/auto.cc b/frc971/autonomous/auto.cc
index 5c076c6..1a2a46a 100644
--- a/frc971/autonomous/auto.cc
+++ b/frc971/autonomous/auto.cc
@@ -50,25 +50,37 @@
void StartIndex() {
LOG(INFO, "Starting index\n");
control_loops::index_loop.goal.MakeWithBuilder()
- .goal_state(2).force_fire(false).Send();
+ .goal_state(2)
+ .force_fire(false)
+ .override_index(false)
+ .Send();
}
void PreloadIndex() {
LOG(INFO, "Preloading index\n");
control_loops::index_loop.goal.MakeWithBuilder()
- .goal_state(3).force_fire(false).Send();
+ .goal_state(3)
+ .force_fire(false)
+ .override_index(false)
+ .Send();
}
void ShootIndex() {
LOG(INFO, "Shooting index\n");
control_loops::index_loop.goal.MakeWithBuilder()
- .goal_state(4).force_fire(false).Send();
+ .goal_state(4)
+ .force_fire(false)
+ .override_index(false)
+ .Send();
}
void ResetIndex() {
LOG(INFO, "Resetting index\n");
control_loops::index_loop.goal.MakeWithBuilder()
- .goal_state(5).force_fire(false).Send();
+ .goal_state(5)
+ .force_fire(false)
+ .override_index(false)
+ .Send();
}
void WaitForIndexReset() {
diff --git a/frc971/control_loops/index/index.cc b/frc971/control_loops/index/index.cc
index bec7992..0e5270a 100644
--- a/frc971/control_loops/index/index.cc
+++ b/frc971/control_loops/index/index.cc
@@ -999,7 +999,11 @@
if (output) {
output->intake_voltage = intake_voltage;
output->transfer_voltage = transfer_voltage;
- output->index_voltage = wrist_loop_->U(0, 0);
+ if (goal->override_index) {
+ output->index_voltage = goal->index_voltage;
+ } else {
+ output->index_voltage = wrist_loop_->U(0, 0);
+ }
output->loader_up = loader_up_;
output->disc_clamped = disc_clamped_;
output->disc_ejected = disc_ejected_;
diff --git a/frc971/control_loops/index/index_motor.q b/frc971/control_loops/index/index_motor.q
index 94e65b9..c14d459 100644
--- a/frc971/control_loops/index/index_motor.q
+++ b/frc971/control_loops/index/index_motor.q
@@ -16,6 +16,10 @@
int32_t goal_state;
// Forces the loader to fire.
bool force_fire;
+
+ // If true, set the indexer voltage to index_voltage.
+ bool override_index;
+ double index_voltage;
};
message Position {
diff --git a/frc971/input/JoystickReader.cc b/frc971/input/JoystickReader.cc
index a884393..7b11625 100644
--- a/frc971/input/JoystickReader.cc
+++ b/frc971/input/JoystickReader.cc
@@ -189,6 +189,17 @@
}
index_goal->force_fire = Pressed(2, 12);
+ const bool index_up = Pressed(2, 9);
+ const bool index_down = Pressed(2, 7);
+ index_goal->override_index = index_up || index_down;
+ if (index_up && index_down) {
+ index_goal->index_voltage = 0.0;
+ } else if (index_up) {
+ index_goal->index_voltage = 12.0;
+ } else if (index_down) {
+ index_goal->index_voltage = -12.0;
+ }
+
index_goal.Send();
shooter_goal.Send();
}