When I do my 5th ROV I will incorporate the following lessons learned.
* Streaming good video over CAT5 with a pi was always a sticky point. I ended up using Gstreamer. It seems like I tried so many things and it always lagged. I was able to get a video stream after experimenting.
* The next ROV will have 5 thrusters and an on-board IMU that can actively level and control. When you have such a small craft that is neutrally buoyant any forces want to roll it, or cause it pitch. An active system is well within reach.
* Interacing servos to a pi requires that do some magic. I would use an offboard chip to generate the servo pulses for the motor controllers.
* I ran AFRO ESC's with modified software on them. They worked excellent. You need ESC's that are capable of reverse.
* I was always a little timid sticking LIPO batteries into a sealed container while running them. For batteries I will switch to LiFePO4.
* The tether is always difficult. There are some expensive neutrally buoyant tethers out there, I am not sure how to solve this one yet.
Here are some explanations of the controls while operating in the bathroom.
Here is the first dive.
Here is an example of closed loop control using openCV.
With respects to the IMU and stuff I think that you can use a 9 DOF for full 3D orientation because the rotation in Z axis drifts (like the others angles) because of the error integration in time, so with a 9 does you can use a complementary o Kalman filter to keep data stable and then applied a PID or something.