This summer, I was involved in the Verifiably Robust Sonar Perception research project. This project involved the control and perception of a Unmanned Underwater Vehicle (UUV). The task of the UUV is to follow alongside a pipeline on the seafloor. We are concerned about the safety of this vehicle and specifically on the verification of safety of this UUV. Because verification of a large and complex system such as the UUV is difficult, we focus on verifying individual parts of the UUV. In particular, our group aimed to verify the safety of the perception system of the UUV. The UUV perceives its environment through a system of sensors and sonar. We model and test the UUV in a simulator environment.
My work in particular was as a simulator engineer. One of the key goals of our project was to be able to robustly estimate the distance along the seafloor, or range, from the UUV to the pipeline. Our method to do so involved processing sonar images with a neural network to detect where in the image the pipe is and combining that information with pose information of the UUV to make a geometric estimate of the range. My job as the simulator engineer was to find a way to gather the sonar images and pose information to train and test our range estimation system. Because our simulator was built using ROS and Gazebo, I was able to learn a lot about how that software works. Additionally, one of the key problems was that the images gathered from the simulator were too clean and thus unrealistic. To solve this problem, I artificially added noise to the images within the simulator. This taught me how to add noise in a machine learning context, as well as what constitutes realistic noise in a sonar context. Another thing I learned was how to effectively read and navigate through pre-existing code in a large repository.
Overall, this research experience taught me a lot about general software engineering skills and practices. It also taught me how to work in a collaborative environment with other engineers and researchers. Because my academic interests lie in machine learning and computer vision, I also learned about how to deploy a perception system and what makes a neural network safe or robust and the tools needed to verify this. This research experience has given me a foundation for both software tools such as ROS and neural networks to better prepare me for upcoming coursework that involve these topics.