worked on auto mode
diff --git a/frc971/autonomous/auto.cc b/frc971/autonomous/auto.cc
index 5b64898..1f3496d 100644
--- a/frc971/autonomous/auto.cc
+++ b/frc971/autonomous/auto.cc
@@ -20,10 +20,6 @@
 
 static double left_initial_position, right_initial_position;
 
-// Multiply meters by this to get a drivetrain goal distance.
-static const double kDrivetrainCorrectionFactor =
-    ((32.0 / 44.0) / (64.0 / 24.0 * 19.0 / 50.0));
-
 bool ShouldExitAuto() {
   ::frc971::autonomous::autonomous.FetchLatest();
   bool ans = !::frc971::autonomous::autonomous->run_auto;
@@ -183,19 +179,17 @@
       .Send();
 }
 
-void SetDriveGoal(double yoffset) {
+void SetDriveGoal(double yoffset, double maximum_velocity = 1.5) {
   LOG(INFO, "Going to move %f\n", yoffset);
 
   // Measured conversion to get the distance right.
-  yoffset *= kDrivetrainCorrectionFactor;
-  LOG(INFO, "Going to move an adjusted %f\n", yoffset);
   ::aos::util::TrapezoidProfile profile(::aos::time::Time::InMS(10));
   ::Eigen::Matrix<double, 2, 1> driveTrainState;
   const double goal_velocity = 0.0;
   const double epsilon = 0.01;
 
   profile.set_maximum_acceleration(2.0);
-  profile.set_maximum_velocity(2.5);
+  profile.set_maximum_velocity(maximum_velocity);
  
   while (true) {
     ::aos::time::PhasedLoop10MS(5000);      // wait until next 10ms tick
@@ -224,7 +218,6 @@
 // Drives forward while we can pick up discs up to max_distance (in meters).
 void DriveForwardPickUp(double max_distance, double wrist_angle) {
   LOG(INFO, "going to pick up at a max distance of %f\n", max_distance);
-  max_distance *= kDrivetrainCorrectionFactor;
 
   static const ::aos::time::Time kPeriod = ::aos::time::Time::InMS(10);
   ::aos::util::TrapezoidProfile profile(kPeriod);
@@ -237,7 +230,7 @@
   profile.set_maximum_velocity(0.6);
 
   bool driving_back = false;
-  const double kDestination = -0.20 * kDrivetrainCorrectionFactor;
+  const double kDestination = -0.20;
 
   while (true) {
     ::aos::time::PhasedLoop10MS(5000);      // wait until next 10ms tick
@@ -326,6 +319,7 @@
 void HandleAuto() {
   LOG(INFO, "Handling auto mode\n");
   double WRIST_UP;
+  ::aos::time::SleepFor(::aos::time::Time::InSeconds(20));
   
   ::aos::robot_state.FetchLatest();
   if (!::aos::robot_state.get() ||
@@ -336,8 +330,8 @@
   WRIST_UP -= 0.4;
   LOG(INFO, "Got constants\n");
   const double WRIST_DOWN = -0.633;
-  const double ANGLE_ONE = 0.5101;
-  //const double ANGLE_ONE = 0.70;
+  const double ANGLE_ONE = 0.5434;
+  const double ANGLE_TWO = 0.685;
 
   control_loops::drivetrain.position.FetchLatest();
   while (!control_loops::drivetrain.position.get()) {
@@ -354,8 +348,7 @@
 
   SetWristGoal(WRIST_UP);    // wrist must calibrate itself on power-up
   SetAngle_AdjustGoal(ANGLE_ONE);
-  SetShooterVelocity(410.0);
-  //SetShooterVelocity(131);
+  SetShooterVelocity(400.0);
   WaitForIndexReset();
   if (ShouldExitAuto()) return;
   PreloadIndex();      // spin to top and put 1 disc into loader
@@ -371,35 +364,66 @@
 
   StartIndex();        // take in up to 4 discs
 
-  const double kDistanceToCenterMeters = 3.11023;
-  const double kMaxPickupDistance = 2.5;
-  const double kTurnToCenterDegrees = 78.2;
+  if (false) {
+    const double kDistanceToCenterMeters = 3.11023;
+    const double kMaxPickupDistance = 2.5;
+    const double kTurnToCenterDegrees = 78.2;
 
-  // Drive back to the center line.
-  SetDriveGoal(-kDistanceToCenterMeters);
-  if (ShouldExitAuto()) return;
+    // Drive back to the center line.
+    SetDriveGoal(-kDistanceToCenterMeters);
+    if (ShouldExitAuto()) return;
 
-  SetWristGoal(WRIST_DOWN);
-  // Turn towards the center.
-  DriveSpin(kTurnToCenterDegrees * M_PI / 180.0);
-  if (ShouldExitAuto()) return;
-  WaitForWrist();
-  if (ShouldExitAuto()) return;
+    SetWristGoal(WRIST_DOWN);
+    // Turn towards the center.
+    DriveSpin(kTurnToCenterDegrees * M_PI / 180.0);
+    if (ShouldExitAuto()) return;
+    WaitForWrist();
+    if (ShouldExitAuto()) return;
 
-  // Pick up at most 4 discs and drive at most kMaxPickupDistance.
-  DriveForwardPickUp(kMaxPickupDistance, WRIST_UP);
+    // Pick up at most 4 discs and drive at most kMaxPickupDistance.
+    DriveForwardPickUp(kMaxPickupDistance, WRIST_UP);
 
-  SetWristGoal(WRIST_UP);
-  DriveSpin(-kTurnToCenterDegrees * M_PI / 180.0);
-  if (ShouldExitAuto()) return;
-  // Drive back to where we were.
-  SetDriveGoal(kDistanceToCenterMeters);
-  if (ShouldExitAuto()) return;
+    SetWristGoal(WRIST_UP);
+    DriveSpin(-kTurnToCenterDegrees * M_PI / 180.0);
+    if (ShouldExitAuto()) return;
+    // Drive back to where we were.
+    SetDriveGoal(kDistanceToCenterMeters);
+    if (ShouldExitAuto()) return;
 
-  return;
+    return;
 
-  ShootNDiscs(4);
-  if (ShouldExitAuto()) return;
+    ShootNDiscs(4);
+    if (ShouldExitAuto()) return;
+  } else {
+    SetWristGoal(WRIST_DOWN);
+    SetAngle_AdjustGoal(ANGLE_TWO);
+    SetShooterVelocity(375.0);
+    StartIndex();				// take in up to 4 discs
+
+    if (ShouldExitAuto()) return;
+    WaitForWrist();			// wrist must be down before moving
+    ::aos::time::SleepFor(::aos::time::Time::InSeconds(0.25));
+
+    if (ShouldExitAuto()) return; 
+    WaitForIndex();			// ready to pick up discs
+
+    static const double kDriveDistance = 3.2;
+    static const double kFirstDrive = 0.3;
+    SetDriveGoal(kFirstDrive, 0.6);
+    ::aos::time::SleepFor(::aos::time::Time::InSeconds(0.25));
+    SetDriveGoal(kDriveDistance - kFirstDrive, 0.6);
+    if (ShouldExitAuto()) return;
+
+    PreloadIndex();
+    ::aos::time::SleepFor(::aos::time::Time::InSeconds(0.4));
+    SetDriveGoal(-1.3);
+
+    if (ShouldExitAuto()) return;
+    WaitForAngle_Adjust();
+    if (ShouldExitAuto()) return;
+    ShootIndex();	
+    if (ShouldExitAuto()) return;
+  }
 }
 
 }  // namespace autonomous