An Autonomous Oil Skimming Robot for Crude Oil Spills

About

This project was born from a problem- a problem that has plagued my country, Nigeria, for decades, a problem that has cost the livelihoods of tens of thousands of people living in the Niger Delta. This southern part of the country is considered to be one of the most polluted places on the planet, with decades of crude oil spills destroying the lives and well-being of the local communities. In the final year of our bachelor’s programme, my team partner and I decided to create a solution to this problem using robotics. The result was quite an ambitious senior design project: an autonomous oil-skimming robot.

Our device unites oleophilic material separation with self-navigating robotics on a stable, twin-hull catamaran chassis. The vehicle systematically traverses oil spill zones, collecting oil while autonomously avoiding obstacles. Once its onboard storage tank reaches capacity, the robot automatically returns to its launch point to discharge the recovered oil before resuming its route. This self-sustaining operational cycle enables prolonged, large-scale remediation without continuous human oversight, offering a cost-effective, efficient, and scalable solution to marine oil pollution globally.

Demonstrated Skills: Python, CAD, circuit design and prototyping, Manufacturing

A bit of background

To provide a bit of context for some of the design choices we made, we were a team of two students with a massive task, a short timeline, and entirely self-funded. Also, there was very little information from published works on how to actually take something like this from conception to fabrication. Therefore, we focused more on creating a proof-of-concept prototype that demonstrated the application of autonomous surface vehicles in crude oil spill remediation. For these reasons, a standard flight controller was used for navigation, while our efforts were focused on crafting a custom program to manage the robot’s entire operation. Our low budget also motivated the use of cheap, common, sometimes everyday materials for the construction of the robot’s chassis.

Specifications

  • Length: 1.5m

  • Breadth: 0.7m

  • Height: 0.53m

  • Max payload: 40kg

  • Max speed: 1.5m/s

  • Propulsion: Two underwater thruster brushless motors (10A, 4500kV)Two ZTW Shark ESCs (20A)

  • Power: Deep-Cycle Lead-Acid battery (12V, 18Ah)

  • Endurance: 45mins (per charge)

  • Onboard computer: Pixhawk 2.4.8 (32-bit), Raspberry Pi 4B (2GB SDRAM, 64-bitQuadcore Cortex-A72 (ARM v8) processor)

  • Sensors: GPS module (Holybro M8N), two ultrasonic sensors (HC-SR04), IMU (onboard Pixhawk)

  • Communication: Telemetry set (Sik radio, 433MHz, 500mW), RC Transmitter/Receiver (FLYSKY FS-I6X / X6B)

An autonomous oil skimming robot with various labeled components

Hardware and structure

The vehicle uses a two-hull catamaran configuration, selected to provide stability and buoyancy while carrying the propulsion, control electronics, and oil-collection system. Each hull consists of PVC piping, with the combined structure supporting a maximum payload of approximately 40 kg. To isolate sensitive electronics from splashing and waves, components sit on an elevated cast-iron frame 50cm above the waterline. Critical compute units are housed inside a detachable, waterproof modular enclosure that can be unclipped for transport.

The resulting platform has dimensions of 1.5m × 0.7m × 0.53m and is powered by a 12V, 18Ah deep-cycle lead-acid battery. Propulsion is provided by two 10A, 4500kV underwater brushless thrusters, each controlled through a 20A ESC. Differential thrust eliminates the need for a rudder mechanism, allowing the vehicle to generate both forward/reverse motion and steering through independent control of the two thrusters. The measured maximum forward speed was approximately 1.5m/s, with an operating endurance of approximately 45 minutes per charge.

Progress of the autonomous oil skimming robot construction, showing various stages of assembly and material types.

Constructing the frame

Electric motor control circuit diagram with components including motors, ESCs, control unit, relay, skimmer motor, battery, fuse, main switch, and wiring connections.

Wiring diagram of the overall system

Diagram of electronics setup with components including Raspberry Pi 4B, HC-SR04 ultrasonic sensors, telemetry unit, GPS module, receiver, power module, DC-DC buck converter, and wiring connections.

Wiring diagram of the control unit

Navigation and control

The robot employs a two-tier control architecture, with a Raspberry Pi 4B acting as the high-level companion computer and a Pixhawk 2.4.8 functioning as the low-level flight controller. The Raspberry Pi executes custom DroneKit-Python scripts and communicates with the Pixhawk via MAVLink over USB, enabling it to manage high-level mission logic, trigger the oil-skimming relay, monitor the oil collection tank, and issue mission-level commands.

