Add throw and override modes for the Arm
This lets us throw boxes in teleop, and also get unstuck from under or
over the scale
Change-Id: Ia71824d8ae5801795d7ea21ce1becdfc1d2b55ee
diff --git a/y2018/joystick_reader.cc b/y2018/joystick_reader.cc
index 61e3d9f..173e6ef 100644
--- a/y2018/joystick_reader.cc
+++ b/y2018/joystick_reader.cc
@@ -66,6 +66,9 @@
const ButtonLocation kArmAboveHang(3, 15);
const ButtonLocation kArmBelowHang(3, 16);
+const ButtonLocation kEmergencyUp(3, 5);
+const ButtonLocation kEmergencyDown(3, 6);
+
const ButtonLocation kWinch(4, 2);
const ButtonLocation kArmNeutral(3, 8);
@@ -297,6 +300,16 @@
arm_goal_position_ = arm::BelowHangIndex();
}
+ if (data.IsPressed(kEmergencyDown)) {
+ arm_goal_position_ = arm::NeutralIndex();
+ new_superstructure_goal->trajectory_override = true;
+ } else if (data.IsPressed(kEmergencyUp)) {
+ arm_goal_position_ = arm::UpIndex();
+ new_superstructure_goal->trajectory_override = true;
+ } else {
+ new_superstructure_goal->trajectory_override = false;
+ }
+
new_superstructure_goal->deploy_fork =
data.IsPressed(kArmAboveHang) && data.IsPressed(kClawOpen);
@@ -314,9 +327,16 @@
new_superstructure_goal->hook_release = data.IsPressed(kArmBelowHang);
new_superstructure_goal->arm_goal_position = arm_goal_position_;
+ if (data.IsPressed(kArmFrontSwitch) || data.IsPressed(kArmBackSwitch)) {
+ new_superstructure_goal->open_threshold = 0.35;
+ } else {
+ new_superstructure_goal->open_threshold = 0.0;
+ }
if ((data.IsPressed(kClawOpen) && data.IsPressed(kDriverClawOpen)) ||
- data.PosEdge(kArmPickupBoxFromIntake)) {
+ data.PosEdge(kArmPickupBoxFromIntake) ||
+ (data.IsPressed(kClawOpen) &&
+ (data.IsPressed(kArmFrontSwitch) || data.IsPressed(kArmBackSwitch)))) {
new_superstructure_goal->open_claw = true;
} else {
new_superstructure_goal->open_claw = false;