BeaglePilot 2: Making underwater drones this time

With the support of two colleagues (Alejandro and Iñigo) i finally decided to mentor something. Here’s an idea for potential students. If you like it pick it and make a proposal. Hurry up though ;):

BeaglePilot 2.0: Making underwater drones

In a nutshell, the idea is to create an underwater vehicle (submarine) for the APM autopilot using the OpenROV code. The APM code should be extended and create a new kind of vehicle (e.g.: APMSubmarine). Students will have to understand and port the following code the APM infrestructure:

The expected deliverable is a set of commits that augment the current APM autopilot code and create a new vehicle for underwater drones. I’ve added information about us on the wiki.

If someone gets selected for this matter, I’d be happy to ship him/her an Erle-Brain so that she/he can push the GSOC with ready-to-code hardware.

It would be very interesting a proposal that include ROS abstractions because Erle-Brain runs ROS Indigo

Hi!

I’m Rohith Madhavan, a third year undergraduate student pursuing Electronics Engineering at VIT University, India. I use GNU/Linux as my primary operating system and am well versed with Debian-based and Arch-based distros. My technical skills include C, C++, Python and Shell (bash) scripting.

I am also a research team member at the UAV Lab at my university where we primarily work on quadcopters, among other innovative projects. The quadcopters designed by our team use APM/Pixhawk as their brain and were specially designed to maximize the flight time as well as the payload carrying capacity.

I am interested in taking this up, ie ‘Making an Underwater Drone’, as my Summer of Code project as it is something that I always wanted to do. I’m familiar with the OpenROV project, although I’ve never got the opportunity to get my hands on it :slight_smile:

I will have a look at the code base and fill out the application shortly…

Hi Alejandro!

Adding ROS to the project will be great! I just found that Victor has made a Snappy Ubuntu Core image with ROS Indigo and APM pre-installed, although it is in Alpha stage http://forum.erlerobotics.com/t/snappy-ubuntu-core-alpha-image-available/84. Is the plan to use a Snappy Ubuntu image for the project? I have used ROS previously for other projects but have not used it on Snappy…

Hi Rohith,

Ubuntu Snappy Core is like an Ubuntu distribution, but you can install applications with an web interface and it has a lot stuff around the cloud. We have been working during last months to run APM (copter and plane) and ROS at the beginning. Don’t worry about Ubuntu Snappy because ROS works in the same way as others distributions.

Could be a good idea to create a “snap” that it contains APMSubmarine.

Hi Alejandro,

I have used Snappy Ubuntu Core on my Raspberry Pi 2 but didn’t use it much because of its small application base and incompatibility with apt-get. That is why I made an Ubuntu MATE 15.04 image for the Raspberry Pi 2. I was initially wondering if such an image could be used on the BeagleBone Black so that ROS for Ubuntu armhf can be installed and configured. I was going through the Erle Robotics forum now and saw that you guys have done a lot of work in integrating ROS with Snappy. I will go through the Snappy documentation and try to understand how it works…

Also, am I right to assume that the APM and ROS will not be able to interface with the hardware simultaneously due to potential conflicts. Will have to look into the same further…

Rohith,

We hacked apt-get in Snappy so you can use it in our images.
Regarding ROS and APM conflicting, it’s just a matter of busses and hardware usage. We generally interface with APM through ROS using a bridge (e.g. mavros).

Taking up this project will be fun and if the OpenROV guys decide to give their support they might even send you a vehicle ;).

Victor,

I was doing some research on the feasibility of the project and came across the following -

  1. The wireless range underwater using standard RC will be approximately 6-8 feet depth.
  2. OpenROV uses a tether for both communication and power.
  3. GPS does not work well underwater.

What are your thoughts on the above? Is is better to go for a short range but wireless vehicle (like the other APM vehicles) or use a tether to increase range?

As far as the GPS is concerned, I guess it is possible to use it initially when it is above water to get the location and then use the IMU to estimate the position underwater. Alternatively, the GPS may be mounted on a float above the vehicle.

I was doing some research on the feasibility of the project and came across the following -

  1. The wireless range underwater using standard RC will be approximately 6-8 feet depth.
  2. OpenROV uses a tether for both communication and power.

That’s correct.

  1. GPS does not work well underwater.

I’d expect so.

What are your thoughts on the above? Is is better to go for a short range but wireless vehicle (like the other APM vehicles) or use a tether to increase range?

I’d love to see this tested but i have my concerns regarding the range we can achieve. There’re some papers that cover this topic, i’d recommend doing a bit of reading. Having said that, we definitely want to go for the tethered path at the very beginning.

As far as the GPS is concerned, I guess it is possible to use it initially when it is above water to get the location and then use the IMU to estimate the position underwater. Alternatively, the GPS may be mounted on a float above the vehicle.

Doing odometry based on the IMU readings is a bad idea. The cumulated error will make our estimations drift quite quickly.
For now you can forget about the positioning. That’s probably an advanced that we won’t reach within the GSOC frame.

Cheers,

Thanks for the feedback Victor.

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

Hi Jim!

Thanks for sharing your experiences. The inputs were insightful and valuable.

The solution to the navigation problem can be to use a Doppler Velocity Log (DVL), combined with data from other sensors on board by means of a Kalman Filter. As you mentioned, acoustic sensors are ideal for underwater scenarios and the DVL, being acoustic and also very accurate, is a possible choice. However, having said that, I do feel that the cost and size factor of the DVL somewhat negate the advantages that it offers and make it less suitable for a small and low cost platform like the OpenROV. Also, I don’t know whether an open source DVL exists…

An alternative to the DVL would be to design an ultrasonic transducer with a piezoelectric element, preferably operating at its resonant frequency to maximize the efficiency of conversion from electrical to mechanical form.

This project sounds very interesting and although it is out of scope for this particular GSoC project due to lack of time, it is certainly something that can worked upon later to further improve it. The planned integration of the APM autopilot with the BeagleBone Black for an underwater vehicle using a ROS bridge is definitely something that would benefit the OpenROV development, especially due to the addition of autopilot capabilities.

Your thoughts/feedback on the above would be appreciated.

Rohith

Are we still looking to get this through ? I see a lot of scope here.