Hi I wanted to share some thoughts on what we have been doing at OpenROV regarding location/navigation. As you observed radio waves (RC or GPS) are absorbed in the UW environment. One type of signal does carry well - acoustic/ultrasonic. We have been working on a system with ultrasonic transducers that can exchange pings with surface vessel/buoy and an ROV to gauge distance based on speed of sound in water see: https://forum.openrov.com/t/acoustic-location-system/1295 for more detail. I had proposed two related GSoC projects but we did not get approval this year. Maybe some of the material/ideas in those projects could be of interest for this one (see text ant end of this post for proposals).
In general I think a nice approach for navigation would be to have a multi-faceted system that keeps location/motion info based on dead reckoning with continuous updates when new fixes are available from other sources (depth, IMU (gyro, accelerometers, compass), acoustic, visual, etc.). From what I have seen with some of the self-driving car projects, this would be done on a statistical basis, since each source of fix info has uncertainty associated with it. There should be some existing code out there that can help with implementation (this is an area many grad students have done thesis work on). ROS contains some of this as well.
The core software system can be put together around the IMU without waiting on technology under development. Later this summer when we have acoustic pingers available that can be integrated in. If this is of interest, we can have a more in depth discussion.
Jim Trezzo
jim@openrov.com or jtrezzo@trezco.com
Project: ROV Location and Navigation Software
Brief explanation: Location and tracking of objects/vessels in the underwater environment is a challenge, but of high importance particularly since visibility is limited. For Remote Operated Vehicles (ROVs) as well as Autonomous ones (AUVs) location and velocity in a three dimensional underwater world is key to successfully navigating a mission or exploration. A combination of sensor data along with advanced algorithms for navigation will be used in this project. Our ROV has onboard an Inertial Measurement Unit
(IMU with a gyro, accelerometers and a compass) along with a temperature and pressure sensors (depth), a video camera and Ethernet connectivity via a tether to the surface. In addition an acoustic location system is being developed to compliment these systems.
This projects goal is an integrated system, which can combine data from these systems to produce reliable positioning information from the ROV to support vessel operation and navigation.
Expected results: A first implementation of a working system for location and navigation is the goal. This may be an adaptation and integration of existing open-source frameworks and software or original code. It will be a challenge to complete development and testing of this system in the underwater environment. We expect this open-source project to be well documented and follow best software practices (unit testing, etc.), since the ROV community will continue to refine and evolve this code as an ongoing effort even after the Google Summer of Code project concludes.
Knowledge Prerequisite: Understanding of the basics of engineering physics in three-dimensional space along with proficiency in linear algebra. Additionally since we intend to implement this system using a combination of laptop and embedded computing devices, a background in computer programming using C family languages will be needed.
Mentor: Jim Trezzo jim@openrov.com
Project: OpenROV ROS Integration
Brief explanation: The Robot Operating System (ROS) is a popular framework for writing robot software based on a set of modular tools and libraries that work on a wide variety of robotic platforms. It is very popular in the robotics research community and is being ported to popular embedded systems platforms such as the BeagleBone Black.
The core software for OpenROV is an efficient modular system based on Node.js which uses JSON messages over socket.io events to implement a distributed extensible runtime for the ROV.
By integrating ROS with OpenROV, a full robotics tool set along with higher level libraries becomes available to the OpenROV community. This should greatly help with navigation, localization and computer vision systems development among other areas of interest to the underwater robotics research community.
Expected results: Initially a loosely coupled integration of OpenROV event stream (both sensor data and command and control) into ROS running on a laptop will be developed. The key value proposition of ROS and OpenROV will be discovered and demonstrated. As time permits, a deeper distributed integration with the OpenROV software system can be developed. Some of ROS will be running on the BeagleBone Black inside of the ROV on the same Linux OS that the core Node.js application runs on.
Knowledge Prerequisite: A strong general background in computer programming along with experience with software for physical systems and event based programming. Any exposure to robotics systems or ROS in particular is a big plus. I would expect the results of this project will be of high interest to a wide set of folks, so strong written communications skills will be needed to document what was learned along with a basic tutorial for others to follow.
Mentor: Jim Trezzo jim@openrov.com