The Pixhawk 2.4.8 runs ArduRover firmware and is responsible for the vehicle's low-level Guidance, Navigation, and Control (GNC). It interfaces with a Holybro M8N GPS and its internal IMU to obtain real-time position, orientation, and motion data. HC-SR04 ultrasonic sensors provide obstacle detection, with the BendyRuler algorithm dynamically adjusting the vehicle's path to avoid detected obstacles during autonomous navigation.

The system is supported by a multi-tiered communication architecture. A 433 MHz SiK telemetry link, with a range of approximately 300 m or more, provides bidirectional communication between the vehicle and the Mission Planner Ground Control Station. A 2.4 GHz Flysky FS-i6X RC link provides real-time manual control and override capability, while a Wi-Fi SSH connection enables direct access to the Raspberry Pi for code execution, configuration, and remote debugging.

Oil skimming mechanism

Oil recovery is performed using a mechanical belt skimmer mounted at the front of the vehicle. A rubber-based conveyor belt passes around two pulleys, with the lower pulley submerged below the hull. The belt is oleophilic and hydrophobic, allowing it to preferentially attract oil while repelling water.

As the belt rotates through the contaminated surface, oil adheres to its surface and is transported upward. A scraper positioned against the belt then removes the collected oil and directs it into a 16.8 L removable collection tank. The conveyor is driven by a 20 V DC brushed motor producing 3 Nm of torque at 60 rpm. The belt is 3 m long and 20 cm wide, and is inclined at approximately 60° to balance oil capture with drainage and minimise oil loss from the conveyor.

An ultrasonic sensor monitors the collection tank and detects when it reaches capacity. Once full, the Raspberry Pi commands the Pixhawk to stop the skimming process and initiate a return to the launch point. After the tank is emptied and reinstalled, the robot can resume its mission, creating a repeatable skimreturndischargeresume operating cycle.

Oil skimming system

How a mission works

  1. Grid generation: The operator defines a target spill zone on Mission Planner using GPS polygon coordinates, generating a grid of waypoints encompassing the spill.

  2. Navigation to waypoints & skimming: The robot navigates to each coordinate. Upon arrival, the Raspberry Pi signals the Pixhawk to trigger a relay, engaging the 20V DC motor to rotate the conveyor belt.

  3. Payload full / Fail-safe routine: When the ultrasonic sensor detects the 16.8 L tank is full, the Pi shuts off the skimmer motor, overrides the mission script, and commands a Return-to-Launch (RTL). The same fail-safe triggers if battery voltage drops below 60% or telemetry fails.

  4. Dock & Resume: Once offloaded by ground operators, the robot detects the empty tank and autonomously navigates back to the last saved waypoint to resume cleanup.

Operation flowchart

The robot in action

Due to our limited resources, we could not test the full capabilities of the robot, which would have required a large body of water with an oil spill (or at the very least a simulated one). Therefore, we validated our design by performing separate tests of the autonomous navigation and oil skimming capabilities in controlled environments. Autonomous navigation was tested in a swimming pool, while a combination of recycled motor oil and water was used to simulate an oil spill to validate the robot’s oil skimming mechanism.

Navigating autonomously

Oil skimming test

What I’d do differently

While I’m incredibly proud of the work we accomplished with limited resources, the current system has many limitations. For anyone who might wish to develop this project further, I have a few recommendations: Cameras could be used to implement machine-learning-based oil detection, using adaptive path planning based on the detected spill boundary; improved oleophilic belt materials could increase oil recovery efficiency; solar power could be implemented for greater endurance and range; and multi-robot/swarm coordination would greatly increase effectiveness in tackling large-scale spills.

Finally…

It’s been a few years since I finished this project, but I remain very attached to it because it started with nothing but an idea in my head: “What if we could create a device that cleans up oil spills autonomously?” It was my first real robotics project, and we had no idea what we were getting into or the immense challenges we would face. However, we prevailed, and this project has received awards at the 2024 SPE Student Technical Symposium and Exhibition Energy Challenge, as well as recognition at the 2024 SPE NAICE conference, for an exceptional display of innovation. It is also a published work, and you can read the full paper here.

La Coupe de France de Robotique