Today we completed the code to accomplish the barrel roll part of the gate task.

Here’s the working sequence:

  1. Submerge (at least 0.5 meters is required, although 0.7 meters gives more breathing room)
  2. Roll at full power for 2.25 seconds
  3. Stop (zero power) for 5 seconds (the robot stays about 15 degrees tilted during this period)
  4. Reset pose to zero
  5. Repeat steps 2-4
  6. Sleep for 3 seconds to stabilize (the robot moves a little in X and Y during this time since position control is not enabled)
  7. Return to original depth (the same as when it submerged)
    By this point, the robot is a little tilted but thinks its orientation is zero (since the pose was reset). However, the IMU reports a more accurate orientation.
  8. Correct for roll and pitch tilt using the IMU’s orientation.

The robot drifts a little in X and Y throughout this process. Roughly, a 2m x 2m area around the robot needs to be clear to avoid running into a wall.

With this sequence, the robot can consistently complete two barrel rolls, stabilize itself, and is ready to continue with further tasks.

With the barrel roll complete, we begun writing code to detect the buoy, combining HSV filtering with contour matching. This is still a work in progress.

We captured some footage and bag files for the technical report, video, and offline testing.