Otter Force One

Robotic urchin harvesting to protect kelp forests

Similar projects worth following
Kelp forest decline is a severe global climate problem. In Northern California, more than 90% of kelp forests along 350 km of coastline were lost [1].

Grazing purple sea urchins are destroying the kelp forests and preventing them from regrowing. 350 million purple sea urchins were found on one Oregon reef, a 10,000% increase since 2014 [2]. This had a huge hit on the economy - shutting down a $44M / year fishery [3].

Present methods of collecting purple sea urchins are time-consuming by divers [4].

Otter Force One detects and captures purple sea urchins non-destructively.

The device combines visual AI and robotics, allowing for ongoing protection even without divers present.

Otter Force One aims to restore the delicate balance between kelp forests, sea urchins, and otters.


Kelp forest decline is a severe global climate problem. In Northern California, more than 90% of kelp forests along 350 km of coastline were lost [1]. 

Satellite View

Northern California kelp forest coverage. Image source: Meredith McPherson [5]

Underwater View

An urchin barren in Monterey Bay, California. Photo source: Michael Langhans [6]

Grazing purple sea urchins are destroying the kelp forests and preventing them from regrowing. 350 million purple sea urchins were found on one Oregon reef, a 10,000% increase since 2014 [2].

Present methods of culling purple sea urchins include the time-consuming task by divers to collect each urchin one by one and place them into a bag.

Diver collecting purple sea urchins by hand. Photo source: Sierra Rose Garcia [7]

Otter Force One detects and captures purple sea urchins to protect kelp forests. 

The device can be used hands-on by divers or as a standalone autonomous benthic device. 

By placing these devices around the perimeter of a kelp forest, ongoing protection can happen even without divers present.

Otter Force One detects the urchins using its camera and AI. It automatically pulses a jet of water to dislodge the urchin. Then activates suction to bring the urchin into a bag non-destructively. Data of the number of urchins per meter squared is recorded to monitor progress.

The core system is structured as follows:

The primary hardware is located in the internal hull.

The device prototype measures 34 cm tall x 38 cm wide (50 cm with handles) x 68 cm long. Miniaturization would occur in the next iteration after proven functionality. The CAD model can be found in the Github repository here.

Human intervention is needed to restore the delicate balance between kelp forests, sea urchins, and otters. Otter Force One places this tool into the hands of divers to address this global climate related problem in their own local region.

Sea otter with a purple sea urchin in Monterey Bay, California. Photo source: Morgan Rector [9]

The grazing purple sea urchins offer little to no nutritional value to otters. Thus, otters are not eating them. Otters are an endangered species. It is a delicate balance, as the below infographic details:

A Delicate Balance. Infographic source: National Geographic [8]

The Otter Force One prototype is in active development for the Hackaday Prize 2022 to address this massive climate related problem.

With the proper resources to further the prototype, solving the first step of the problem is possible. Join us on the journey to protect kelp forests with robotic collection and monitoring!

Let’s dive into more information in the following sections.


Project logs table of contents

Github repository


Kelp forest decline is a severe climate problem covering a large scale, magnitude, and speed [1]. More than 90% of kelp forests along 350 km of coastline in Northern California were lost [10]. With over 360 million acres of kelp forests around the world [11], the problem is global — Tasmania lost 95% of its giant kelp canopy [12]. 

Seaweeds (including kelp), store ~170 million tons of CO2 each year — thereby removing it from the atmosphere [13]. Kelp plays an important role in marine ecosystems by harbouring a greater variety and diversity of plants and animals than any other ocean community [14]. As well as protection for otters, which are apex predators of the marine nearshore environment [15]. Kelp forest loss is a climate driven catastrophe from multiple phases: loss of sea stars due to disease [16], a marine heat wave [17] which reduced marine oxygen levels [18], deforestation, and finally sea urchin barrens. 

An urchin barren in Monterey Bay, California. Photo source: Michael Langhans [6]

Using satellite imagery, the decline in kelp...

