Once the leak test was completed and electronics were integrated, we proceeded to do bench tests in the lab to ensure everything was working well before we went to the pool. Otherwise, most of us would just be staring at the AUV while in the pool as it is quite difficult to debug and fix code efficiently at pool side. With that in mind, we set up our networking with our SBC (an Odroid) via SSH and proceeded to test the communications between the various sensors and boards. Only when all this was completed were we ready to proceed for the pool test.
Once at the pool, we left the AUV tethered by ethernet inside the pool with one of our swimmers keeping a close supervision on it. Although we had completed our leak tests successfully previously, we were very cautious as many of our expensive electronics were on-board and we could not afford even a slight leak that would cause our electronics to short circuit and damage.
Figure 1: Hornet AUV underwater
With this in mind, we first attempted to calibrate our PIDs for the X and Y axis thrusters with the help of opticalflow. While testing, we observed that the PIDs were going out of whack. We noticed several problems. Firstly, our opticalflow processing was lagging the actual camera feed by up to 3 seconds after staying in the pool for some time. We suspected that this was due to the queue of images that built up over time in the buffer of the odroid, as we did not face this problem while testing on our laptops. Secondly, there were air and water bubbles forming on our bottom facing camera which caused us a great shock as we thought that water had seeped into the camera. However, it was simply that as our AUV surfaced, air bubbles were trapped on the acrylic screen of the bottom facing camera and blocked our view of the pool. Simply wiping the acrylic screen resolved the issue temporarily but we needed to think of a longer-term solution for future pool tests.
Figure 2: Hornet Software User Interface
To enable faster debugging of issues, we took snapshots of the data that was streaming into the odroid at poolside so that we could simulate the conditions in our laptops to effectively test the algorithms that we had created without being physically present at the pool.