Open-Source Shallow Water Glider

With support from Fisheries and Oceans Canada as a part of a co-op work term

Similar projects worth following
A low cost undersea glider with the ability to collect water column data for a few days before being retrieved.

This project borrows heavily from and that project was used as a starting point for the build you will see below.

Gliders are an indispensable tool to oceanographers because they can help them collect important data such as temperature, salinity, pressure and oxygen among other things right from the surface down to hundreds of meters. The ability to collect data to such depths paired with the distances the gliders can travel and their capacity to operate in any season or weather gives oceanographers invaluable insight into the current conditions in our oceans

We wanted to build an undersea glider because the design lends itself to being very energy efficient. Ballast engines do not require a constant source of energy, they only need to pump water in at the surface and pump it out at depth to rise again. The act of sinking and floating combined with wings  propels the glider through the water. Currently gliders on the market are capable of month long missions and communicate over satellite networks. These commercial gliders cost hundreds of thousands so it is our goal to create a much more affordable solution so as to potentially harness the power of citizen scientists in order to have better oceanographic models with wider coverage.

To start the project we began constructing the OSUG. Our hopes were to build the glider, add cellular communications and more batteries along with a few sensors such as temperature, pressure, salinity and possibly oxygen later in the build. If we could accomplish the above the glider could be used both as a outreach/demonstration piece and as a tool for oceanographers.

While constructing the OSUG the first hurdle was making it wireless. The original OSUG was designed to use a BlueROV tether combined with their pixhawk for controlling it. We decided to utilize an Arduino mega due to the large number of available pins and its ability to relatively easily interface with most actuators and sensors. Since the glider needed to be completely sealed and the more times a glider is opened and close the bigger the chance for a leak to happen we opted to also include a raspberry pi in order to wirelessly reprogram the Arduino. These two changes meant we had to redesign the circuit rack from the OSUG. The roll-motor also proved us with a challenge, 3d printing difficulties lead us to eventually abandon the stepper motor paired with a planetary gear setup. The stepper and planetary gear were both replaced by a high torque servo, this reduced the number of wires required, simplified the code and removed the need for limit switches. The pitch-motor assembly went smoothly, we successfully built it following the OSUG plans and the only change made was printing two of the battery holders and doubling the original OSUG's 18650cell capacity. The ballast engine is where we ran into our biggest hurdle, after constructing the syringe design of the OSUG we discovered that it simply couldn't handle the pressure at the depths we wanted to reach as well as it would seize even after lubrication if it was left to sit for an extended period of time (~a day). We decided to overhaul the design and copy what the commercial gliders use, a pump and ballast system. Finding an adequate pump proved challenging and we settled for a small diaphragm pump rated to 3bar of pressure, not ideal but suitable for a proof of concept.

The state of the project as it stands right now is a glider capable of diving, surfacing, turning left or right and collecting and logging temperature and pressure data. It requires a new command on every surfacing through a long range radio with a theoretical range of 2-5km. It currently has enough battery capacity to run for a full day continuously, maybe a touch more, with all actuators moving and sensors running, however on an actual mission it would not be continuously pumping water or operating solenoids, steppers and servos so...

Read more »

Here are all of the Arduino libraries, KiCAD schematics and STL files

x-zip-compressed - 15.49 MB - 08/30/2022 at 16:18


