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/constants.cc b/y2023/constants.cc
index 123bf2b..1d6564e 100644
--- a/y2023/constants.cc
+++ b/y2023/constants.cc
@@ -40,24 +40,12 @@
   arm_distal->zeroing.moving_buffer_size = 20;
   arm_distal->zeroing.allowable_encoder_error = 0.9;
 
-  ::frc971::control_loops::StaticZeroingSingleDOFProfiledSubsystemParams<
-      ::frc971::zeroing::PotAndAbsoluteEncoderZeroingEstimator>
-      *const roll_joint_params = &roll_joint->subsystem_params;
-
-  roll_joint_params->zeroing_voltage = 3.0;
-  roll_joint_params->operating_voltage = 12.0;
-  roll_joint_params->zeroing_profile_params = {0.5, 3.0};
-  roll_joint_params->default_profile_params = {6.0, 30.0};
-  roll_joint_params->range = Values::kRollJointRange();
-  roll_joint_params->make_integral_loop =
-      control_loops::superstructure::roll::MakeIntegralRollLoop;
-  roll_joint_params->zeroing_constants.average_filter_size =
-      Values::kZeroingSampleSize;
-  roll_joint_params->zeroing_constants.one_revolution_distance =
-      M_PI * 2.0 * constants::Values::kRollJointEncoderRatio();
-  roll_joint_params->zeroing_constants.zeroing_threshold = 0.0005;
-  roll_joint_params->zeroing_constants.moving_buffer_size = 20;
-  roll_joint_params->zeroing_constants.allowable_encoder_error = 0.9;
+  roll_joint->zeroing.average_filter_size = Values::kZeroingSampleSize;
+  roll_joint->zeroing.one_revolution_distance =
+      M_PI * 2.0 * constants::Values::kDistalEncoderRatio();
+  roll_joint->zeroing.zeroing_threshold = 0.0005;
+  roll_joint->zeroing.moving_buffer_size = 20;
+  roll_joint->zeroing.allowable_encoder_error = 0.9;
 
   wrist->zeroing_voltage = 3.0;
   wrist->operating_voltage = 12.0;
@@ -83,7 +71,7 @@
       arm_distal->zeroing.measured_absolute_position = 0.0;
       arm_distal->potentiometer_offset = 0.0;
 
-      roll_joint_params->zeroing_constants.measured_absolute_position = 0.0;
+      roll_joint->zeroing.measured_absolute_position = 0.0;
       roll_joint->potentiometer_offset = 0.0;
 
       wrist->zeroing_constants.measured_absolute_position = 0.0;
@@ -97,7 +85,7 @@
       arm_distal->zeroing.measured_absolute_position = 0.0;
       arm_distal->potentiometer_offset = 0.0;
 
-      roll_joint_params->zeroing_constants.measured_absolute_position = 0.0;
+      roll_joint->zeroing.measured_absolute_position = 0.0;
       roll_joint->potentiometer_offset = 0.0;
 
       wrist->zeroing_constants.measured_absolute_position = 0.0;
@@ -111,7 +99,7 @@
       arm_distal->zeroing.measured_absolute_position = 0.0;
       arm_distal->potentiometer_offset = 0.0;
 
-      roll_joint_params->zeroing_constants.measured_absolute_position = 0.0;
+      roll_joint->zeroing.measured_absolute_position = 0.0;
       roll_joint->potentiometer_offset = 0.0;
 
       wrist->zeroing_constants.measured_absolute_position = 0.0;
@@ -125,7 +113,7 @@
       arm_distal->zeroing.measured_absolute_position = 0.0;
       arm_distal->potentiometer_offset = 0.0;
 
-      roll_joint_params->zeroing_constants.measured_absolute_position = 0.0;
+      roll_joint->zeroing.measured_absolute_position = 0.0;
       roll_joint->potentiometer_offset = 0.0;
 
       wrist->zeroing_constants.measured_absolute_position = 0.0;