Summer Software Intern & Marine Scientist at OpenROV



Hey Fellow Marine Enthusiasts!

My name is Megs and I am an intern at OpenROV this summer! I wanted to introduce myself to the community and say how excited I am to be a part of this incredible movement. I just completed my Freshman year at Brown University and am planning on double concentrating in Computer Science and Marine Ecology. In my free time, I enjoy sailing, snorkeling, and SCUBA diving (really anything on the ocean ;))!

This summer, my goal is to contribute to the citizen science movement by creating a plugin in the ROV that allows user to collect and share data that evaluates the water column (temperature, light, etc. with respect to depth) when flying the ROV. I am really excited about this project because it brings together my passions in both CS and Marine Biology. So far, my plan is to break this project into two key parts:

Part 1: Create a browser plug in that collects various sensor data with respect to depth. At the end of the dive, the water column profile should be visually displayed to the user, and a “sync to cloud” button in the cockpit will allow this data to be sent to the cloud with various other metrics (including GPS, date, time, and sensor specs) that will later enable us to qualify the data. We want to capture and store the raw sensor data, calibration, and the meta data around the precision and general performance of the sensor in use. While we will calibrate the OpenROV sensors ourselves, users can expand the scope of the ROV by adding their own sensors and calibrations (we are open source after all).

Part 2: Create a data search engine that parses all the data sets collected by the OpenROV community and returns the selected sets that meet given specifications. The search parameters will include time of year, location, type of data (what sensor), and data resolution. We will determine data resolution based on sensor specs (that the user must enter - i.e. how long the temp sensor takes to adjust to changes and read an accurate value). Essentially we will use the rate of change in depth to evaluate what parts of the data are meaningful.

I’d love to hear your thoughts/ideas/concerns/suggestions regarding this project!

Thanks for reading!


I have spent the past month finishing Part One of my project - developing a plugin (using Polymer and D3) that allows users to visualize the water column from the real-time data they’re collecting. I spent a lot of time fine tuning my plug in, and some of the key features I added include:
-the ability to create these graphs for any kind of sensor data (not just temperature)
-transparent dots at every data point that have a mouse over function that not only fills in the dot but also displays the depth and average sensor value at that point.
-transitions - i.e. continuous animations between the changing graphs (new axes, data points, etc) so I don’t have to completely regraph with every additional data point.

Now it’s time to work on Part 2: making sure this data is usable and available to scientists.
Yesterday, we went to Monterey to fly our ROVs and I got the opportunity to test my plugin in the ocean. I collected two separate data sets, for one of which my plugin displayed the following graph (I forgot to save the other graph though it looked similar):

The big issue now is evaluating how precise and accurate the temperature sensor is in the IMU. I’m worried there is a lag, or at least that the sensor takes a while to give an accurate reading. Today, I took the actual temp and depth data sets (from what I collected yesterday) and plotted them against time to create the following graphs:

From these graphs it actually seems as if the temperature sensor is pretty responsive though the first quarter of the first graph indicates it does take some time to fully register temperature changes related to depth (the ROV flies from the surface down to 2 meter rapidly multiple times, and though the temperature line does reflect this change in depth, the fluctuation is much less than what would be expected based on the rest of the graph).

So here’s my ask for all the Oceanographers and Marine Scientists reading this: How can I make this data more useful to you? Obviously knowing information about the water column and changing thermoclines is valuable, especially taking climate change and the recent El Niño in consideration, but is this data as is, helpful? What other data would you need to qualify the data (i.e. rate of change when that datum was taken, time spent within a meter of that depth when the datum was recorded, etc)? We have the sensor specs here, and I’d love any suggestions/input you might have. The goal is to ultimately collect enough data around the world to monitor the changing water columns.

Thanks for your time!


HI @megs.malpani

First off Congrats on what you have done to date

Just a couple of thoughts (not so much on your key questions but on some simple temperature control theory)

Hopefully none of this is telling you how to suck eggs

From your post

Don’t worry too much about this all sensors (and temperature is one of the worst) have a Dead Time or Lag / Delay from a change to the sensed value

The easiest way to measure or characterise this lag is just to start recording temperature with the unit out of the water and plunge it into the water and watch for the time it takes for the sensor to basically equilibrate with the surrounds. This is the Time Constant (think of it as a bit of resistance or inertia for temperature movement) and is characterised for the time it takes to get to 63% (Time Constant) of the final value (I would expect most of the OROV’s to be pretty similar in the bigger picture i.e. within a couple of seconds of each other) A rule of thumb is that a system needs the equivalent of 10 dead times to settle.

You could then

  1. not worry too much about it
  2. Time shift the data by basically 5 times the 63% Time Constant (time taken to get to 99% of the final value) if a sort of linear system
  3. Only grab samples once the ROV has got to a depth and maintained that depth for 5 times the Time Constant

Hope this is of some help



Hi @megs.malpani!

I just found out about OpenRov and your project seems awesome. I am studying oceanography in England and the idea of being able to use these systems to study coastal water columns is really awesome and great way to build up data sets.