View all 45 components

  • Version 2.4

    Seth Fleming-Alho06/05/2023 at 17:06 0 comments

    Work has resumed on the glider!

    Having discovered a hydraulic pump option that can be acquired from hobby stores here we have returned to the 4inch tube design keeping cost and portability in mind. This pump is supposedly capable of reaching depths far past the crush point of our blue robotics acrylic hull but has yet to be rigorously pressure tested. The limit for depth on the glider at the moment its theoretically 40-50 meters of seawater, this is because we are still using the same valves as the previous iteration. Finding couplings to connect the 4mmOD 2.5mmID tubing for the pump to the 1/4" tubing and threads of the valve and bulkhead penetrators has been an ongoing struggle and it is likely a rework of the plumbing is in order. Once completed the hydraulic pump has the advantage of not only higher pressure but also keeping seawater out of the ballast engine by only using mineral oil which is a safer alternative to actual hydraulic fluid. Requiring not only an internal ballast but an external ballast means we have designed and external nosecone to contain the bladder and protect the altimeter. Water testing of various 3d printer materials is ongoing to see which will work best, our current iteration is a mix of PETG (internal) and ABS (external). We have stuck with using lifting bags to act as our ballast "tanks".

    The entire structure inside the glider has been redesigned. Only containing an Arduino mega (and a 1500MKR in the future for cellular communication) the rear cell compartment has been simplified. The pitch engine had to undergo large changes because under the transportation of dangerous goods acts it is illegal to manufacture and transport your own batteries. To work around this restriction the power pack had to be assembled in such a way that all of the individual 18650 lithium cells being used are separate and not welded together. The roll engine now also include bearings to promote a smoother rotation and remove the need for anti-friction tape. The ballast engine underwent a rework to house the bladder along with the new hydraulic pump and ESC to control it. As mentioned above the plumbing needs some better connectors and that is being worked on.

    The glider now has the custom circuit board installed and while the individual modules are testing well the current converter to bring the 12V of the battery pack to the 5V for the logic of the circuit is unable to deliver adequate current and will be replaced with a 12V to 5V buck converter from a car.

    The 9DOF board has been installed and works (mostly). The compass seems to not be very reliable, this could be due to poor calibration or external interference. More testing is required but we may be required to purchase a better compass module. However even with the poor accuracy the glider does now have navigation! Using an onboard GPS and the compass it can take a coordinate input and determine a heading and bearing and should theoretically be able to make it to the coordinate.

  • To Do List

    Seth Fleming-Alho08/29/2022 at 17:33 0 comments

    1.) The Hull

    Having switched out the syringe ballast engine for the pump design we are considering a larger enclosure tube. We realized while looking for an adequate pump that most 12V pumps are just slightly over 4Inches in diameter and would hence not fit in the tube. Switching to a 6inch enclose would allow for a much wider range of pumps to be considered, most of which are far more powerful than what is currently inside the glider.

    The 4" acrylic tube was used because it was part of the original design. 4" acrylic is great for prototyping since you can see what is going on inside, however, it is no longer available from Bulerobotics, was difficult to source, and was one of the most expensive parts of the project. In addition, it was very difficult to source a pump that would fit inside a 4 inch tube. Increasing the size of the tube to 6" should give enough room for a larger variety of pump options.

    All parts for 6" enclosures are available from Bluerobotics (, however, the longest length available is 11.75"/298mm. Longer tube could be sourced elsewhere and doesn't need to be clear or acrylic. Options could include aluminum, PVC, etc.

    2.) STL files

    Increasing the size of the enclose will mean an overhaul of the printed files. Opportunities will be taken to increase battery capacity, install a larger pump and change the circuit rack design to either copy or use the prefabricated model from Blue ROV  (along these lines The prefabricated circuit rack will only be viable if the glider design keeps the 4Inch tubing.

    Currently the different sections of the glider are connected with wood for ease of prototyping however this will be replaced with long metal standoffs

    3.) Cable connectors

    The prototype wiring definitely needs some wire clean-up and ideally all connectors will be either soldered together or connected with clip-in connectors. These connectors will be introduced into the PCB design.

    4.) Replacing the IMU.

    Currently the glider operates off of a MPU-6050, this is unfortunately only a 6-DOF chip and for reliable navigation during the dead reckoning dives we require a 9-DOF chip. Testing has begun on the to see if it satisfies our requirements.

    5.) More Sensors

    With and Arduino interfacing with sensors is incredibly easy and with a few open slots in the bulkhead it would be good to find sensors important to oceanographic work that could be easily installed.

    6.) Ballast Volume Measurement

    The whole ballast engine design is a pretty crude prototype, pretty good for the first version and a huge improvement over the syringe design. The big thing we need to figure out is how to measure whether the ballast is all the way in or all the way out and ideally some way of measuring/estimating the volume between those two extremes. Limit switches, pressure sensors, and the flex sensor ( are a few options we discussed, but we should be open to other options including a different interior reservoir that would allow better measurement 

    7.) Remove raspberry pi

    The pi and its separate power supply exist solely for being able to wirelessly reprogram the Arduino during the testing phase. It will no longer be necessary once the design and code are finalized. This will save room and reduce power consumption.

    8.) Bladder

    Ideally an internal and external bladder should be used. Unfortunately we were unable to source a fitting during this phase of the project that allowed tubing to be attached to both sides of the end-cap. Running the ballast engine with normal seawater will run the chance of the tubing or penetrators becoming clogged. Having an internal and external...

    Read more »

  • Roll Engine

    Seth Fleming-Alho08/23/2022 at 16:02 0 comments

    The .stl files from originally call for a stepper motor and planetary gear setup (figure 1) in order to control the roll of the glider and to be able to steer. We had challenges getting a planetary gear setup working so a change was made to use a high toque metal servo (figure 2) that was mechanically more simple, easier to program and didn't require limit switches.

    Figure 1

    Figure 2

    The main remaining issue is keeping the coupling from accidentally separating during pitch-motor movement.

  • The Brains of the Glider

    Seth Fleming-Alho08/22/2022 at 18:28 0 comments

    The original plan was to use an Arduino for full control of the glider. Cellular communication could be established while on the surface and dead reckoning would be used subsurface. For prototyping purposes we opted to use long range radio control. We also wanted the ability to reprogram the glider quickly and without needing cables so it was decided that a raspberry pi would be included in the design. The Pi is used to control the Arduino and reprogram it on the fly through WiFi, this saves us from needing to open the glider for every adjustment. We also wanted the ability to power off any actuators while reprogramming to avoid any accidental damage so a second power supply was added purely to support the raspberry pi in the form of a portable phone charger.

  • Battery Enclosure

    Seth Fleming-Alho08/22/2022 at 18:21 0 comments

    The battery Enclosure design from was modified to house 12 18650 Lithium cells in a 3S4p configuration to power the glider.  The power pack also acts as a moving pitch weight to help the glider pitch down when diving and pitch up when surfacing. The original test of this unit showed it had too much friction between the batteries and the glider tube wall so some low friction blue tape was used. Changes in the design need to be implemented so that the power pack does not touch the glider walls, this will prevent unnecessary wear and power draw.

    Here is a skeleton view of the pitch battery system.

  • Electronics Board Design

    Seth Fleming-Alho08/22/2022 at 18:06 0 comments

    To avoid wires becoming loose inside the glider all sensors and motor drivers were soldered onto a pro typing breadboard. This kept the wires from disconnecting however it became a mess of wires so A PCB was designed using KiCAD to reduce the mess and encompass all the electronics into a single board.

  • Ballast Engine

    Seth Fleming-Alho08/22/2022 at 18:02 0 comments

    Initially the ballast engine was modeled after a previous build for an open source underwater glider ( The syringe design was low cost and elegant however we quickly discovered that the syringes would bind and it did have a very low pressure rating despite upgrading the drive motor from a Nema-17 to a Nema-23. For this reason the ballast design was reformatted to use a High pressure pump combined with a reservoir. This would allow for the glider to reach greater depths and therefore become more energy efficient.

    The following figure was a test of just the new pump design.

    This design included two solenoid valves rated for 100PSI, a control board, and arduino uno and a diaphragm pump rated to approximately 30meters of seawater with a lifting bag as a bladder.

    Choosing the pump was difficult as finding a pump that fit the power requirements (12V), the tube diameter (4inches) and had the power capable of pumping out water at depth proved to be quite a challenge and is a driving factor in potentially shifting to a 6inch tube for the 2nd version.

    Once implemented into the glider the new ballast engine design preformed very well. The glider will need to be ballasted but this engine design should be able to descend to 15 to 20 meters.

    In this image the wings have not been attached and the altimeter is hanging loose as the nosecone is also off for testing purposes.

View all 7 project logs

  • 1

    Some of these steps have not yet been implemented into the prototype glider such as the PCB and circuit rack print. If you attempt this build be prepared to make modifications as you go since this is not a completed design as of yet.

  • 2
    Control Boards

    Begin by printing the BackEndCircuitRack, and the Circuit_rack_encap_mount. We attempted to print these parts however the print failed part way through, for a more reliable method the stl file should be separated into two separate halves to print that can be glued together.  Better yet would be to use the BlueROV pre-built circuit rack.

    Once the parts are printed insert the Arduino Mega and Raspberry Pi into the BackEndCircuitRack. There are mounting holes in the print for them.

    The circuit rack and all remaining 3D parts can be joined with wood or metal square stock in the provided rectangular holes. This design was from the OSUG project and was included to add some rigidity to the parts for when any of the actuators are running.

    Have the PCB provided printed and solder on all of the parts as labelled on the PCB.

    Connect the PCB to the Arduino Mega as labelled on the PCB.

    Connect the Arduino Mega to the raspberry pi through a short USB cable and connect the pi to the portable power supply. Boot the pi and connect it to your local WiFi network, you should then be able to reprogram the Arduino wirelessly through VNC viewer.

  • 3
    Roll Motor

    Print the ServoRollMotorMount and attach the servo. This section will then attach to the brain housing. The servo can be plugged directly into the PCB. The ServoRollMotorMount print can be attached with square-stock.

    This unit will then connect to the Pitch motor housing.

    Print the Pitch_motor_backplate and attach the servo gear connection into the inner circle, for our prototype it was glued and zip tied in.

    These two parts can then be joined. The gear you see being attached here will be replaced with a similar fitting ( that also has a locking collar to keep both parts connected.

View all 9 instructions

Enjoy this project?



Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates