Google Summer of Code Ideas


1 Welcome!
1.1 Background
1.2 Students looking for ideas
1.3 Mentors wondering where to help
1.4 General requirements
1.5 Mentors
2 Ideas
2.1 Low latency video channel for tele-robotic applications
2.2 Mission control voice coordination
2.3 ROV Location and Navigation Software
2.4 OpenROV ROS Integration

  1. Welcome

OpenROV hopes to be accepted as a mentoring organization in the Google Summer of Code 2015. This is our first year and we are borrowing our format heavily from past successful mentoring organizations, especially If you have any questions, feel free to post in our forums, private message me @badevguru, or send an e-mail


1.1 Background

OpenROV is a open-source underwater robot. But it’s so much more. It’s also a community of people who are working together to create more accessible, affordable, and awesome tools for underwater exploration.

The backbone of the project is the global community of DIY ocean explorers who are working, tinkering and improving the OpenROV design. The community ranges from professional ocean engineers to hobbyists, software developers to students. It’s a welcoming community and everyone’s feedback and input is valued.

The project started in a garage in Cupertino, with a few guys who wanted to explore an underwater cave. After finding a global community of co-developers on Kickstarter, the project has evolved into a network of connected devices, exploring the oceans and lakes of the world.

The OpenROV is driven using a modern browser that talks to a node.js process running on a beaglebone computer on the ROV itself. The Node.js process talks over a serial connection to an Arduino that interfaces with many of the sensors and motors on the ROV.

Every accepted student will be sent an assembled OpenROV before the first week of coding for testing their project.

Additional hardware will be provided depending on need and value.

For more information, check out our forums and our main site


1.2 Students looking for ideas

The key for us is to select a project that you are passionate about. If can come form the list of ideas here or you can propose an idea in our forums where we will gladly help you develop the idea.


1.3 Mentors wondering where to help

Go to our discussion topic on 2015 projects and introduce your self and you experience and availability. Let us know if you want to help with one of the existing proposals or feel free to registering your idea in this discussion topic.. @badevguru will curate the proposals and assign mentors based on if we get accepted, what projects we are accepted for, and the skill sets of the mentors that are available. We are insisting on a primary and at least one secondary mentor for each project that get accepted.


1.4 General requirements

All projects have the following basic requirements:

  1. Once accepted, a discussion topic on the project must be added to in the “Google Summer of Code” Category. This will be used for all status updates, release announcements, and the like.
  2. All newly generated materials must be released under an open source license.
  3. Individual students shall retain copyright on their works.
  4. Source code generated during the project must be released on (to be cloned to on successful completion).
  5. Weekly status updates should be sent via PM in the forums to your mentors and @badevguru that outline:
    a. What was accomplished that week
    b. What you plan on accomplishing next week
    c. Anything that blocked last week goals or is blocking next weeks goals
  6. Students will provide two recorded audio/video presentations uploaded to youtube or vimeo (screencasts are appropriate), one near the beginning of the project summarizing their project goals and another in the wrap-up phase to summarize their accomplishments. Since this is our first year, I refer you to examples that can be found on
  7. Students will provide two recorded audio/video presentations uploaded to youtube or vimeo (screencasts are appropriate), one near the beginning of the project summarizing their project goals and another in the wrap-up phase to summarize their accomplishments. Examples can be found on
  8. All projects will produce reusable software components intended for ongoing development by the OpenROV community and future GSOC applicants.


1.5 Mentors

Name: Brian Adams
forum nickname: badevguru
Melange name: badevguru
Native language: English
Other languages:
Timezone: PST
Software help: Javascript, Node.js, DOM, C, C++, Arduino
Hardware help: basic debug
Focus projects: Browser Robotic Control, Embedded Linux, Robotic systems

Name: Jim Trezzo
Melange: jtrezzo
Public name: jtrez
Native language: English
Other languages:
Timezone: PST
Software help: Javascript, Node.js, Java, C, C++, Arduino/Micro-controller Systems
Hardware help: electronics analog/digital, I/O systems, acoustics, control systems
Focus projects: Underwater Robotics, Navigation/Location, Embedded Linux, Robotic systems, Robot Operating System (ROS)

Name: Dominik Fretz
forum nickname: codewithpassion
Melange name: codewithpassion
Native language: German
Other languages: English
Timezone: EAT (Australien Eastern Time)
Software help: Javascript, Node.js, DOM, JQuery, C, C++, Arduino, C#/.NET
Hardware help: limitted
Focus projects: Browser Robotic Control, Embedded Linux, Robotic systems, web applicaitons

Name: Colin Ho


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

Possible Mentor: Brian Adams, Dominik Fretz


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

  • A working plugin for the OpenROV cockpit software that allows multiple teams to intercommunicate in a controlled fashion.

Knowledge Prerequisite:

  • Watched any of the Apollo mission documentaries of movies. :smile:
  • Comfortable with javascript, HTML and using the browser DOM
  • Familiar with node.js

Possible Mentor: Brian Adams, Dominik Fretz


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

Possible Mentor: Jim Trezzo, Colin Ho


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

Possible Mentor: Jim Trezzo, Colin Ho