I am currently studying coastal shelf mixing and variations in the thermocline and we were also getting an issue with the lags. Part of the reason this a big issue for us is that whoever is out taking measurements seems to give a different amount of time before deploying our equipment( Generally CTD’s). We got around this by putting in a warning box that counts down to a fixed amount of seconds then tells the user to deploy the equipment on a downcast , which seems to work pretty well, though it is definitely far more simple since we mainly do stationary downcasts. But it might work for you!

I am trying to get funding from my school to get an openrov kit to use in data collection, so if we manage it , ill let you know how are attempts go, or fail.



Nice plugin. I’ll have to give it a try.
Sorry if I missed it but I can’t tell what time scale you are on. How long are you expecting to wait for the reading to stabilise?
If the temperature sensor is mounted in the main sealed chamber along with a litre or so of air, that will introduce more lag than if it was mounted up against the inner surface of the tube. Even better would be to mount it on an aluminium plate that is in contact with the water. Challenges there in sealing it, but the lag will be in the order of seconds. :grin:


Thanks so much for your input Scott! It was very helpful :slight_smile:


Hi Manny!
I’m glad you’re excited about this project! Hmm, that’s an interesting idea - I’ll bring it up to my boss, thanks! Also good luck with finding funding for an openrov kit, they’re truly awesome!


Hi @shannonjkey!
Sure, so the temperature sensor is actually part of the IMU (depth/pressure sensor), so it is constantly in contact with the water and is not in the sealed chamber. Does that help?
Thanks for your interest! :slight_smile:


Hi Guys!

I have spent the last few weeks heavily focused on the second half of my project: creating OpenWater. This project came to life when we realized that the OpenROV community is, and has been, unintentionally collecting large amounts of fine-grain coastal thermocline data around the world, when flying their ROVs. This made us wonder, how can we best put this data to use? Our solution is a platform in which scientists, government agencies, NGOs, and others can search for data sets collected by citizen scientists, to study and monitor the water column in real time. Having data available would be invaluable for environmental management purposes, or to use it to help inform legislators and congress members about changing ocean conditions and how best to adapt to them. Not only will this project scale the data collection process, but it will do so for free.

Features include the ability to:
-apply initial filters based on what data sets you’re interested in.
-sort the resultant data based on date, max depth, types of data and location.
-search for a specific date, type of data, location, or max dive depth.
-download a data file (as a csv) with a single click (the data file will contain much more information: the gps coordinates, user’s notes on the weather, the sensor’s specs, the actual data, etc)

The site has not been released yet and before we do so, we would love your feedback in the following areas as you look through the demo below (calling all oceanographers, conservationists, etc):
-What would make this page more useful? Having a map? Is it good as it?
-Are there any other filters you’d want on the website?
-What other information would you want to see in the data file (outside of time, depth, temp, and other sensor values) to make the data more useful? (i.e rate of change when data was collected)
-Is the high level data useful in itself even if it doesn’t have absolute precision (slight lag in the temperature sensor)? What information can we provide you with to deal with the lack of precision?
-Is this something you would use? Why or why not?
-Any other thoughts or suggestions?


Ah the standard one, ok. Given that it’s potted in the epoxy that would be slowing it down a little. I’ll see if I can dig up a comparison somewhere.
If subtle temperature changes are what you want to show, the less thermal mass around the sensor the better. Perhaps a dedicated sensor would be useful.


Hey guys,

I’m sad to say this will be my last post for the summer. Thank you all for your support and input throughout the journey, it’s been a lot of fun :slight_smile:

Anyways, my ROV plugin is officially up and available, you can find it at when you search openrov-plugin-waterColumnProfile. You can also download it directly on your ROV through the add-ons tab in the newest version of the software. Test it out and let me know what you think! As a refresher, the plugin allows you to visualize in real time the water column you’re flying in. Features include the ability to create interactive graphs for any kind of sensor data (not just temperature), transparent dots at every data point with a mouse over function that displays the depth and average sensor value at that point, and transitions which basically make the graph a fun animation.

OpenWater is also up at but we still need to update our writing to the server methods, so stay tuned for the functional website. After research and a few interviews with professional oceanographers regarding the beta version of OpenWater, I have written a plan of action with suggestions on how to move forward with the project. This includes adding a map to the website to see where every data set was recorded, processing the data sets (avg value at each depth rather than entire data set), providing preview images, and much more.

The goal is to create a tool that allows researchers and scientists to search for and download data sets regarding different aspects of the water column. If you’re excited about this, LET US KNOW! Please comment with your feedback and suggestions, we want to make this tool useful to you!


I’m interested in adding this plugin to my 2.8 Rov Build 31.0.0.
Are there any step-by-step guides for installing this plugin-- I’m new enough to working with the ROV that I still need some hand holding.

I tried sharing my MAC Wireless internet access to the ROV but my connections were refused. Maybe has something to do with this note:

“The proxy service has been disabled for the moment while fixing an instability that just appeared with the node 6 upgrade. This only prevents you from accessing downloadable plugins.”

Happy to try an alternative method–

Many thanks in advance.