Since my last update, I've been ponding how best to test adding capacitors to the ESC control board. I don't want to just add and hope (relying on a vague sect of the decoupling religion), I want to be able to test. I also didn't want to spend my entire day at the pool debugging things, especially when I'd have to drag the ROV out to do various bits of soldering. However, if I tried the failing scenario in air, the motors don't cut out because they don't need a much current when running in the air. After some bench experiments I discovered that if I turned one motor full on, full off, and then full on again, I could make the controller reset.
So, with a testable environment I added some *big* capacitors - two 2,220uF caps.
These were soldered across the main motor power supply on the controller board. Once added, I the ROV passed the on/off/on test. So success!
Next I wanted to return to the power ramp problem. During my last attempt to debug the PIDs I added a quick-and-dirty power ramp to avoid turning sudden power spikes. This worked okay, but I actually have a "proper" ramp built into the PWM controllers (written in fast and smooth C++ code) and it made more sense to use this. So I ditched the old power ramp and am now using the PWM version ... and it's *so* much smoother and better. I can ramp up 4 motors to max power simultaneously without overloading the system, which I could never do before.
Back in the pool, and the PIDs now work flawlessly, even if I start tugging the ROV around. Before the ESCs would overload, but not anymore.
The video above (portrait - sorry) shows the balance mode being enabled. The laptop screens show the artificial horizon adjusting, then the camera pans to the ROV in the pool. The ROV is not current balanced and does not sit neutrally in the pool. With balance enabled the motors adjust its position so that it does. My various attempts to dislodge this are all corrected quickly by the software.