← ProjectsResearch / Computer vision + Robotics
OCTOPAS
Oil spill Cleanup Through an Optimized Pragmatic Automated System
Most oil-spill research goes into better sorbents. OCTOPAS works on where the sorbent goes. A photo of the spill is converted to HSV and split into oil and water with k-means. Contours outline every oil patch, one convex hull wraps the whole spill, and a planner orders the patches so the boat seals the edge before it works inward, sizing the sorbent to each patch. In 60 tank trials, the same sorbents recovered 3.2 times as much oil when OCTOPAS placed them.
Hover the frame to read a pixel.
Running the pipeline…
- Trials
- 60, in four arms of 15
- Tank spill
- 80 mL motor oil on 18.9 L of water
- Image processing
- About 5 s per image, against a goal of under 15 s
- Stack
- Python, OpenCV, scikit-learn, Arduino Nano
Placement mattered more than material
The tank experiment crossed two deployment methods with two sorbents. The conventional method spreads the sorbent evenly by hand. Peat moss spread that way is the control, because that’s the combination used on real spills.
With peat moss, OCTOPAS raised recovery from 24.2% to 77.5%. With silica aerogel, from 29.3% to 92.8%. Changing only the sorbent, with conventional deployment, moved recovery by 5.1 points. The 217.9% headline is the average of the two gains: +216.3% for aerogel and +219.6% for peat moss.
Splitting the four group means as a 2 × 2 design, the deployment method accounts for 96.3% of the between-group sum of squares. The sorbent accounts for 3.0% and their interaction for 0.7%. The interaction is positive: aerogel’s lead over peat moss grows from 5.1 points to 15.3 when OCTOPAS places it. This breakdown is computed from the published means. It is not in the paper.
Tank protocol
| Silica aerogel | Peat moss | |
|---|---|---|
| OCTOPAS | An = 15 | Bn = 15 |
| Conventional | Cn = 15 | Dn = 15 · control |
- Fill18.9 L (5 gal) of water in a tank at least 3 × 2 ft.
- Spill80 mL (70 g) of motor oil, then 10 minutes for it to spread.
- ProcessPhotograph the spill, run it through the OCTOPAS app, record its analytics.
- Deploy10 g of sorbent. The boat follows the computed route in A and B, and the sorbent is spread evenly by hand in C and D.
- MeasureNet out the sorbent and weigh it three times. The trial’s value is the mean.
- ResetEmpty the tank and repeat. 15 trials per arm, 60 in total.
Statistics
| Source | SS | df | MS | F | p |
|---|---|---|---|---|---|
| Between | 25,970.29 | 3 | 8,656.76 | 1,478.74 | 1.1102 × 10−16 |
| Within | 327.83 | 56 | 5.85 | ||
| Total | 26,298.12 | 59 |
- The table is in grams of oil recovered out of 70 g, not percent. Converting the four means to grams and recomputing 15 × Σ(x̄i − x̄)² gives 25,971, against the published 25,970.3. The Tukey q values below reproduce the same way.
- η² = 0.988. The arm a trial belonged to explains 98.8% of the variance across all 60 trials. The pooled within-arm SD is 2.42 g (3.5 points).
- The reported p of 1.1102 × 10−16 equals 2−53, the smallest value you can get by computing 1 − CDF in double precision. The true p for F(3, 56) = 1,478.7 is far smaller.
| A | B | C | |
|---|---|---|---|
| B OCTOPAS · peat | 17.18 | ||
| C Conv. · aerogel | 71.09 | 53.91 | |
| D Conv. · peat | 76.81 | 59.63 | 5.72 |
Every pair separates at α = 0.01, where the critical q for four groups and 56 df is about 4.6. That includes the two conventional arms, at q = 5.72.
Planning the route
The sorbent-release logic from the paper: go to the patch closest to the boat first. Then keep moving to the nearest patch on the spill’s edge until the whole perimeter is covered, because oil at the edge is what keeps spreading. Only then work inward, nearest patch first, releasing sorbent according to each patch’s size.
In the paper, the amount for each patch depends on four things: how much oil it holds, which aerogel is loaded, whether that aerogel is being reused (reused aerogel absorbs less), and how viscous the oil is. The browser port above models only patch size, and counts a patch as on the edge when it comes within 6 px of the hull.
class oilSpillImage:def findOil(self, img, number=2):# Convert image to HSV and normalizeimg = cv.cvtColor(img, cv.COLOR_BGR2HSV) / 255h, w, c = img.shapeimg2 = img.reshape(h * w, c)# Quantize to N colors using K-Means clusteringkmeans_cluster = cluster.KMeans(n_clusters=number)kmeans_cluster.fit(img2)# Reshape image back to original dimensionsimg3 = cluster_centers[cluster_labels].reshape(h, w, c) * 255return img3.astype('uint8')def makePerimeters(self, real_img, reduced_img):# Create a single, unified hull around all detected spillsall_points = np.vstack(oil_contours)unified_hull = cv.convexHull(all_points)cv.drawContours(real_img, [unified_hull], -1, (165, 255, 0), 4)return real_img
App and boat
-
Image
Phone camera in the tank trials. In the deployment design, a drone photographs the spill.
-
OCTOPAS App
Python, OpenCV, scikit-learn. Segments the oil, outlines patches, plans the route, and shows the spill’s analytics. About 5 s per image.
-
Link
The design sends the route to the boat over Bluetooth. In the trials, the boat was driven along it by remote control.
-
OCTOPAS Boat
FDM-printed PLA hull carrying the sorbent, an Arduino Nano, two DC motors, and three AA cells.
The system is designed to be stowed on a tanker and launched as soon as a spill happens. Response time matters, since oil that spreads is harder to recover.
Three years of work
- Year 1
Tested ferrofluid, a candidate oil sorbent, for side effects on ocean acidification. It had no measurable effect.
- Year 2
Compared silica aerogel and ferrofluid against traditional cleanup. Both did better, and aerogel absorbed the most oil at equal amounts.
- Year 3
Moved from the material to the method. I built OCTOPAS and tested it against conventional deployment in 60 trials.
Limits and next steps
Every result here is at tank scale: 18.9 L of still water and 70 g of oil per trial. The app plans the route automatically, but in the trials the boat followed that route under remote control. Closed-loop autonomous navigation hasn’t been built yet.
Coordinated multi-boat paths, reloading the boat by drone, automatic return, and automatic sorbent recovery are proposed in the paper but not built. The next proposed scale is a 3 × 2 ft boat on a 15 × 30 ft simulated spill, estimated at $1,100–1,300, with aerogel as the largest single cost.
For a sense of the problem: tanker incidents alone released about 15,000 tonnes of oil in 2022, according to ITOPF ↗.