Read more »

  • Calibrating the Voltage Regulator

    EK10/27/2022 at 03:01 0 comments

    Before moving further along with placing the electronics on the 3D printed pieces, the voltage regulator has to be dialed in. It will output 5.0 V for powering the Raspberry Pi. This would be supplied by the 4S Lipo battery. In this setup, a benchtop power supply is used.

    Here are all the electronics on the 3D printed pieces that will be inserted into the hull:

    This is the voltage regulator. It is a switching module soldered onto a custom pcb that has a 4 pin barrier block for easily attaching wires with crimp connectors to. The trim potentiometer on the left is what changes the output voltage. The trim potentiometer on the right changes the current that the LED lights up with red - by default it is blue under that current amount.

    Here is dialing in the voltage regulator - by reading the output on the multimeter while spinning the potentiometer.

    The result: Powering up the Raspberry Pi from the 4S LiPo battery with the voltage regulator worked!

  • Potting the Connectors

    EK10/25/2022 at 02:11 0 comments

    The thrusters have cables that need to go inside the waterproof enclosure. To do this, cable penetrators are used. The cable goes through the hollow of the penetrator, which gets filled with marine epoxy. The penetrator is then compressed with two small o-rings against the acrylic panel that encloses the sides of the hull. 

    Supplies needed:

    Be sure to pay attention to the cure time for the marine epoxy. In the one I purchased at Canadian Tire, the cure time was only 8 hours. Whereas some other types online require a full 36 hours.

    I haven’t seen many guides online that really showed all the steps of the process. I think this could help makers who are also trying to do something similar. So, here are photos of every single step of the process.

    ^ Supplies are ready 

    ^ Setting up clamps to hold the penetrators perpendicular to the ground. Third hand tools help to keep the angle of the wire proper. The chassis of OFO is covered in shop towels.

    ^ View from an angle

    (Click read more to continue)

    Read more »

  • Hackaday Prize 2022 Update

    EK10/23/2022 at 03:39 0 comments

    There were only 4 days between the announcement of the Wildcard winners (Oct. 19) and the deadline for the grand prize (Oct. 23). It simply is not enough time to complete both the prototype and all the requirements by that deadline (especially compared to other categories that had months).

    Sorry everyone about the missed opportunity. Hope everyone following the project will keep on, as there will be more updates posted.

    Please enjoy this video of the functional electronics prototype being tested — outdoors, in frigid waters:


  • Prototype Hull Electronics

    EK10/09/2022 at 06:09 0 comments

    The prototype electronics have been installed into the hull for a test fit. The diver would have the LCD with a RGB backlight in view as they are diving.

    Back view:

    To the side, the bubble wrap is covering a MS5837 pressure and temperature sensor. This will penetrate the hull and be located on the exterior. The corresponding depth value can be displayed on the LCD.

    Front view:

    The front is where the camera and LEDs will be mounted. The camera connects to the Raspberry Pi, running the Tensorflow Lite model trained for urchins to run object detection live.

    Here is a look at the electronics as they were a work in progress.

    Testing the sensor: 

    Back of the proto board: 

    Structure assembled and with electronics running: 

    Top view:

    The top view shows the packing of the 3D printed structure and electronics inside. There are still more components to be added, such as the microcontroller 1S Li-Ion battery, the 4S Li-Po battery, the Raspberry Pi, and some additional peripherals.

    Compared to the CAD model, there were only a few as-built modifications where fastener heads were protruding more than anticipated.

    Front view:

    This shows the LEDs, camera, voltage regulator, and 4S battery

    Back view:

    This shows the LCD, the power input distribution board, and the ESP32 microcontroller board in the background

    The next step is to continue with firmware development for all the peripherals, such as the sensors and thrusters. 

  • Object Detection Training

    EK10/05/2022 at 23:54 0 comments

    In order to detect the urchins, object detection will be used. The model will be running on a Raspberry Pi with a Pi cam. Information about this will be sent back to the microcontroller (ESP32-WROOM) via UART. 3W RGB LEDs will be beside the camera to illuminate the surroundings underwater. All of these electronics are housed inside of the hull, which sits on top of the device’s chassis.

    Object detection allows for counting multiple urchins in a single image, giving the position and dimensions. This count of urchins would eventually be used to help audit and track where there are less than 2 urchins per square meter, indicating it is a prime location for kelp forest restoration efforts.

    To accomplish this, the task is divided into multiple parts:

    1. Dataset collection and tagging
    2. Training and testing
    3. Running on the device
    4. Analysing results in the real world setting

    This log covers step #1 and the start of step #2.

    A list of objects of interest was created:

    • Purple sea urchin
    • Fish
    • Kelp holdfast
    • Kelp stipe
    • Kelp blade
    • Kelp float
    • Ground

    These are the elements in kelp:

    To test the concept, urchin would be the first object that is trained. In the future, as more data is collected on the device, the additional list items can be trained.

    For the first round of training images need to be collected. The images were collected manually from searching the internet. Although a scraper could be used, it could have negative consequences such as being blocked, which I did not want to risk.

    The process was as follows:

    • Search purple sea urchins on Google Images
    • Follow the results that were interesting
    • Save the images into /train or /validate or /test
    • Remove duplicates with same file name
    • Convert .webp to .jpg
    • Run a program to detect visually similar images
    • Change width to be 1200 px maximum for /train and /validate
    • Change filenames to be image-NNN.jpg
    • Annotate with LabelImg

    To detect the visually similar images and remove duplicates, Duplicate File Finder ( and PixCompare ( were used.

    If the width or height exceeded 1200 px, this was resized to 1200 px using an AppleScript with Automator ( There could be other ways of doing this, such as with Python.

    Check if any files are named .jpeg and change them. See the files with this command:

    ls -d *.jpeg 

    Renaming the files to be sequential was also completed using Automator. Another way of doing so would be with a bash script.

    LabelImg was installed and run to label all the images. Commands:

    sudo pip3 install labelimg

    By annotating urchins in many different settings and angles, it will help the model.

    Total images = 108. This was divided up into 68 images for train, and 40 images for validate.

    Edge Impulse object detection was used to train the model quickly. In order to convert the annotated images from LabelImg to Edge Impulse’s format, I wrote a Python script: 

    The script worked, as demonstrated by the bounding boxes on the image:

    Here’s a look at preliminary testing on the model. 

    Further investigation is needed, as indicated by this table.

    Next steps will include training the model again, using @Evan Juras ‘s ( Colab Python notebook found here:

    There is more information on the repository here:


  • Outdoors Test

    EK09/04/2022 at 05:57 0 comments

    The device chassis is assembled, with the thrusters installed. An outdoors test would be able to confirm the lack of buoyancy, as well as give valuable information regarding transportation logistics and deployment.

    Here is an example purple sea urchin replica moving in to the suction tube. This illustrates the premise* of the device. 

    *Note: In reality, the purple sea urchin would be attached to the bottom - not originating from the top.

    When the urchin is suctioned back towards the coupler, it will pass by an opening of the top plate where the hull can see it. This is where the count of the number of urchins caught will take place by the hull electronics. 

    The water had quite a bit of particulate matter suspended in it today. Here is a tour around the device:

    An observation was that the device may need to have additional weights when in standalone. The current catches the side panels and could tip it over. This will become even more pronounced when the hull electronics are added, including the battery, which will raise the center of gravity even higher.

    When the device is on the seabed, it would be in the standalone configuration protecting newly planted kelp seedlings. It could look similar to this:

    Here are photos of the device prototype:

    Can you spot the thrusters installed?

    As for the surrounding nature, ducks were curious about the device:

    Regarding transportation logistics, the device was placed onto a skateboard, with a towel to avoid scratches. This was then rolled down to the water. 

    Next time when the device has all its electronics, it will be ready for “Do a kickflip!”.

    Progress continues!

  • Initial Thruster Test

    EK09/04/2022 at 04:36 0 comments

    The initial thruster was met with difficulties, but did show signs of progress.

    The testing conducted was with the larger thruster for the suction tube. Here is a look at the thruster producing movements, albeit slower than anticipated:

    The thruster is shuttering, then stops. As it stops, the flow of the water can be seen as redirected by the 3D printed piece. Here it is slowed down 50% and in greyscale with higher contrast:

    In the previous project log (, this flow redirector piece was mentioned with a bit of a hypothesis. From this initial test, the results look promising that it could work. Once testing with full strength, this will be able to be known.

    The difficulties while testing included:

    • Placing in water = thruster stopped. Removing it = thruster started.
      • The connections moved when doing so
        • Wiggling the connections would produce a shuttering movement from the thruster
      • Could be power related? Debugging power would rely on the above point being solved. So, start there first.
    • The ESC has an arming sequence. Sending 1500 us pulse to it a few seconds after it starts up is required
      • There was no documentation for this
      • A power up sequence was determined as well: connect power source to ESC, then connect power to microcontroller. 
    • The ESCs brown out
      • Cause unknown, working on investigating this
      • Problem was evident on a CC and CV power supply
      • Problem was evident on a 20 C 2650 mAh 4S Lipo battery
    • Using a 10 A fuse inline with the Lipo would intermittently not start the ESCs
      • Removed this solved the problem
        • But comes with a higher risk when working with electronics near water
        • Could try a greater fuse value
    • Overall setup of the experiment
      • Sometimes splashes would sprinkle water close
      • Crouched down with laptop and electronics on boxes
      • Tried separate container with water, makes a mess
      • Dripping faucet into water sound
    • Difficulties with smaller thruster for waterjet
      • Appears to be out of commission. Need to triple check

    Overall, this test demonstrates that the electronics are working to send the correct control signals to the Electronics Speed Controllers (ESCs). There is a bit more work to do on debugging to get it working as expected. The next step is improving the connections.


  • Preparation for Thruster Test

    EK09/02/2022 at 02:16 0 comments

    There are two thrusters on the device, one for suction and the other for a water jet. The water jet is used to dislodge the urchins, and the suction is used to non-destructively bring the urchins through a tube and into a bag. 

    Before continuing on with the assembly, it would be good to test the thrusters to validate they are working as expected. Both of the thrusters have custom pieces that attach to their mounting points and around the shell. 


    The first step was to prepare the electronics:

    An ESP32 was selected for rapid prototyping. There are two Electronic Speed Controllers (ESCs). Suction gets 30 A, and water jet gets 20 A. 

    The thruster cables will be connected to the screw terminals. The screw terminals were chosen to make it easier to disconnect when the watertight penetrators are installed onto the hull end caps.

    A protoboard was used for this initial revision. Future versions will use a custom circuit board.

    The power will be supplied by a 4S Li-Po battery. The ESP32 will be connected via USB to access the command line interface during testing.

    Suction Thruster

    The suction thruster sub-assembly consists of 6 pieces that are fastened together. 

    The flow redirection flange contacts the back plate of the chassis. The rectangles move the outflow of water to the sides in order to not cause distractions to the diver.

    Based on the specifications, at 2000 rpm the motor will produce 2.0 kg of thrust and 75 W of power. Going up to 3000 rpm, the motor will produce 4.0 kg of thrust and 200 W of power. There is a difference in orientation of the thruster, with forward being greater than backward. 

    Here is a look at the thruster with the collar that uses heat-set inserts:

    Water Jet Thruster

    The water jet thruster was designed to have interchangeable face plates for more or less outlets to be added. The strength from the outlets must be enough to dislodge a purple sea urchin.

    Rubber tubing will be attached onto each of the barbs to direct the jets closer to the entrance of the suction tube.

    Side view of the water jet thruster sub-assembly. 

    Based on the specifications, this thruster can withstand up to 300 m in depth. The max power is 150 W, and the max current is 10 A. The max thrust at 16 V is 1.4 kg at 170 W, and the min thrust is -1.2 at 160 W (operating in reverse).

    Upcoming Testing

    A rotary potentiometer will be used to adjust the speed of the thruster, by modifying the pulse width of the PWM sent to the pin the ESC is connected to. 

    The firmware ( has the following modes that can be input as one character:

    h: Help
    1: knob off
    2: knob: suction fwd
    3: knob: suction rev
    4: knob: water jet fwd
    5: knob: water jet rev
    p: print knob 

    The test must be conducted in water as the thrusters have bearings that are lubricated by water. Running them in the open air risks damaging them. 

    The goal for the test is to confirm the following:

    1. Suction thruster operational in fwd / rev
    2. Water jet thruster operational in fwd / rev
    3. The pulse width microseconds time for minimum and maximum

    The test will be conducted tomorrow. It’s going to be exciting to see the first bits of this robot come alive!

    If the results meet the criteria, the next immediate step would be to start potting the thruster connectors into the watertight enclosure penetrators with marine epoxy, as this may take 24 hours to cure. 

  • Fabrication and assembly is underway

    EK08/27/2022 at 03:48 0 comments

    The tubes for suction and the hull have arrived, along with the cut pieces for the device. Brackets, mounts, and structural elements are being 3D printed around the clock. Let’s take a look at what has been created so far:


    The coupler routes the incoming urchins to the bag. It attaches the suction tube to the suction thruster to the device, then to the bag. 

    Coupler in device with side panel and top panel removed

    Coupler split into 4 pieces in CAD

    Coupler cross-section view

    The model was split into 4 in order to be printed. The total print time was ~30 hours. The pieces were attached together using 100% rtv silicone.

    Coupler curing outdoors

    Applying silicone

    The mesh to protect the suction thruster was cut from a template from the CAD model and attached using 100% rtv silicone.

    Applying silicone to the screen mesh

    Front view

    Back view

    Another way of fabricating this could have been with PVC pipes. This route was not chosen due to lack of space and tools for cutting and gluing. The advantage that 3D printing gave was an all-in-one assembly, with the mesh screen mount being included. In a production setting, this piece would be injection moulded.


    Preliminary CAD model:

    Front view

    Top view

    The material selected was 1/8" black delrin. This was chosen because of its performance in fresh and saltwater, as well as the malleability of the material as it might need some adjustments.

    This first iteration of the design does not use interlocking tabs and slots because of modifiability of the plates. In the future, implementing this into the design would increase the sturdiness.

    Side pieces attached! Testing the handles

    M6 fasteners were selected

    Attaching the pieces together

    As each side panel was attached to the base, the less it would warp and bend. 

    All four side panels attached to the bottom piece

    There was a small error in the design. The side entrance of the fastener (the rectangle, as opposed to the hole), was 2 mm too small for the width of the fastener. In order to remedy this, a dremel was used to shave off the small amount. Safety glasses and a guard were used while cutting with the dremel.

    Dremel with guard

    Dremel with a conical sanding bit

    Two brackets have been completed so far, which are supports for the suction tube:

    Water Jet Thruster

    Water jet thruster sub-assembly CAD model 

    Cross-section view

    The design of the water jet thruster is such that a collar is attached to the mount which has heatset inserts in order to attach a plate to it. 

    Inserting the heatset inserts to the 3D printed collar part

    Front view

    Side view

    Through a submersion water test, it will be determined if the fasteners are strong enough for the water force as applied by the thruster. 


    Here’s a preview of the internal hull without the electronics:

    These pieces are printed, and will be assembled in the near future. More about the internal hull in a future update. Until then, check out the hardware block diagram in the project description.


    The current goal ahead of the Sept. 4th deadline  is to demonstrate the suction working to collect an example urchin prop. Stay tuned for further updates on the progress!

View all 9 project logs

Enjoy this project?



andrew.david.thaler wrote 10/23/2022 at 01:27 point

This is such a cool project. If you want a sensor pack from the OpenCTD, I'm happy to send one your way. 

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

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