Prior to the pool test, we replaced the bottom camera with poker chips of equivalent weight to prevent the camera from potentially being damaged. We also added quite a bit of tape around that end today as a temporary measure to prevent too much water from getting into the bottom camera capsule and changing the robot’s buoyancy.

We tested the reinforced fiber optic tether, which worked with the robot submerged and had speeds of 100 MB/s. The fiber optic tether itself sunk, unlike the ethernet tether.

We spent the rest of the time testing controls. We switched to using provided derivatives for position PID; this means that instead of computing the derivative based on the change in position error, the velocity provided by state is used as the derivative. This smoothed the control efforts output by position PID and reduced the robot’s jitter. This necessitated retuning position PID, which we did, but some more tuning is required.

We also discovered that task planning’s tolerances for how close the robot must be to its desired position for move_to_pos_local to exit were very high. For example, when moving forward, task planning was commanding the robot to change its Z and Y positions, even though only X should have changed. It would also command the robot to move to the next setpoint, even though it hadn’t fully reached its current setpoint. This is part of the reason why the robot oscillates in axes it wasn’t supposed to oscillate in.

During our testing, we found that the robot still slowly yaws when holding position, as the yaw reported by the IMU does not change. Additionally, we did not observe any water in the main capsule or bottom camera capsule at any point during the pool test. After the pool test, we took the main capsule off and it was completely dry on the inside; we also didn’t see any water in the bottom camera capsule.


  • No water in the bottom camera capsule or main capsule.
  • Fiber optic tether works underwater.
  • Control efforts are smoother as a result of switching to provided derivatives.
  • Task planning’s tolerances are much lower, which should help with more accurate movement.


  • IMU’s yaw does not change when the robot rotates slowly.
  • Position PID needs to be tuned some more.
  • Controls still needs more testing to reduce oscillations in non-movement axes.