Add roll joint to superstructure and arm UI

Arm UI changes:
- Update robot dimensions
- Support visualizing roll joint
- Add roll joint collision detection

Superstructure changes:
- Adding roll joint feedback loop and zeroing estimator

Signed-off-by: milind-u <milind.upadhyay@gmail.com>
Change-Id: I422e343890248940bba98ba3cabac94e68723a3e
diff --git a/y2023/control_loops/superstructure/superstructure_status.fbs b/y2023/control_loops/superstructure/superstructure_status.fbs
index 9b21cc3..db86687 100644
--- a/y2023/control_loops/superstructure/superstructure_status.fbs
+++ b/y2023/control_loops/superstructure/superstructure_status.fbs
@@ -16,6 +16,7 @@
   // State of the estimators.
   proximal_estimator_state:frc971.PotAndAbsoluteEncoderEstimatorState (id: 0);
   distal_estimator_state:frc971.PotAndAbsoluteEncoderEstimatorState (id: 1);
+  roll_joint_estimator_state:frc971.PotAndAbsoluteEncoderEstimatorState (id: 18);
 
   // The node we are currently going to.
   current_node:uint32 (id: 2);
@@ -24,19 +25,24 @@
   // Goal position and velocity (radians)
   goal_theta0:float (id: 4);
   goal_theta1:float (id: 5);
+  goal_theta2:float (id: 19);
   goal_omega0:float (id: 6);
   goal_omega1:float (id: 7);
+  goal_omega2:float (id: 20);
 
   // Current position and velocity (radians)
   theta0:float (id: 8);
   theta1:float (id: 9);
+  theta2:float (id: 21);
 
   omega0:float (id: 10);
   omega1:float (id: 11);
+  omega2:float (id: 22);
 
   // Estimated voltage error for the two joints.
   voltage_error0:float (id: 12);
   voltage_error1:float (id: 13);
+  voltage_error2:float (id: 23);
 
   // True if we are zeroed.
   zeroed:bool (id: 14);
@@ -60,9 +66,7 @@
 
   arm:ArmStatus (id: 2);
 
-  roll_joint:frc971.PotAndAbsoluteEncoderEstimatorState (id: 3);
-
-  wrist:frc971.control_loops.AbsoluteEncoderProfiledJointStatus (id: 4);
+  wrist:frc971.control_loops.AbsoluteEncoderProfiledJointStatus (id: 3);
 }
 
 root_type Status;