Google Summer of Code 2015 Application


The 2015 application did not make the cut this year. Thanks for everyone that helped. We will take the feedback and role it in to an application for 2016.

One of the nice things about being Open Source is that we get to participate in programs such as Google’s summer of code.

  1. What is Google Summer of Code?

Google Summer of Code is a program that offers student developers stipends to write code for various open source projects. We work with many open source, free software, and technology-related groups to identify and fund projects over a three month period. Since its inception in 2005, the program has brought together over 8,500 successful student participants from over countries and over 8,000 mentors from 109 countries worldwide to produce over 55 million lines of code. The program, which kicked off in 2005, is now in its eleventh year. If you are feeling nostalgic or are interested in learning more about the projects we have worked with in the past, check out the 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, and 2014 program pages.

The applications to mentor programmers for the summer open up Feb 9th. We have an crazy cool platform to develop on. If anyone has ideas on OpenROV related software projects that might be worth exploring. This is the place to discuss!

Current list of proposed projects:

Formal project propsals should be in the following format:


Brief explanation:

Expected results:

Knowledge Prerequisite:


When adding an idea to this section, please try to include the following data:
if the application is not widely known, a description of what it does and where its code lives
a brief explanation
the expected results
pre-requisites for working on your project
if applicable, links to more information or discussions
mailing list or IRC channel for your application/library/module
your name and email address for contact (if you’re willing to be a mentor)
If you are not a developer but have a good idea for a proposal, get in contact with relevant developers first.

Some big ideas to seed the discussion with:

  • [3D vision] use the camera images to build 3d models of structures undewater.
  • [Telerobotics] Tune WebRTC to deliver sub 100ms video lag from the ARM based beaglebone to the browser.
  • [HTML5 Audio] Use AI classification to train a central database of sounds based on a cheap underwater Hydrophone to do automatic sound classification on underwater contacts.

Some practical ideas to seed the discussion with:

  • [HTML5 Web Components] Publish an specification for creating themes using HTML5 web components.
  • [Robotic Data Capture Plugin] A plugin that captures video and telemetry separately and bundles it to the web for replay and sharing.

Go ahead and add your propsal for projects as a reply in this topic and I will move them up to this post as the final list

Call to action to some of the prior software contributors: @Simone_Chiaretta, @Dominik_Fretz, @Bran_Sorem, @Tony_Guntharp, @Henry_Stewart, @Jim_Trezzo, @Joakim_Karlsson, @Colin_Ho, @Walt_Holm

Google Summer of Code Ideas

Low latency video channel for tele-robotic applications
Brief explanation:
One of the major hurdles to driving robots that are not in your direct line of site is the latency when driving through a first person video feed. The OpenROV submersible mini class observational ROV is an ideal platform as the ROV spends much of it’s time out of site underwater but sends up a realtime HD video feed for a pilot to control the ROV. To prevent pilot overcorrection, ideally the latency for the video should be under 100ms.
Getting low latency over variable quality connections requires use of UDP which has only recently become possible in the browser without use of plugins. This project focuses on using webRTC from a beaglebone to stream video and audio to the browser for control of the robot. WebRTC is still an evolving standard and while we have managed to compile the WebRTC libraries on the ARM based beaglebone, keeping up with the standard will be challenging. Stretch goals include minimizing processing on the embedded computer by passing through h.264 video encoded in the camera, integration of the video channel as a plugin that the entire OpenROV community can use.
Expected results:

  • Establishing a UDP video and audio connection from the beaglebone embedded computer to the browser without the use of plugins
    Knowledge Prerequisite:
  • Basic undertanding of C
  • Comfortable programming javascript and basic HTML and DOM manipulation
  • Comfortable navigating a linux O/S
  • Comfortable working with git and github
  • Knowledge of how internet video works, video codecs, and internet streaming is useful but not required.
    Mentor: Brian Adams (@badevguru)


Project: Mission control voice coordination
Brief explanation: OpenROV is used with many different size groups. When you get over 5 people trying to participate in a dive with one ROV it is useful to pull much of the data away from the ROV pilot for specialized processing by another person so that the pilot’s cognitive load can stay focused on keeping the ROV where it should be positioned underwater.
We want to model a system similar to Mission Control at NASA where the conversations between specialists and the primary mission team are controlled. Specialists should be able to talk in real time without it being noise to the pilot and tether handlers trying to control the ROV. Yet, when the specialist has something important to say, they should be be able to cut in to the primary talk channel and communicate with the pilot and his/her team. Given that we are all browser based, the technical solution should probably take advantage of WebRTC for the audio communication.
Expected results:


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


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 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