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/wpilib_interface.cc b/y2023/wpilib_interface.cc
index da2bebb..fa1f09e 100644
--- a/y2023/wpilib_interface.cc
+++ b/y2023/wpilib_interface.cc
@@ -184,11 +184,11 @@
           frc971::PotAndAbsolutePosition::Pack(*builder.fbb(), &proximal);
       flatbuffers::Offset<frc971::PotAndAbsolutePosition> distal_offset =
           frc971::PotAndAbsolutePosition::Pack(*builder.fbb(), &distal);
-      flatbuffers::Offset<superstructure::ArmPosition> arm_offset =
-          superstructure::CreateArmPosition(*builder.fbb(), proximal_offset,
-                                            distal_offset);
       flatbuffers::Offset<frc971::PotAndAbsolutePosition> roll_joint_offset =
           frc971::PotAndAbsolutePosition::Pack(*builder.fbb(), &roll_joint);
+      flatbuffers::Offset<superstructure::ArmPosition> arm_offset =
+          superstructure::CreateArmPosition(*builder.fbb(), proximal_offset,
+                                            distal_offset, roll_joint_offset);
       flatbuffers::Offset<frc971::AbsolutePosition> wrist_offset =
           frc971::AbsolutePosition::Pack(*builder.fbb(), &wrist);
 
@@ -196,7 +196,6 @@
           builder.MakeBuilder<superstructure::Position>();
 
       position_builder.add_arm(arm_offset);
-      position_builder.add_roll_joint(roll_joint_offset);
       position_builder.add_wrist(wrist_offset);
       builder.CheckOk(builder.Send(position_builder.Finish()));
     }