tuned and redid the capping on the claw to prioritize separation error
diff --git a/frc971/control_loops/coerce_goal.cc b/frc971/control_loops/coerce_goal.cc
index b32b590..de6b757 100644
--- a/frc971/control_loops/coerce_goal.cc
+++ b/frc971/control_loops/coerce_goal.cc
@@ -7,11 +7,13 @@
 namespace frc971 {
 namespace control_loops {
 
-Eigen::Matrix<double, 2, 1> CoerceGoal(aos::controls::HPolytope<2> &region,
-                                       const Eigen::Matrix<double, 1, 2> &K,
-                                       double w,
-                                       const Eigen::Matrix<double, 2, 1> &R) {
+Eigen::Matrix<double, 2, 1> DoCoerceGoal(const aos::controls::HPolytope<2> &region,
+                                         const Eigen::Matrix<double, 1, 2> &K,
+                                         double w,
+                                         const Eigen::Matrix<double, 2, 1> &R,
+                                         bool *is_inside) {
   if (region.IsInside(R)) {
+    if (is_inside) *is_inside = true;
     return R;
   }
   Eigen::Matrix<double, 2, 1> parallel_vector;
@@ -36,6 +38,7 @@
         min_distance_sqr = length;
       }
     }
+    if (is_inside) *is_inside = true;
     return closest_point;
   } else {
     Eigen::Matrix<double, 2, Eigen::Dynamic> region_vertices =
@@ -50,6 +53,7 @@
         min_distance = length;
       }
     }
+    if (is_inside) *is_inside = false;
     return (Eigen::Matrix<double, 2, 1>() << region_vertices(0, closest_i),
             region_vertices(1, closest_i)).finished();
   }